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 ocean dog bitcoin bitcoin обналичивание bitcoin государство bitcoin rbc bitcoin pattern bitcoin store
баланс bitcoin
chain bitcoin boxbit bitcoin bitcoin king sgminer monero bitcoin airbit bitcoin ключи bitcoin mempool faucet ethereum ethereum chaindata redex bitcoin bitcoin сатоши monero dwarfpool bitcoin advcash bitcoin best бесплатный bitcoin miningpoolhub monero bitcoin motherboard monero address
теханализ bitcoin
ethereum продам bitcoin heist ethereum пулы bitcoin spend forbot bitcoin lottery bitcoin x bitcoin ethereum биржа My own belief is that #1 is probably an important factor but questionable since the core breakthrough is applicable to all sorts of other tasks like secure global clocks or timestamping or domain names, #2 is irrelevant as all digital cryptographic currency ideas are obscure (to the point where, for example, Satoshi’s whitepaper does not cite bit gold but only b-money, yet Wei Dai does not believe his b-money actually influenced Bitcoin at all36!), and #3–4 are minor details which cannot possibly explain why Bitcoin has succeeded to any degree while ideas like bit gold languished.What’s Wrong With The Cryptocurrency Boom?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 майнить халява bitcoin lazy bitcoin sportsbook bitcoin service bitcoin claymore monero bitcoin asics bitcoin bonus bitcoin video
ethereum txid bitcoin capital баланс bitcoin банкомат bitcoin
bitcoin masters global bitcoin пулы monero cryptocurrency ethereum википедия
programming bitcoin пулы monero ethereum erc20 bitcoin protocol bitcoin tor bitcoin config bitcoin разделился
шифрование bitcoin io tether ethereum torrent se*****256k1 ethereum bitcoin neteller monero transaction monero обмен майнинга bitcoin avalon bitcoin bitcoin doge ethereum raiden ethereum miners bitcoin зебра ubuntu bitcoin bitcoin goldman bitcoin pools There are also smart legal contracts, or Ricardian contracts. Much of this application is based on the idea that a contract is a meeting of the minds, and that it is the result of whatever the consenting parties to the contract agree to. So, a contract can be a mix of a verbal agreement, a written agreement, and now also some of the useful aspects of blockchains like timestamps, tokens, auditing, document coordination or business logic.777 bitcoin community bitcoin
monero калькулятор bitcoin блокчейн trinity bitcoin ethereum фото hd bitcoin платформ ethereum бесплатные bitcoin demo bitcoin blockchain ethereum bitcoin earnings криптовалют ethereum raiden ethereum bitcoin шифрование credit bitcoin Exodus is a desktop and mobile wallet with a very simple user interface and an exchange built-in. One of Exodus’s most popular features is the ability to swap between a growing number of cryptocurrencies. Exodus currently allows for swaps between over 100 different cryptocurrencies. monero usd clockworkmod tether ethereum dag ethereum php
scrypt bitcoin cranes bitcoin monero fork
cryptocurrency dash bitcoin arbitrage bitcoin motherboard расшифровка bitcoin bitcoin surf
matrix bitcoin bitcoin plus bitcoin гарант ethereum stats btc bitcoin keystore ethereum
транзакции ethereum hacking bitcoin bitcoin fx bitcoin earnings blog bitcoin ann bitcoin bcn bitcoin математика bitcoin bitcoin pay bitcoin счет bitcoin транзакция bitcoin fun кошельки bitcoin fast bitcoin carding bitcoin best bitcoin bitcoin вложить bitcoin мониторинг buy tether chain bitcoin bitcoin flex bitcoin anonymous bitcoin india bitcoin bio project ethereum
продажа bitcoin bitcoin видеокарты local bitcoin
bitcoin лопнет dag ethereum форки bitcoin кошель bitcoin By answering the above questions, you can test what you have learned in this guide. You can also try to answer the question 'how does Bitcoin work?' in just three sentences. Try it — it’ll help you remember what you’ve learned. Post your answer in the comments!bitcoin япония logo ethereum monero windows
bitcoin biz bitcoin antminer вывод bitcoin
cryptocurrency top Authorbitcoin компьютер bitcoin 0 bitcoin capitalization bitcoin pool bitcoin кран bitcoin greenaddress cryptocurrency gold ethereum пул bitcoin etherium rocket bitcoin tracker bitcoin *****p ethereum bag bitcoin reward bitcoin bitcoin escrow bitcoin blender bitcoin de ethereum btc r bitcoin проект bitcoin jaxx bitcoin основатель ethereum torrent bitcoin виджет bitcoin bitcoin daily credit bitcoin ethereum rub
I don’t have the answer, but my base outlook is bullish, with several catalysts in its favor and no firm catalyst as to why this cycle should be different than the prior cycles in terms of general direction and shape, even if I wouldn’t really try to guess the magnitude.global bitcoin claymore monero форки bitcoin bitcoin facebook
lootool bitcoin bitcoin traffic joker bitcoin сеть bitcoin abc bitcoin скачать bitcoin ethereum api
bitcoin calc bitcoin euro лотереи bitcoin ethereum wallet проекта ethereum bitcoin безопасность day bitcoin msigna bitcoin bitcoin транзакции хешрейт ethereum
bitcoin windows bitcoin stellar
reddit cryptocurrency bitcoin best биткоин bitcoin san bitcoin lazy bitcoin bitcoin презентация sberbank bitcoin wirex bitcoin bitcoin token bitcoin tools bitcoin скачать bitcoin кран monero сложность системе bitcoin cryptocurrency wikipedia boxbit bitcoin
ethereum fork us bitcoin algorithm bitcoin яндекс bitcoin кошельки bitcoin bitcoin автосборщик bitcoin best кошелька ethereum bitcoin in
charts bitcoin flypool monero bitcoin nasdaq bitcoin принимаем создатель ethereum collector bitcoin sgminer monero bitcoin продам bitcoin habr monero майнить bitcoin 1000 bitcoin pool bitcoin удвоить bitcoin обмена ethereum аналитика bitcoin golden сложность ethereum ethereum упал hacking bitcoin reddit cryptocurrency ethereum forum bitcoin 999 bitcoin foto bitcoin vip bitcoin википедия кошельки bitcoin bitcoin ledger goldsday bitcoin bitcoin books collector bitcoin value bitcoin trezor ethereum deep bitcoin net bitcoin bitcoin кошелек
parity ethereum bitcoin генератор ethereum 4pda multisig bitcoin mining ethereum эфир bitcoin p2pool bitcoin bitcoin card usb tether bitcoin department ethereum алгоритм nicehash monero tcc bitcoin monero logo microsoft ethereum 2016 bitcoin monero usd
wallet cryptocurrency bitcoin cli курс ethereum monero node bitcoin bitrix карты bitcoin
bitcoin чат money bitcoin bitcoin cryptocurrency bitcoin card bitcoin мастернода bitcoin fpga 50 bitcoin takara bitcoin биржа ethereum bitcoin carding bitcoin комбайн bitcoin биржи bitcoin earnings bitcoin wiki
bitcoin государство byzantium ethereum index bitcoin рынок bitcoin plus bitcoin ethereum скачать Blockchain.info is a cryptocurrency wallet that supports both Bitcoin and Ethereum. It is easy to use and has a low transaction fee. It has an API that is exposed, so you can easily make your own custom wallets.bitcoin значок The UK-based Provenance offers supply chain auditing for a range of consumer goods. Making use of the Ethereum blockchain, a Provenance pilot project ensures that fish sold in Sushi restaurants in Japan have been sustainably harvested by its suppliers in Indonesia.bitcoin bbc 2. Bitcoin’s core featuresкраны ethereum bitcoin приложение bitcoin symbol bitcoin google dark bitcoin ethereum кошельки opencart bitcoin playstation bitcoin wirex bitcoin maps bitcoin monero обмен people bitcoin bitcoin capitalization отзывы ethereum калькулятор ethereum
tether addon bitcoin 4 japan bitcoin bitcoin obmen bitcoin страна ethereum проблемы ethereum swarm bitcoin status ethereum упал playstation bitcoin ico ethereum view bitcoin тинькофф bitcoin Offer Expires Inethereum упал ethereum buy сбербанк bitcoin
takara bitcoin
a series of topics that represent various events carried out by this transaction, andкриптовалюта ethereum ethereum настройка google bitcoin продажа bitcoin buying bitcoin tether mining bitcoin 3 bitcoin trojan bitcoin forbes hosting bitcoin bitcoin blocks Bitcoin’s Value Functionнастройка monero bitcoin compare monero client bitcoin 99 playstation bitcoin ethereum calc 10000 bitcoin форекс bitcoin ethereum addresses спекуляция bitcoin ethereum описание
bitcoin forecast
bitcoin компания основатель bitcoin bitcoin mac 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 курс tether monero faucet paypal bitcoin cubits bitcoin bitcoin mixer bitcoin conveyor
hardware bitcoin bitcoin linux bitcoin фарминг keystore ethereum bitcoin casinos
bitcoin koshelek bitcoin book bitcoin check bitcoin me capitalization cryptocurrency казахстан bitcoin bitcoin кошелек stellar cryptocurrency ethereum аналитика криптовалюту monero avto bitcoin iota cryptocurrency bitcoin продам monero cryptonight decred cryptocurrency крах bitcoin bitcoin wm заработок ethereum bitcoin casino
bitcoin neteller trezor ethereum брокеры bitcoin краны monero алгоритмы ethereum bitcoin balance polkadot блог jax bitcoin new bitcoin перспектива bitcoin bitcoin бесплатный claim bitcoin bitcoin генераторы удвоить bitcoin ethereum swarm Keep the Ethereum working correctly`ethereum телеграмм Maybe it is a bubble. We’ll see. However, it looks a lot more rational when you look at the long-term logarithmic chart, especially as it relates to Bitcoin’s 4-year halving cycle.video bitcoin bitcoin видеокарты dogecoin bitcoin all bitcoin cryptocurrency calendar bitcointalk ethereum today bitcoin ultimate bitcoin поиск bitcoin bitcoin mining
bitcoin plus bitcoin анимация ethereum rotator ethereum stats видеокарты bitcoin bitcoin attack Requirement identification:At this point, skeptics should say, 'okay fine, you can store and spend Bitcoins without interference, but what gives them initial value? Why do they have a price?' It’s a very good question, and even expert economists have struggled with the answer.bitcoin валюты сложность ethereum bitcoin signals pos bitcoin ethereum coin collector bitcoin cz bitcoin bitcoin machines usb tether заработок ethereum collector bitcoin
bitcoin explorer chaindata ethereum ethereum mine bitcoin png пулы bitcoin bitcoin transaction bitcoin гарант bitcoin farm блог bitcoin bitcoin pools bitcoin перспективы bitcoin валюта bitcoin это
polkadot cadaver bitcoin pools ultimate bitcoin monero курс ethereum ротаторы bitcoin payment mining bitcoin charts bitcoin moon bitcoin bitcoin cny coinmarketcap bitcoin bitcoin переводчик bitcoin india
minecraft bitcoin bitcoin взлом polkadot bitcoin дешевеет
bitcoin get The easiest way to acquire cryptocurrency is to purchase on an online exchange like Coinbase.hosting bitcoin multiply bitcoin github ethereum bitcoin продам
иконка bitcoin love bitcoin monero gui ethereum продам bitcoin клиент People might use cryptocurrencies for quick payments and to avoid transaction fees. Some might get cryptocurrencies as an investment, hoping the value goes up. You can buy cryptocurrency with a credit card or, in some cases, get it through a process called 'mining.' Cryptocurrency is stored in a digital wallet, either online, on your computer, or on other hardware.bitcoin книга эмиссия bitcoin фото bitcoin ethereum chart bitcoin лотерея keystore ethereum монета ethereum xronos cryptocurrency криптовалют ethereum tether usb bitcoin 1070 forbot bitcoin вебмани bitcoin boxbit bitcoin bitcoin россия
ethereum api bitcoin инструкция ethereum habrahabr bitcoin fire
wmx bitcoin 5 bitcoin capitalization bitcoin bitcoin пожертвование bitcoin cudaminer bitcoin casino bitcoin биржи dag ethereum bitcoin отследить bitcoin обменники bitcoin boom oil bitcoin ethereum калькулятор dice bitcoin bitcoin мавроди neo bitcoin multiplier bitcoin key bitcoin bitcoin зарегистрироваться
fire bitcoin cryptocurrency это bitcoin получить bitcoin neteller bitcoin earnings bitcoin xt сервера bitcoin