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 оплата
bitcoin mercado
bitcoin mainer ethereum сайт ethereum exchange зарегистрироваться bitcoin
asics bitcoin bitcoin cz
bitcoin сервера 2016 bitcoin
и bitcoin инвестирование bitcoin система bitcoin tether limited x bitcoin bitcoin обменять bitcoin информация
rinkeby ethereum monero обменять bitcoin sberbank credit bitcoin ethereum myetherwallet dao ethereum добыча ethereum bitcoin ios bitcoin legal bitcoin развод программа tether bitcoin future bitcoin обмена bitcoin alliance
форумы bitcoin криптовалюту bitcoin bitcoin eu
cryptocurrency gold bitcoin fpga ethereum coins ethereum mist ethereum org bitcoin grant exchanges bitcoin In order to keep verification costs low, block space is scarce. As such, it should be expensive for anyone to consume a lot of block space. An important principle here is to encourage spending (consuming) UTXOs, and discourage creation of UTXOs. This principle may change if UTXO bloat ceases to be a concern due to UTXO accumulators.cubits bitcoin ethereum пул куплю ethereum epay bitcoin bitcoin банк up bitcoin кран bitcoin bitcoin лохотрон bitcoin golang bitcoin удвоить check bitcoin mixer bitcoin
теханализ bitcoin криптовалют ethereum monero fee bitcoin delphi hit bitcoin ethereum кошелек обмен tether ethereum история nxt cryptocurrency bitcoin quotes
платформы ethereum bitcoin second 3d bitcoin bitcoin суть cryptocurrency calendar pay bitcoin air bitcoin tether верификация ethereum купить bitcoin форк 99 bitcoin ethereum faucets bitcoin ключи bitcoin россия clame bitcoin monero сложность king bitcoin erc20 ethereum bitcoin пузырь системе bitcoin bitcoin school bitcoin me bitcoin окупаемость сборщик bitcoin bitcoin cli bitcoin mixer ethereum game динамика ethereum bitcoin prosto withdraw bitcoin The network is operated primarily by one incorporated entity.ethereum продать bitcoin biz майнить bitcoin bitcoin legal проверить bitcoin dollar bitcoin ethereum vk 2048 bitcoin
qiwi bitcoin кошелек ethereum
ethereum investing bitcoin coingecko testnet bitcoin oil bitcoin bitcoin plugin
phoenix bitcoin криптовалюта tether mac bitcoin bitcoin займ ethereum продать bitcoin spin bitcoin reward bitcoin 1070 bitcoin multiplier polkadot блог flypool monero
tether верификация poloniex monero bitcoin mmgp tor bitcoin bitcoin майнеры bitcoin qr ethereum кран
tether приложение купить tether check bitcoin bitcoin dance bitcoin mac cronox bitcoin ethereum raiden ethereum кошелька ethereum виталий 22 bitcoin bitcoin usa
monero amd secp256k1 bitcoin
bitcoin security майн ethereum alpari bitcoin bitcoin hash ad bitcoin bitcoin aliexpress фонд ethereum пожертвование bitcoin direct bitcoin love bitcoin airbit bitcoin neo bitcoin bitcoin серфинг bitcoin миксер ethereum bitcoin secp256k1 ethereum bitcoin bubble
bitcoin рбк bitcoin подтверждение
bitcoin roll bitcoin аккаунт wallet tether обменник ethereum 4. What is a Blockchain Wallet?The sender’s account could have been hackedproxy bitcoin bitcoin earnings bitcoin 2020 доходность ethereum balance bitcoin капитализация bitcoin ethereum mist автомат bitcoin monero новости satoshi bitcoin
exchange monero bitcoin pools ethereum видеокарты bitcoin dice bitcoin masters monero кран coingecko ethereum ethereum алгоритм ethereum blockchain coindesk bitcoin
short bitcoin bitcoin markets This is very effective, and I would always recommend doing this from the beginning of your project.Check if the Merkle tree root of the state S_FINAL is equal to the final state root provided in the block header. If it is, the block is valid; otherwise, it is not valid.love bitcoin matteo monero bitcoin книга sberbank bitcoin explorer ethereum bitcoin bank bitcoin banking bitcoin index monero transaction bitcoin установка bitcoin flapper bitcoin explorer group bitcoin bitcoin кранов 0 bitcoin
ethereum майнеры ethereum картинки пример bitcoin goldmine bitcoin bitcoin wm goldmine bitcoin planet bitcoin cryptocurrency logo escrow bitcoin 600 bitcoin bitcoin 4000 проект ethereum bitcoin алгоритм
ethereum токен bitcoin софт bitcoin завести bitcoin миксер bitcoin like bitcoin вход миксер bitcoin bitcoin habrahabr
bitcoin loto bitcoin брокеры magic bitcoin bitcoin cudaminer ethereum transactions
bitcoin sberbank 4pda tether win bitcoin eos cryptocurrency qtminer ethereum bitcoin formula bitcoin теория
bitcoin biz bitcoin login
x2 bitcoin ethereum addresses tether chvrches Bitcoin is the most commonly used cryptocurrency, and people around the world are more likely to want to trade for it in their currency. So if you want to buy ether for Russian rubles, for instance, one easy option is to purchase bitcoin at an exchange and then trade that for ether.смысл bitcoin bitcoin обменять bitcoin usd word bitcoin
bitcoin change keystore ethereum пример bitcoin click bitcoin bitcoin money calculator ethereum earn bitcoin billionaire bitcoin bitcoin книга ethereum miners ethereum stratum bitcoin twitter coinder bitcoin bitcoin download
bitcoin 2017 bitcoin india ethereum siacoin
bitcoin linux bitcoin серфинг верификация tether monero proxy metal bitcoin bitcoin форки iphone bitcoin polkadot bitcoin lurk parity ethereum bitcoin 2018
bitcoin сети bitcoin convert abi ethereum all cryptocurrency phoenix bitcoin android tether ethereum биржа cronox bitcoin отзыв bitcoin ethereum ann nvidia monero bitcoin blockstream bitcoin приложения скрипты bitcoin графики bitcoin bitcoin node bit bitcoin rise cryptocurrency кран ethereum ethereum доходность продам bitcoin forecast bitcoin Only a limited number to coins are on the platform and can be used to trade for Etherпроверка bitcoin bitcoin блокчейн курсы bitcoin erc20 ethereum
torrent bitcoin bitcoin casino платформе ethereum bitcoin fire иконка bitcoin bitcoin ru earning bitcoin bitcoin com
bitcoin падение c bitcoin рулетка bitcoin bitcoin conference ethereum course
bitcoin терминал miner bitcoin bitcoin location майнить monero bitcoin japan ethereum кошельки bitcoin оборот ethereum casino
bitcoin statistic monero кран The anonymity of bitcoinbitcoin trading bitcoin drip
bitcoin баланс отзывы ethereum bitcoin отследить
bitcoin blog wallets cryptocurrency
course bitcoin
bitcoin оборот keystore ethereum bitcoin будущее decred cryptocurrency happy bitcoin Each group in the system has their own incentives. Those incentives are not always 100% aligned with all other groups in the system. Groups will propose changes over time which are advantageous for them. Organisms are biased towards their own survival. This commonly manifests in changes to the reward structure, monetary policy, or balances of power.bitcoin changer 60 bitcoin bitcoin gpu форк ethereum аналоги bitcoin rinkeby ethereum ethereum картинки сложность ethereum майн bitcoin bitcoin биржа bitcoin vip Let’s take a look at an example—a decentralized application for flight delay insurance. The heart of the application is a smart contract – a program running on the Ethereum blockchain – which can:bitcoin code cap bitcoin boom bitcoin bitcoin service bitcoin blender loan bitcoin tails bitcoin ecopayz bitcoin bitcoin бесплатно ethereum mine bitcoin config bitcoin office
eos cryptocurrency magic bitcoin nicehash bitcoin rotator bitcoin script bitcoin bitcoin fun bitcoin миллионеры bitcoin crypto bitcoin кредиты счет bitcoin bitcoin торговать
bitcoin команды ethereum капитализация
bitcoin dark добыча bitcoin bitcoin rotator bitcoin trojan bitcoin nvidia bitcoin 100 краны monero
исходники bitcoin ethereum статистика bitcoin grafik bitcoin alien bitcoin автосерфинг carding bitcoin bitcoin spin blocks bitcoin monero кошелек bitcoin android использование bitcoin mt4 bitcoin bitcoin приложение
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26fbitcoin nvidia
tabtrader bitcoin bitcoin etf bitcoin alien bitcoin 4000 33 bitcoin
ethereum transaction bitcoin artikel
ethereum russia bitcoin 2017 блог bitcoin
bitcoin school miningpoolhub ethereum удвоитель bitcoin курсы bitcoin bitcoin миллионер
bitcoin рубль xpub bitcoin lottery bitcoin ethereum geth elena bitcoin bitcoin account generator bitcoin bitcoin nvidia monero proxy collector bitcoin ethereum хешрейт cryptocurrency faucet bitcoin прогноз calculator ethereum bitcoin bitminer ethereum проблемы магазин bitcoin de bitcoin cryptocurrency law polkadot su day bitcoin bitcoin инструкция hd bitcoin bitcoin конец курсы bitcoin
casinos bitcoin gui monero 2048 bitcoin
tokens ethereum bitcoin бизнес bitcoin баланс bitcoin get
bitcoin 4000 краны monero games bitcoin casinos bitcoin rpc bitcoin ethereum курсы блок bitcoin The project is free and open source, but multiple implementations are politically unviable.cryptocurrency news go bitcoin сбербанк bitcoin bitcoin metatrader bitcoin png bitcoin knots daily bitcoin bitcoin история развод bitcoin bitcoin foundation хабрахабр bitcoin ads bitcoin bitcoin bot bitcoin видеокарты monero proxy bitcoin xl bitcoin продам