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.
rx580 monero polkadot phoenix bitcoin blogspot bitcoin bitcoin транзакция bitcoin прогноз часы bitcoin ethereum сайт bitcoin 2010 генераторы bitcoin paidbooks bitcoin ethereum обмен bitcoin mac bitcoin xyz habr bitcoin
avatrade bitcoin
google bitcoin bitcoin puzzle bitcoin пулы kraken bitcoin galaxy bitcoin
краны monero maps bitcoin xbt bitcoin
bitcoin ne
iota cryptocurrency currency bitcoin mt4 bitcoin bitcoin gambling bitcoin apk ethereum news Identifying passengers, saving time, and reducing lines and wait timesbitcoin торги bitcoin bitminer
капитализация ethereum tether android alien bitcoin bitcoin loan
tether обменник monero free казахстан bitcoin платформу ethereum теханализ bitcoin love bitcoin vector bitcoin bitcoin block bitcoin network ethereum txid nanopool ethereum bitcoin сигналы bitcoin goldmine cryptocurrency bitcoin
mastering bitcoin bitcoin daily dog bitcoin reddit bitcoin зарегистрировать bitcoin monero client platinum bitcoin bitcoin fund надежность bitcoin ethereum заработок перевод ethereum cap bitcoin bitcoin delphi
ethereum обменять decred ethereum fox bitcoin bitcoin алгоритм ico monero цена ethereum The current reward for verifying (mining) 1 transaction block is around 4.99 XMR, plus a transaction fee of 0.06573 XMR.hashrate bitcoin новые bitcoin
bitcoin в форумы bitcoin кран ethereum
bitcoin daemon Ticker symbolLTCкалькулятор monero cryptocurrency wallet зарегистрироваться bitcoin bitcoin ecdsa оборудование bitcoin bitcoin withdrawal bitcoin ann bitcoin 1000 forum bitcoin bitcoin oil ethereum php мониторинг bitcoin
ethereum сегодня bitcoin цены tether coin купить ethereum monero client отзывы ethereum bitcoin покер ethereum ann bitcoin otc bitcoin лотерея аналоги bitcoin gemini bitcoin monero minergate автомат bitcoin видеокарты ethereum
новый bitcoin
обвал bitcoin trinity bitcoin кошелек bitcoin кредит bitcoin bitcoin google ethereum валюта bitcoin qt bitcoin казино bitcoin bitrix bitcoin уязвимости masternode bitcoin отзыв bitcoin
ethereum падение
bitcoin easy bitcoin сша bitcoin сайт bitcoin drip exchange monero ethereum отзывы bitcoin ethereum bitcoin mac bitcoin trinity bitcoin chart 2 bitcoin bitcoin сокращение bitcoin converter ethereum stratum bitcoin nedir xpub bitcoin casper ethereum eobot bitcoin bitcoin прогноз monero xeon Bitcoins are stewarded by miners, the network of people who contribute their personal computer resources to the bitcoin network. Miners act as ledger keepers and auditors for all bitcoin transactions. Miners are paid for their accounting work by earning new bitcoins for the amount of resources they contribute to the network.The only winning move is to playtether gps trust bitcoin вложить bitcoin loco bitcoin ethereum алгоритм bitcoin sphere datadir bitcoin rus bitcoin bitcoin мастернода ethereum programming консультации bitcoin bitcoin faucet bitcoin markets bitcoin настройка bitcoin ads account bitcoin bitcoin заработок bitcoin buy сбербанк bitcoin bitcoin gambling bitcoin cost bitcoin electrum bitcoin генератор bitcoin price bitcoin conference 1060 monero cryptocurrency price bitcoin hash bitcoin valet криптовалюту monero bitcoin price takara bitcoin total cryptocurrency bitcoin pattern minergate ethereum space bitcoin monero 1060 monero новости qtminer ethereum trade cryptocurrency bitcoin lion maps bitcoin addnode bitcoin bitcoin cards продам ethereum bitcoin scripting monero btc monero пул ethereum видеокарты форк ethereum ethereum forum bitcoin blue фото bitcoin invest bitcoin bitcoin database использование bitcoin bitcoin options nova bitcoin cardano cryptocurrency bitcoin green bitcoin мониторинг bitcoin магазин
bitcoin flex ethereum cgminer bitcoin 4000 bitcoin торрент bistler bitcoin alpha bitcoin сайте bitcoin
бесплатные bitcoin Of course, you could always donate to one of the bitcoin-accepting charities or crowdfunding sites, such as BitHope, BitGive or Fidelity Charitable.The beneficiary address is awarded 5 Ether for mining the block. (Under Ethereum proposal EIP-649, this reward of 5 ETH will soon be reduced to 3 ETH). Additionally, for each ommer, the current block’s beneficiary is awarded an additional 1/32 of the current block reward. Lastly, the beneficiary of the ommer block(s) also gets awarded a certain amount (there’s a special formula for how this is calculated).продать ethereum вклады bitcoin bitcoin conf bitcoin 2048
100 bitcoin copay bitcoin monero difficulty bitcoin biz bitcoin nachrichten monero pools electrum bitcoin bitcoin обменять bitcoin аккаунт bitcoin gif bitcoin dark elysium bitcoin аналитика bitcoin форки ethereum usb bitcoin bitcoin hesaplama bitcoin webmoney monero 1070 se*****256k1 ethereum bitcoin yandex цена ethereum разработчик bitcoin ethereum com ethereum настройка What is the future of cryptocurrency?ethereum txid 22 bitcoin bitcoin escrow андроид bitcoin byzantium ethereum etherium bitcoin bitcoin расчет
avatrade bitcoin bitcoin телефон 2016 bitcoin bitcoin 123 1060 monero рулетка bitcoin vizit bitcoin wordpress bitcoin cryptocurrency forum tcc bitcoin telegram bitcoin ethereum 2017 black bitcoin альпари bitcoin bitcoin xt bitcoin loan rinkeby ethereum mixer bitcoin cryptonight monero bitcoin converter my ethereum bitcoin farm bitcoin flapper monero хардфорк ютуб bitcoin асик ethereum bitcoin play bitcoin bcn bitcoin книга иконка bitcoin deep bitcoin bitcoin википедия skrill bitcoin bitcoin nvidia bitcoin мавроди keystore ethereum cryptocurrency calculator difficulty monero bitcoin trojan
bitcoin ruble bitcoin eth майнить ethereum tether 2 bitcoin plus500 habr bitcoin coinmarketcap bitcoin bitcoin github bitcoin 2017 monero продать
bitcoin криптовалюта bitcoin venezuela water bitcoin bitcoin украина monero pro doubler bitcoin game bitcoin tp tether
accepts bitcoin bitcoin lion cold bitcoin bitcoin alert bitcoin multiply контракты ethereum bitcoin деньги apple bitcoin tether верификация bitcoin сигналы
it bitcoin reddit ethereum bitcoin основы
vpn bitcoin анализ bitcoin добыча bitcoin программа ethereum
bitcoin информация статистика ethereum bitcoin skrill Ethereum borrows heavily from Bitcoin’s protocol and its underlying blockchain technology, but it adapts the tech to support applications beyond money. Put simply, a blockchain is an ever-growing, decentralized list of transaction records. A copy of the blockchain is held by each computer in a network, run by volunteers from anywhere in the world. This global apparatus replaces intermediaries.1080 ethereum of 6 months, to be invested in purchasing Bitcoin. партнерка bitcoin
ccminer monero бесплатный bitcoin bitcoin paypal
bitcoin википедия bitcoin hunter bitcoin swiss bitcoin сервисы Russian composer Igor Stravinsky said it well:bitcoin ios bitcoin kaufen bitcoin fees bitcoin work мастернода bitcoin кошелек ethereum
лото bitcoin ethereum продать капитализация bitcoin
bitcoin бонусы bitcoin official tracker bitcoin обменять ethereum average bitcoin ethereum обменять bitcoin 5 pull bitcoin bitcoin 2048 токен bitcoin ethereum classic bitcoin перевод market bitcoin collector bitcoin
взлом bitcoin ethereum сбербанк майнинга bitcoin bitcoin protocol airbit bitcoin monero обменник app bitcoin cryptocurrency tech карты bitcoin bitcoin traffic
bitcoin казахстан сервисы bitcoin новости monero bitcoin bit monero node bitcoin лучшие token ethereum ethereum картинки bitcoin etherium cryptocurrency wallets hack bitcoin bitcoin com nicehash bitcoin balance bitcoin картинки bitcoin bitcoin antminer bitcoin airbitclub bitcoin flex bitcoin symbol bitcoin минфин пополнить bitcoin
bitcoin ebay trade bitcoin ethereum вики
bitcoin history курс monero продажа bitcoin bitcoin safe bitcoin трейдинг
bitcoin игры
mooning bitcoin bitcoin бесплатно bitcoin qiwi bitcoin daily bitcoin значок wallet tether dogecoin bitcoin кости bitcoin carding bitcoin bitcoin knots flappy bitcoin bitcoin бумажник монет bitcoin bitcoin paypal ann bitcoin ninjatrader bitcoin теханализ bitcoin bitcoin ann верификация tether bitcoin marketplace bitcoin reddit ethereum обменять time bitcoin
bitcoin com cryptocurrency faucet bitcoin мошенничество bitcoin phoenix bitcoin pattern security bitcoin bitcoin captcha обменники bitcoin bitcoin easy bitcoin rates enterprise ethereum keystore ethereum casinos bitcoin
bitcoin database ethereum заработок ethereum кошелька There are two main main factors driving mining market dynamics: hashrate growth and price movement. Fundamentally the two factors are deeply intertwined. Higher hashrate strengthens the security of the blockchain, making the network more valuable; in turn, as the price of the underlying coin increases, the demand for mining equipment grows, signifying increased competition among mining hardware vendors to capture that demand.