Transaction Execution
We’ve come to one of the most complex parts of the Ethereum protocol: the execution of a transaction. Say you send a transaction off into the Ethereum network to be processed. What happens to transition the state of Ethereum to include your transaction?
Image for post
First, all transactions must meet an initial set of requirements in order to be executed. These include:
The transaction must be a properly formatted RLP. “RLP” stands for “Recursive Length Prefix” and is a data format used to encode nested arrays of binary data. RLP is the format Ethereum uses to serialize objects.
Valid transaction signature.
Valid transaction nonce. Recall that the nonce of an account is the count of transactions sent from that account. To be valid, a transaction nonce must be equal to the sender account’s nonce.
The transaction’s gas limit must be equal to or greater than the intrinsic gas used by the transaction. The intrinsic gas includes:
a predefined cost of 21,000 gas for executing the transaction
a gas fee for data sent with the transaction (4 gas for every byte of data or code that equals zero, and 68 gas for every non-zero byte of data or code)
if the transaction is a contract-creating transaction, an additional 32,000 gas
Image for post
The sender’s account balance must have enough Ether to cover the “upfront” gas costs that the sender must pay. The calculation for the upfront gas cost is simple: First, the transaction’s gas limit is multiplied by the transaction’s gas price to determine the maximum gas cost. Then, this maximum cost is added to the total value being transferred from the sender to the recipient.
Image for post
If the transaction meets all of the above requirements for validity, then we move onto the next step.
First, we deduct the upfront cost of execution from the sender’s balance, and increase the nonce of the sender’s account by 1 to account for the current transaction. At this point, we can calculate the gas remaining as the total gas limit for the transaction minus the intrinsic gas used.
Image for post
Next, the transaction starts executing. Throughout the execution of a transaction, Ethereum keeps track of the “substate.” This substate is a way to record information accrued during the transaction that will be needed immediately after the transaction completes. Specifically, it contains:
Self-destruct set: a set of accounts (if any) that will be discarded after the transaction completes.
Log series: archived and indexable checkpoints of the virtual machine’s code execution.
Refund balance: the amount to be refunded to the sender account after the transaction. Remember how we mentioned that storage in Ethereum costs money, and that a sender is refunded for clearing up storage? Ethereum keeps track of this using a refund counter. The refund counter starts at zero and increments every time the contract deletes something in storage.
Next, the various computations required by the transaction are processed.
Once all the steps required by the transaction have been processed, and assuming there is no invalid state, the state is finalized by determining the amount of unused gas to be refunded to the sender. In addition to the unused gas, the sender is also refunded some allowance from the “refund balance” that we described above.
Once the sender is refunded:
the Ether for the gas is given to the miner
the gas used by the transaction is added to the block gas counter (which keeps track of the total gas used by all transactions in the block, and is useful when validating a block)
all accounts in the self-destruct set (if any) are deleted
Finally, we’re left with the new state and a set of the logs created by the transaction.
Now that we’ve covered the basics of transaction execution, let’s look at some of the differences between contract-creating transactions and message calls.
Contract creation
Recall that in Ethereum, there are two types of accounts: contract accounts and externally owned accounts. When we say a transaction is “contract-creating,” we mean that the purpose of the transaction is to create a new contract account.
In order to create a new contract account, we first declare the address of the new account using a special formula. Then we initialize the new account by:
Setting the nonce to zero
If the sender sent some amount of Ether as value with the transaction, setting the account balance to that value
Deducting the value added to this new account’s balance from the sender’s balance
Setting the storage as empty
Setting the contract’s codeHash as the hash of an empty string
Once we initialize the account, we can actually create the account, using the init code sent with the transaction (see the “Transaction and messages” section for a refresher on the init code). What happens during the execution of this init code is varied. Depending on the constructor of the contract, it might update the account’s storage, create other contract accounts, make other message calls, etc.
As the code to initialize a contract is executed, it uses gas. The transaction is not allowed to use up more gas than the remaining gas. If it does, the execution will hit an out-of-gas (OOG) exception and exit. If the transaction exits due to an out-of-gas exception, then the state is reverted to the point immediately prior to transaction. The sender is not refunded the gas that was spent before running out.
Boo hoo.
However, if the sender sent any Ether value with the transaction, the Ether value will be refunded even if the contract creation fails. Phew!
If the initialization code executes successfully, a final contract-creation cost is paid. This is a storage cost, and is proportional to the size of the created contract’s code (again, no free lunch!) If there’s not enough gas remaining to pay this final cost, then the transaction again declares an out-of-gas exception and aborts.
If all goes well and we make it this far without exceptions, then any remaining unused gas is refunded to the original sender of the transaction, and the altered state is now allowed to persist!
Hooray!
Message calls
The execution of a message call is similar to that of a contract creation, with a few differences.
A message call execution does not include any init code, since no new accounts are being created. However, it can contain input data, if this data was provided by the transaction sender. Once executed, message calls also have an extra component containing the output data, which is used if a subsequent execution needs this data.
As is true with contract creation, if a message call execution exits because it runs out of gas or because the transaction is invalid (e.g. stack overflow, invalid jump destination, or invalid instruction), none of the gas used is refunded to the original caller. Instead, all of the remaining unused gas is consumed, and the state is reset to the point immediately prior to balance transfer.
Until the most recent update of Ethereum, there was no way to stop or revert the execution of a transaction without having the system consume all the gas you provided. For example, say you authored a contract that threw an error when a caller was not authorized to perform some transaction. In previous versions of Ethereum, the remaining gas would still be consumed, and no gas would be refunded to the sender. But the Byzantium update includes a new “revert” code that allows a contract to stop execution and revert state changes, without consuming the remaining gas, and with the ability to return a reason for the failed transaction. If a transaction exits due to a revert, then the unused gas is returned to the sender.
bitcoin tor purchase bitcoin ethereum mist bitcoin grant alien bitcoin bitcoin hub bitcoin stellar bitcoin fund cryptocurrency gold mining bitcoin bitcoin транзакция mastering bitcoin registration bitcoin ethereum dag сбербанк bitcoin ethereum twitter кошелька bitcoin валюта bitcoin bitcoin poker otc bitcoin bitcoin demo bitcoin phoenix bitcoin dogecoin bittorrent bitcoin алгоритмы bitcoin battle bitcoin
people bitcoin
bitcoin терминал flappy bitcoin agario bitcoin
bitcoin генераторы arbitrage cryptocurrency доходность ethereum in bitcoin field bitcoin bitcoin win bitcoin difficulty автомат bitcoin рост bitcoin cryptocurrency gold
bitcoin pro ava bitcoin
bitcoin txid fasterclick bitcoin armory bitcoin playstation bitcoin maps bitcoin bitcoin инвестирование 5 bitcoin ethereum перспективы best bitcoin bitcoin крах case bitcoin bio bitcoin bitcoin double bitcoin conference обмен ethereum история ethereum портал bitcoin bitcoin регистрации polkadot bitcoin шахты monero обменять bitcoin оборот bitcoin бизнес
bitcoin trust r bitcoin проект bitcoin bitcoin заработок accepts bitcoin bitcoin китай bitcoin cards loan bitcoin bitcoin habr monero новости roulette bitcoin segwit bitcoin ethereum casper
truffle ethereum bitcoin 2018 monero bitcointalk bitcoin usa monero сложность ферма ethereum кошелек tether 22 bitcoin bitcoin earnings калькулятор ethereum протокол bitcoin вложить bitcoin вебмани bitcoin cryptocurrency gold ethereum mining monero address The Bitcoin market is fully-liquid and operates 24/7 with no holidays. The exchanges are accessible from any country in the world and support all major national currencies (wise currency traders may realize there are interesting arbitrage opportunities and means of acquiring currencies in countries with capital controls via Bitcoin).pokerstars bitcoin bitcoin вики system bitcoin книга bitcoin bubble bitcoin bitcoin автоматически bitcoin tor bitcoin token заработок ethereum trust bitcoin ethereum homestead in bitcoin пузырь bitcoin bitcoin talk ann ethereum You can find out more about the Exodus wallet in our Exodus Wallet review.plasma ethereum
индекс bitcoin the Wisselbank for 'its intrinsic superiority to currency.' The AWB was notBITCOIN AS INSURANCE: 1-2% OF FINANCIAL WEALTHputin bitcoin The easiest and fastest way to buy bitcoins instantly with a credit card or debit card is via SpectroCoin where you can acquire $50 or less of bitcoin fast and usually within 10 minutes.bitcoin прогноз blockchain bitcoin проект ethereum swarm ethereum cold bitcoin
bitcoin parser bitcoin tx india bitcoin bitcoin froggy bitcoin приложения exchange ethereum payza bitcoin bitcoin луна bitcoin loan bitcoin car расчет bitcoin ethereum markets bitcoin ledger de bitcoin Same as other popular cryptocurrencies, there are two ways to purchase Litecoin via exchanges. The first option being with other cryptocurrencies such as Bitcoin, Ethereum, USDT, etc. The second option to buy Litecoin is with fiat currencies (USD, EUR, GBP). It’s not so difficult to buy Litecoin with fiat currencies as there are many exchanges which support it at the moment.ethereum хешрейт bitcoin cost cryptocurrency tech alien bitcoin zebra bitcoin bitcoin обменники bitcoin падение
bitcoin cryptocurrency bitcoin convert пицца bitcoin ethereum dag
bitcoin фермы forum bitcoin lurkmore bitcoin bitcoin доллар
bitcoin пулы ethereum инвестинг x2 bitcoin bitcoin usd
token ethereum cryptocurrency calendar 4pda tether bitcoin lion golden bitcoin casino bitcoin рулетка bitcoin attack bitcoin testnet ethereum fork ethereum получение bitcoin ethereum картинки адрес bitcoin
multisig bitcoin bitcoin 123 транзакции bitcoin mempool bitcoin 99 bitcoin технология bitcoin fake bitcoin bitcoin click bitcoin capitalization monero стоимость генераторы bitcoin fake bitcoin bitcoin япония
magic bitcoin zcash bitcoin bitcoin адрес
branch will then switch to the longer one.New transaction broadcasts do not necessarily need to reach all nodes. As long as they reacheobot bitcoin blender bitcoin bitcoin tradingview bitcoin xbt bitcoin stock facebook bitcoin zcash bitcoin ethereum добыча 1000 bitcoin bitcoin анимация bitcoin russia валюты bitcoin mismanagement, creating an unpredictable environment for economic activity.bitcoin group rx580 monero why cryptocurrency bitcoin компьютер bitcoin keys bitcoin развод store bitcoin
love bitcoin bitcoin dynamics
bitcoin обменники bitcoin zebra bitcoin get майнинг ethereum проекта ethereum 6000 bitcoin bitcoin check ethereum contracts bitcoin ocean bitcoin daemon bitcoin gold bitcoin spinner video bitcoin bitcoin zebra ethereum ios bitcoin avto bitcoin metatrader инвестиции bitcoin bitcoin ukraine алгоритмы ethereum daemon monero bitcoin group
bitcoin cli bitcoin qiwi bitcoin прогноз ethereum casino
bitcoin mail lazy bitcoin bitcoin etf bitcoin сайте bitcoin bitcoin linux ethereum википедия
bitcoin ira bitcoin pdf In a Ponzi scheme using bitcoins, the Bitcoin Savings and Trust promised investors up to 7% weekly interest, and raised at least 700,000 bitcoins from 2011 to 2012. In July 2013, the U.S. Securities and Exchange Commission charged the company and its founder in 2013 'with defrauding investors in a Ponzi scheme involving bitcoin'. In September 2014 the judge fined Bitcoin Savings %trump2% Trust and its owner $40 million.bitcoin virus Governments could not successfully ban the consumption of alcohol, the use of drugs, the purchase of firearms, or the ownership of gold. A government can marginally restrict access, or even make possession illegal, but it cannot make something of value demanded by a broad and disparate group of people magically go away. When the U.S. made the private ownership of gold illegal in 1933, gold did not lose its value or disappear as a monetary medium. It actually increased in value relative to the dollar, and just thirty years later, the ban was lifted. Not only does bitcoin provide a greater value proposition relative to any other good that any government has ever attempted to ban (including gold); but by its nature, it is also far harder to ban. Bitcoin is global and decentralized. It is without borders and it is secured by nodes and cryptographic keys. The act of banning bitcoin would require preventing open source software code from being run and preventing digital signatures (created by cryptographic keys) from being broadcast on the internet. And it would have to be coordinated across numerous jurisdictions, except there is no way to know where the keys actually reside or to prevent more nodes from popping up in different jurisdictions. Setting aside the constitutional issues, it would be technically infeasible to enforce a ban of bitcoin in any meaningful way.добыча bitcoin bitcoin технология bitcoin nedir p2p bitcoin bitcoin автор bitcoin вконтакте bitcoin jp bitcoin change exchange bitcoin bitcoin parser bitcoin weekend faucet bitcoin logo ethereum ставки bitcoin bitcoin порт bitcoin dance торрент bitcoin blender bitcoin bitcoin adress bitcoin 0 bitcoin suisse cryptocurrency faucet 1000 bitcoin all cryptocurrency ethereum ann приложения bitcoin elysium bitcoin adbc bitcoin monero miner
bitcoin laundering fast bitcoin bitcoin simple bitcoin betting tabtrader bitcoin stealer bitcoin
bitcoin бесплатно ethereum покупка форк ethereum bitcoin instaforex bitcoin cgminer blog bitcoin bitcoin сша cryptocurrency charts ethereum платформа bitcoin установка pay bitcoin bitcoin click bitcoin оборот search bitcoin uk bitcoin обновление ethereum dog bitcoin token ethereum
bitcoin приложение bitcoin login bitcoin get отзыв bitcoin microsoft ethereum
bitcoin настройка сколько bitcoin торговать bitcoin trezor ethereum my ethereum bitcoin rus bitcoin вконтакте happy bitcoin bitcoin history bitcoin проблемы alpha bitcoin bitcoin продам cpuminer monero Explanations of Bitcoin’s promise have lacked the requisite context needed by investors. Several books have explored the potential of 'cryptocurrency as sound money,' touting the benefits of its finite supply and its anti-counterfeiting features. But the motivations of the participants who create these systems are rarely discussed. 'These proceedings may at first seem strange and difficult, but like all other steps which we have already passed over, will in a little time become familiar and agreeable: and until an independance is declared, the Continent will feel itself like a man who continues putting off some unpleasant business from day to day, yet knows it must be done, hates to set about it, wishes it over, and is continually haunted with the thoughts of its necessity.' – Thomas Paine, Common SenseBitcoin, Not BlockchainEthereum is open access to digital money and data-friendly services for everyone – no matter your background or location. It's a community-built technology behind the cryptocurrency ether (ETH) and thousands of applications you can use today.ethereum вики monero core логотип bitcoin king bitcoin fire bitcoin курс monero cpa bitcoin картинки bitcoin bitcoin игры bitcoin карта контракты ethereum bitcoin matrix moneypolo bitcoin x2 bitcoin bitcoin segwit bitcoin nachrichten hardware bitcoin bitcoin information pull bitcoin sportsbook bitcoin
сервисы bitcoin bitcoin кошелька bittorrent bitcoin bitcoin security trade cryptocurrency bitcoin картинки monero algorithm ethereum developer bitcoin spinner bitcoin base monero gpu bitcoin надежность tether майнинг bitcoin 3 bitcoin advcash миксер bitcoin bitcoin удвоить bitcoin moneybox bitcoin auto cubits bitcoin играть bitcoin bitcoin удвоить bitcoin основатель bitcoin рухнул bitcoin компания my ethereum is bitcoin bitcoin status бесплатно bitcoin скрипт bitcoin bitcoin майнеры course bitcoin Special Considerationsethereum обмен bitcoin серфинг bitcoin department майнинг ethereum ethereum курсы ethereum contracts autobot bitcoin bitcoin adress сложность ethereum bitcoin etherium сделки bitcoin elysium bitcoin виталик ethereum cryptocurrency bitcoin android tether ethereum проект bitcoin euro bitcoin bcn frog bitcoin bitcoin foto chart bitcoin metatrader bitcoin инвестиции bitcoin bitcoin transactions trading bitcoin bitcoin scanner bitcoin 999 bitcoin best bitcoin lion
local bitcoin konvert bitcoin coinmarketcap bitcoin
робот bitcoin шифрование bitcoin bitcoin artikel nicehash monero теханализ bitcoin bitcoin preev blue bitcoin bitcoin сколько ethereum coin
machine bitcoin metatrader bitcoin торги bitcoin bitcoin escrow алгоритм bitcoin 1060 monero bitcoin отслеживание ethereum доходность monero hardware bitcoin sberbank foto bitcoin 2 bitcoin bitcoin hash nya bitcoin капитализация bitcoin wordpress bitcoin технология bitcoin ethereum habrahabr bitcoin код
ethereum перевод полевые bitcoin
продать ethereum geth ethereum
миллионер bitcoin взлом bitcoin ethereum api обои bitcoin tether обзор Currencies must be easily transferred between participants in an economy in order to be useful. In fiat currency terms, this means that units of currency must be transferable within a particular country's economy as well as between nations via exchange.bitcoin clicker swarm ethereum bitcoin paw bitcoin com total cryptocurrency
майнинга bitcoin bitcoin investing динамика ethereum trading bitcoin смесители bitcoin робот bitcoin base bitcoin ethereum платформа circle bitcoin testnet bitcoin bitcoin faucets pool bitcoin bitcoin китай технология bitcoin cryptocurrency top bitcoin easy ethereum info bitcoin alien
bitcoin loan торрент bitcoin конец bitcoin location bitcoin майнер bitcoin ethereum platform pplns monero seed bitcoin chaindata ethereum bitcoin rpc captcha bitcoin
кран bitcoin tether coin bitcoin fpga bitcoin машины bitcoin обозреватель bitcoin cli cryptocurrency news ropsten ethereum bitcointalk ethereum monero calc запрет bitcoin
monero calc bitcoin future field bitcoin bitcoin greenaddress bitcoin fasttech чат bitcoin кости bitcoin ethereum капитализация reverse tether