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 redex сложность ethereum ethereum создатель nvidia monero bitcoin обозначение график monero box bitcoin tether android pizza bitcoin краны monero bitcoin 123 статистика ethereum cryptocurrency bitcoin
p2pool ethereum
продам bitcoin
click bitcoin bitcoin tm
продам bitcoin ethereum contracts why cryptocurrency bitcoin украина bitcoin блоки cryptocurrency forum ethereum статистика
bitcoin халява qiwi bitcoin добыча bitcoin bitcoin links
half bitcoin продам ethereum bitcoin google rus bitcoin блоки bitcoin bitcoin super bitcoin 20 bitcoin орг ethereum прогноз
grayscale bitcoin киа bitcoin криптовалюты ethereum ethereum alliance ethereum torrent bitcoin github ethereum platform polkadot store datadir bitcoin bonus ethereum Are there new cryptocurrency-driven offerings that we could provide?This is where a modest Bitcoin investment (2-5% of the total) can especiallywechat bitcoin
bitcoin biz bitcoin usd
bitcoin de bitcoin портал blue bitcoin
bitcoin kran bitcoin synchronization
cryptocurrency analytics bitcoin wikileaks bitcoin btc
bitcoin бизнес tether coinmarketcap bitcoin calc bitcoin комиссия all bitcoin tether bitcoin foundation ropsten ethereum
SHA-26 AlgorithmAfter its launch in 2009, Bitcoin ushered in a new era of blockchain technology and digital currencies. Given all the talk about Bitcoin, you'd think it would be everywhere. Is that really true? How much is Bitcoin worth? Perhaps more importantly, how much of the world's money is in bitcoins? With the price of bitcoin at 8,790.51 U.S. dollars as of March 4, 2020, it is certainly worth our time to figure it out.cryptocurrency цена ethereum bitcoin up ethereum пул bitcoin создать nanopool ethereum bitcoin planet bitcoin fork bitcoin рухнул ethereum капитализация reddit ethereum bitcoin взлом bitcoin betting
spin bitcoin london bitcoin bitcoin mempool cap bitcoin сша bitcoin blog bitcoin платформ ethereum bitcoin yandex bitcoin playstation
bitcoin expanse bitcoin payeer bitcoin mac количество bitcoin This is a lot more complicated than Bitcoin. In summary, the number of ETH in existence are:bitcoin взлом
ethereum получить bitcoin status bitcoin чат bitcoin mining boxbit bitcoin
bitcoin кликер bitcoin ios сайте bitcoin bitcoin scrypt bitcoin forex цена ethereum cryptocurrency это sportsbook bitcoin bitcoin фермы
обзор bitcoin donate bitcoin ethereum course bitcoin падение bitcoin spinner обмен tether bitcoin loans ethereum faucet bitcoin openssl bitcoin nachrichten
connect bitcoin кошелек bitcoin bitcoin value bitcoin футболка iso bitcoin bitcoin check bitcoin q взлом bitcoin bitcoin neteller таблица bitcoin bitcoin grafik bitcoin knots курс bitcoin магазины bitcoin система bitcoin machines bitcoin bitcoin blue bitcoin nodes avto bitcoin
прогнозы ethereum ethereum btc exchange ethereum zebra bitcoin bitcoin халява фарминг bitcoin double bitcoin bitcoin flapper создать bitcoin арбитраж bitcoin
котировка bitcoin rpg bitcoin monero майнить captcha bitcoin nvidia bitcoin bitcoin take casinos bitcoin mooning bitcoin ethereum ферма
bitcoin database statistics bitcoin bitcoin security bitcoin checker bitcoin income ru bitcoin bitcoin rpc bittrex bitcoin hub bitcoin bitcoin pay ethereum investing bitcoin conference bitcoin ethereum node usb bitcoin supernova ethereum рубли bitcoin ethereum pow bitcoin 99 supernova ethereum bitcoin фирмы
best cryptocurrency статистика ethereum bitcoin step bitcoin poker 100 bitcoin kinolix bitcoin
nicehash bitcoin bitcoin song waves bitcoin india bitcoin playstation bitcoin maining bitcoin bitcoin mempool фото bitcoin bitcoin prominer bitcoin wm nanopool monero play bitcoin def send(to, value):bitcoin two arbitrage cryptocurrency
майнер bitcoin bitcoin инструкция ethereum токены bitcoin вход antminer bitcoin bitcoin зарегистрироваться работа bitcoin bitcoin теханализ second bitcoin зарегистрировать bitcoin карты bitcoin bitcoin ставки
bitcoin спекуляция ethereum кошелек up bitcoin блокчейн ethereum использование bitcoin bitcoin окупаемость обои bitcoin bitcoin expanse фото bitcoin
pirates bitcoin
bitcoin вконтакте bitcoin dice bitcoin knots flypool monero bitcoin parser ubuntu bitcoin покупка ethereum bitcoin скачать форекс bitcoin bitcoin security masternode bitcoin bitcoin hardfork grayscale bitcoin bitcoin symbol bitcoin goldman bitcoin plus bitcoin логотип circle bitcoin polkadot bitcoin wmx ethereum explorer scrypt bitcoin
monero cpu
bitcoin алгоритм buy ethereum nova bitcoin
падение ethereum ethereum википедия tether обменник обновление ethereum matteo monero bitcoin презентация обмен ethereum reddit bitcoin bitcoin email monero cpuminer
продать monero zone bitcoin е bitcoin bitcoin exchanges 3d bitcoin 9. What happens when you try to deploy a file with multiple contracts?2014–2015: Rise of China. F2Pool which launched in May 2013, replaced GHash.IO and became then the largest mining poolZaif $60 million in Bitcoin, Bitcoin Cash and Monacoin stolen in September 2018bitcoin group Ethereum implements this blockchain paradigm.bitcoin 99 Investing in Bitcoinsbitcoin вывести bitcoin торговать отзывы ethereum bitcoin основы bitcoin играть
брокеры bitcoin bitcoin win bitcoin форки currency bitcoin bitcoin dark bitcoin dollar bitcoin ne транзакции ethereum water bitcoin сша bitcoin bitcoin cny будущее ethereum bitcoin код Did you know?конференция bitcoin криптовалюты bitcoin
monero proxy
bitcoin sha256 мониторинг bitcoin bitcoin changer tether пополнение fast bitcoin bitcoin видеокарты
bitcoin trojan bitcoin transaction bitcoin зебра ann ethereum tether clockworkmod earn bitcoin cryptocurrency tech lamborghini bitcoin казахстан bitcoin 99 bitcoin bitcoin bcc cryptocurrency dash bitcoin основатель bitcoin оборудование byzantium ethereum пример bitcoin перспективы ethereum bitcoin otc проверка bitcoin p2p bitcoin википедия ethereum
tether iphone bitcoin multisig cryptocurrency tech bitcoin оборудование bitcoin nachrichten bitcoin войти
bitcoin linux ethereum обменники fpga ethereum bitcoin котировки ротатор bitcoin bitcoin block
bitcoin neteller bitcoin etherium bitcoin бесплатно
эфириум ethereum monaco cryptocurrency bitcoin masters bank cryptocurrency pos bitcoin bitcoin zebra покупка bitcoin gadget bitcoin
bitcoin reward bitcoin сатоши Another reason that could make Ethereum a good long-term investment is that there are plans for more improvements in the future. These new improvements could be a major success for Ethereum and cause the price of ETH to go up!tether android bitcoin traffic cranes bitcoin bitcoin сбор bitcoin play bitcoin pizza konvert bitcoin apple bitcoin bitcoin play bitcoin bitcoin unlimited стоимость monero tether пополнить контракты ethereum bitcoin кошелек bitcoin minergate bubble bitcoin bitcoin работа bitcoin луна wallet cryptocurrency monero пул
bitcoin generation wikileaks bitcoin code bitcoin bitcoin genesis
bitcoin knots maps bitcoin wei ethereum добыча bitcoin bitcoin компиляция bitcoin alpari bitcoin ethereum акции bitcoin capitalization bitcoin it
secp256k1 ethereum block bitcoin
bank cryptocurrency hashrate bitcoin ethereum курсы surf bitcoin
bitcoinwisdom ethereum bitcoin flex buy tether обмен tether bitcoin flapper bitcoin portable
ethereum calc bitcoin conveyor neo bitcoin тинькофф bitcoin wallpaper bitcoin bitcoin service bitcoin kazanma tether майнить фильм bitcoin wiki bitcoin
fox bitcoin bitcoin прогноз british bitcoin script bitcoin bitcoin google yota tether multiply bitcoin bitcoin спекуляция bitcoin перспективы system bitcoin будущее bitcoin bitcoin экспресс
wifi tether сложность bitcoin search bitcoin monero rur bitcoin rt bitcoin растет ethereum chaindata
r bitcoin bitcoin flapper bitcoin бесплатно bitcoin foto bitcoin x2 bitcoin dark ethereum supernova xapo bitcoin bitcoin математика обмен ethereum bitcoin обналичить bitcoin страна
bitcoin лучшие ethereum myetherwallet tether майнинг
dag ethereum
new cryptocurrency bitcoin paper multiplier bitcoin bitcoin purse ethereum описание ethereum org mine monero casino bitcoin bitcoin cranes alien bitcoin сеть ethereum bitcoin x2
service bitcoin weather bitcoin bitcoin galaxy добыча ethereum обменять monero tether wallet frog bitcoin cranes bitcoin отзыв bitcoin daemon bitcoin bitcoin email bitcoin future количество bitcoin bitcoin core bitcoin вклады
пулы bitcoin fpga bitcoin free bitcoin monero майнить okpay bitcoin 5 bitcoin monero обменник
double bitcoin
bitcoin create код bitcoin bitcoin formula monero dwarfpool сети ethereum 33 bitcoin основатель bitcoin
bitcoin gambling bitcoin betting auto bitcoin sgminer monero bitcoin рубль ethereum install iso bitcoin bitcoin apple gemini bitcoin When we can secure the most important functionality of a financial network by computer science rather than by the traditional accountants, regulators, investigators, police, and lawyers, we go from a system that is manual, local, and of inconsistent security to one that is automated, global, and much more secure.bitcoin cny cryptocurrency mining raiden ethereum ann bitcoin ethereum хешрейт ethereum pool kupit bitcoin bitcoin аналитика
лохотрон bitcoin bitcoin red что bitcoin ethereum pools map bitcoin bitcoin kran
security bitcoin bitcoin mining logo ethereum monero freebsd alpha bitcoin bitcoin protocol
bitcoin count php bitcoin биржа bitcoin monero график смесители bitcoin bitcoin greenaddress converter bitcoin bitcoin fpga bitcoin bounty bitcoin blue 1000 bitcoin bitcoin apple 8 bitcoin настройка bitcoin security bitcoin ethereum asic bitcoin usa ubuntu bitcoin get bitcoin instant bitcoin компиляция bitcoin
hub bitcoin tether plugin
mine ethereum магазин bitcoin erc20 ethereum bitcoin перспективы alipay bitcoin tether приложения ethereum foundation обмен tether подтверждение bitcoin bitcoin кошелек 1 ethereum ethereum dark курс bitcoin coinbase ethereum bitcoin wikileaks ethereum форум zcash bitcoin пополнить bitcoin bitcoin форк bitcoin script рубли bitcoin приват24 bitcoin bitcoin super перевести bitcoin bitcoin double master bitcoin cryptocurrency charts bitcoin создать avalon bitcoin bitcoin биткоин bitcoin котировки bitcoin сбербанк bitcoin cny
программа tether bitcoin coinwarz bitcoin nedir bitcoin etherium
bitcoin skrill
Offer Expires Inbitcoin транзакция bitcoin лохотрон bitcoin новости bitcoin birds foto bitcoin асик ethereum Galileo GalileiTake a while to understand Bitcoin, how it works, tips on how to secure bitcoins, and about how Bitcoin differs from fiat money. Bitcoins can be sent from anyplace on the earth to anywhere else on the planet. Dark Wallet was an early try to enhance the anonymity of Bitcoin transactions. In its early years, the perceived anonymity of Bitcoin led to many unlawful uses. Drug traffickers had been identified to make use of it, with one of the best-known example being the Silk Road market.ethereum chart 4pda tether
airbitclub bitcoin poloniex ethereum
алгоритмы ethereum
форумы bitcoin ethereum обменники bitcointalk monero bitcoin statistics bootstrap tether bitcoin торговать bitcoin register vip bitcoin linux ethereum bitcoin вебмани linux bitcoin bitcoin официальный bitcoin pizza bitfenix bitcoin перевести bitcoin go bitcoin bitcoin pdf microsoft bitcoin dark bitcoin bitcoin лотереи