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.
Decipher the global craze surrounding Bitcoin and Cryptocurrencies with the Blockchain Certification Course! Click here for the course preview!bitcoin poloniex
monero coin
video bitcoin bitcoin cny форк bitcoin panda bitcoin bitcoin удвоить bitcoin аккаунт bitcoin service
платформ ethereum куплю ethereum monero minergate bitcoin wm bitcoin safe
bitcoin get bitcoin коллектор краны monero cryptocurrency chart nya bitcoin mindgate bitcoin bitcoin london скачать bitcoin
flash bitcoin кошелька ethereum testnet bitcoin joker bitcoin by bitcoin token ethereum bitcoin видеокарта bitcoin sberbank
tether bootstrap bitcoin информация cryptocurrency перевод bitcoin block testnet bitcoin segwit bitcoin
обменники bitcoin
миксер bitcoin bitcoin lucky monero proxy ethereum gold bip bitcoin отдам bitcoin bitcoin упал planet bitcoin bitcoin россия теханализ bitcoin
bitcoin instagram
bitcoin fund amazon bitcoin bitcoin film
fpga ethereum часы bitcoin monero xmr bitcoin 2018 bitcoin metatrader
разработчик bitcoin
fields bitcoin bitcoin bbc space bitcoin mempool bitcoin flash bitcoin вложения bitcoin bitcoin phoenix monero dwarfpool bitcoin location bitcoin legal alliance bitcoin nicehash bitcoin
etf bitcoin my ethereum bitcoin markets ethereum claymore value bitcoin bitcoin видеокарты bitcoin pay bitcoin generate кости bitcoin bitcoin games фарм bitcoin neo bitcoin расшифровка bitcoin monero биржа бесплатный bitcoin bitcoin poloniex bitcoin сбербанк bitcoin бесплатные cryptocurrency top bitcoin joker Bitcoin is accessible through some publicly traded funds, like the Grayscale Bitcoin Trust (GBTC), of which I am long. However, funds like these trade at a premium to NAV, and rely on counterparties. A fund like that can be useful as part of a diversified portfolio in an IRA, due to tax advantages, but outside of that isn’t the best way to establish a core position.bitcoin de bitcoin virus x2 bitcoin депозит bitcoin проекта ethereum bitcoin пирамиды продам ethereum home bitcoin jax bitcoin
bitcoin mail bitcoin data bitcoin серфинг bitcoin акции
bitcoin data bitcoin форки ethereum pow 33 bitcoin air bitcoin bitcoin ubuntu bitcoin qiwi json bitcoin
get bitcoin freeman bitcoin bitcoin bitminer blockchain ethereum bitcoin symbol bitcoin pay bitcoin center
monero обмен bitcoin windows reddit cryptocurrency android tether 999 bitcoin bitcoin roulette bitcoin usd дешевеет bitcoin Cryptocurrencies have become increasingly popular over the past several years - as of 2018, there were more than 1,600 of them! And the number is constantly growing. With that has come to an increase in demand for developers of the blockchain (the underlying technology of cryptocurrencies such as bitcoin). The salaries blockchain developers earn show how much they are valued: According to Indeed, the average salary of a full-stack developer is more than $112,000. There’s even a dedicated website for cryptocurrency jobs.monero майнить bitcoin 4000 bitcoin swiss ethereum вывод
bitcoin journal шифрование bitcoin
bitcoin dance хардфорк bitcoin bitcoin заработок
mine ethereum
бот bitcoin
кран bitcoin
казино ethereum bitcoin hashrate bitcoin simple ethereum токен ethereum акции
кошелек tether
сложность ethereum bitcoin статистика create bitcoin ethereum аналитика казино ethereum cryptocurrency ico nanopool ethereum 10000 bitcoin bitcoin js карты bitcoin bitcoin multisig bitcoin okpay
bitcoin rate bitcoin explorer bitcoin adress bitcoin перевод андроид bitcoin agario bitcoin
bitcoin падает скачать bitcoin clockworkmod tether
bitcoin bank проекты bitcoin доходность ethereum цена ethereum ethereum casper bitcoin abc connect bitcoin bitcoin daemon форк ethereum bitcoin symbol plus bitcoin
бесплатные bitcoin Aristotle (with later refinements by Ptolemy) would interpret this finite universe philosophically and, in doing so, form the ideological foundation for God’s existence and The Church’s power on Earth. In the Aristotelean conception of the universe, the force moving the stars, which drove the motion of all elements below, was the prime mover: God. This cascade of cosmic force from on high downward into the movements of mankind was considered the officially accepted interpretation of divine will. As Christianity swept through the West, The Church relied upon the explanatory power of this Aristotelean philosophy as proof of God’s existence in their proselytizing efforts. Objecting to the Aristotelean doctrine was soon considered an objection to the existence of God and the power of The Church.Nobody ever spent coins without knowing their private key.There are still some benefits I haven’t talked about too, though, so let’s start with the advantages and then I’ll look at the disadvantages. Then, you will fully know and be an expert on the question - how does Bitcoin work?bitcoin hd In 1602 merchants from the Netherlands merged together six small companies and pooled 64 tonnes of gold to form the Dutch East India Companyico bitcoin прогнозы bitcoin ethereum токен bitcoin kazanma ico monero bitcoin crash bitcoin компьютер bitcoin kurs TWITTERbitcoin github login bitcoin email bitcoin ethereum pow bitcoin life bitcoin laundering
bitcoin видеокарта bitcoin деньги bitcoin lite hacking bitcoin bitcoin converter лотереи bitcoin
plus500 bitcoin bitcoin покупка bitcoin стратегия курс bitcoin se*****256k1 bitcoin ethereum pools рубли bitcoin bitcoin abc bitcoin динамика bitcoin btc
настройка bitcoin bitcoin хешрейт
locals bitcoin зарабатывать bitcoin bitcoin hd
fx bitcoin mail bitcoin bitcoin maker
zcash bitcoin 1080 ethereum серфинг bitcoin ethereum miner
bitcoin sell ethereum цена bitcoin мавроди bitcoin обмен bitcoin services bitcoin steam bitcoin bloomberg nicehash monero bitcoin часы bitcoinwisdom ethereum ethereum forum bitcoin grant local bitcoin bitcoin отследить tether usdt claymore monero bitcoin today Is Ethereum a worthwhile short-term investment? Yes, it is, if you can get the timing right.bitcoin s bitcoin testnet ethereum stratum qiwi bitcoin bitcoin virus bitcoin sberbank разработчик bitcoin блокчейна ethereum
half bitcoin bitcoin торговля bitcoin amazon bitcoin skrill bitcoin перспектива bitcoin hyip bitcoin registration video bitcoin
bitcoin пицца mine ethereum обмен tether gift bitcoin win bitcoin bitcoin автоматический bitcoin mt4 monero client bitcoin dance китай bitcoin token ethereum bitcoin аккаунт bitcoin talk ethereum info simple bitcoin bitcoin лохотрон bitcoin биткоин bitcoin block airbitclub bitcoin
ethereum сегодня bitcoin agario q bitcoin bitcoin ммвб алгоритм bitcoin bitcoin buying новости ethereum purse bitcoin bitcoin bitminer monero wallet кошельки bitcoin
bitcoin poloniex bitcoin конвертер bitcoin bcn 33 bitcoin clockworkmod tether bitcoin sphere вики bitcoin bitcoin algorithm puzzle bitcoin логотип bitcoin bitcoin транзакция bitcoin greenaddress ethereum форум top cryptocurrency cryptocurrency mining payeer bitcoin auto bitcoin bitcoin rotators price bitcoin bitcoin инвестирование difficulty ethereum carding bitcoin bitcoin окупаемость kraken bitcoin card bitcoin ethereum homestead ethereum pow monero proxy bitcoin poker bitcoin оборот adc bitcoin exchange ethereum information bitcoin frontier ethereum bitcoin аналоги bitcoin video график monero master bitcoin развод bitcoin tracker bitcoin
xronos cryptocurrency fpga bitcoin monero client
майнеры ethereum reddit cryptocurrency bitcoin maps tether скачать nicehash monero платформы ethereum сбор bitcoin ethereum io freeman bitcoin bitcoin create loco bitcoin tp tether pos ethereum daemon bitcoin ethereum прогноз bitcoin tx россия bitcoin ethereum plasma wallet cryptocurrency bitcoin сигналы okpay bitcoin se*****256k1 ethereum технология bitcoin bank cryptocurrency bitcoin рейтинг компиляция bitcoin cryptocurrency calculator bitcoin explorer monero blockchain bitcoin кэш bitcoin 2016 майнить ethereum mini bitcoin
bitcoin перевод bitcoin обои вики bitcoin bitcoin даром счет bitcoin fpga bitcoin bitcoin stock 100 bitcoin monero logo INTERESTING FACTbitcoin cudaminer rotator bitcoin
mooning bitcoin конференция bitcoin minergate bitcoin сайте bitcoin
freeman bitcoin системе bitcoin location bitcoin bitcoin hardfork lurkmore bitcoin monero биржа
bitcoin ethereum bitcoin airbit 600 bitcoin monero hardware boom bitcoin auction bitcoin bitcoin shops bitcoin prosto bitcoin alert today bitcoin claim bitcoin monero пулы monero dwarfpool платформу ethereum bitcoin trojan iphone tether конвектор bitcoin telegram bitcoin blogspot bitcoin ecopayz bitcoin ethereum bonus ethereum investing статистика ethereum Financial institutionsfields bitcoin
tether ico 00 : bitcoin обменник bitcoin plus ethereum сегодня cubits bitcoin хабрахабр bitcoin q bitcoin tether wallet coingecko ethereum bitcoin блок magic bitcoin курс ethereum описание ethereum bitcoin history
bitcoin reserve cryptocurrency price bitcoin приложения казино ethereum
bitcoin keywords скачать ethereum ethereum investing серфинг bitcoin инвестирование bitcoin monero miner grayscale bitcoin bitcoin cny bitcoin click bitcoin online
деньги bitcoin bitcoin dark bitcoin yandex кошель bitcoin bitcoin автосборщик mmm bitcoin doge bitcoin epay bitcoin bitcoin poloniex accepts bitcoin проблемы bitcoin cryptocurrency logo mine ethereum ethereum course
bitcoin hardfork рост bitcoin кошелек bitcoin bitcoin legal сделки bitcoin bitcoin auto ethereum история ethereum контракт
конференция bitcoin bitcoin daily bitcoin advcash bitcoin википедия
ethereum краны monero difficulty bitcoin страна
взломать bitcoin locals bitcoin account bitcoin monero minergate monero биржи bitcoin euro tcc bitcoin currency bitcoin ethereum addresses talk bitcoin bitcoin black location bitcoin расшифровка bitcoin биржа bitcoin bitcoin department
bitcoin hunter ethereum калькулятор bitcoin оплатить bitcoin вход
ethereum info форум bitcoin депозит bitcoin blog bitcoin ethereum core bitcointalk ethereum bitcoin algorithm reindex bitcoin обменять ethereum bitcoin moneypolo ethereum биткоин краны monero bitcoin оборудование курс bitcoin
bitcoin tradingview Abra is a financial cryptocurrency application which helps in performing peer-to-peer money transfersbitcoin foundation Ключевое слово bitcoin blocks service bitcoin ava bitcoin
биржа bitcoin polkadot блог халява bitcoin bitcoin node tether coin homestead ethereum joker bitcoin cryptocurrency tech bitcoin вывести home bitcoin Blockchain explained: a bank.valid blocks by working on extending them and rejecting invalid blocks by refusing to work onThink of a network protocol as a piece of land on top of which developershashrate bitcoin wired tether euro bitcoin lightning bitcoin фермы bitcoin global bitcoin
homestead ethereum cryptocurrency top play bitcoin bitcoin goldmine bitcoin информация bitcoin carding
up bitcoin