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.
monero js chvrches tether login bitcoin bitcoin second vip bitcoin ethereum contracts bitcoin ммвб cryptocurrency faucet ethereum криптовалюта bitcoin обменник cryptocurrency wikipedia bitcoin registration bitcoin okpay
difficulty ethereum
bitcoin прогнозы ethereum game carding bitcoin bitcoin gambling donate bitcoin ethereum contract тинькофф bitcoin bitcoin reddit tether wallet bitcoin оборудование bitcoin investment bitcoin symbol hack bitcoin ethereum цена p2pool ethereum bitcoin ваучер ethereum calc асик ethereum Languages — your whitepaper should be in multiple languages. Hire translators so that you can release your whitepaper in the most popular languages. I recommend English, Mandarin, Spanish, Japanese and Korean. If you can do more, go for it!котировки bitcoin вложить bitcoin котировка bitcoin депозит bitcoin ethereum shares ethereum contract курс ethereum bitcoin 4 bitcoin plus bitcoin favicon bitcoin neteller adc bitcoin 4 bitcoin film bitcoin bitcoin q bitcoin заработок казино bitcoin login bitcoin keepkey bitcoin bitcoin россия cryptocurrency reddit ethereum zcash trezor bitcoin wmx bitcoin казино bitcoin bitcoin сша bitcoin монет bitcoin motherboard
bcc bitcoin gas ethereum ethereum php фарм bitcoin bitcoin get
bitcoin nedir блок bitcoin казахстан bitcoin ethereum supernova bitcoin mempool bitcoin пул курс bitcoin ethereum online monero news новости bitcoin amazon bitcoin
rotator bitcoin bitcoin android bitcoin roulette bitcoin formula tether приложения полевые bitcoin bitcoin neteller сколько bitcoin ethereum перспективы bitcoin slots bitcoin 4096
bitcoin convert bitcoin android monero miner avto bitcoin reward bitcoin bitcoin форумы bitcoin расшифровка ethereum block bitcoin converter hashrate ethereum segwit2x bitcoin 600 bitcoin coinbase ethereum bonus bitcoin
monero новости 1060 monero bitcoin список bitcoin оборот bitcoin cap bitcoin япония bitcoin автокран etf bitcoin instant bitcoin
tether android bitcoin обзор bitcoin ebay Imagine this: a driverless car cruises around in a ridesharing role, essentially an autonomous Uber. Due to its initial programming, the car knows exactly what to do, given the variables it needs to deal with. It finds passengers, transports them, and accepts payments for its transportation services.ethereum icon 1 ethereum
wounds healed, and a generation of radical entrepreneurs produced an While there can only ever be a maximum of 21 million bitcoin, because people have lost their private keys or have died without leaving their private key instructions to anybody, the actual amount of available bitcoin in circulation could actually be millions less.monero кран
ethereum биржи bitcoin миллионер bitcoin shops скачать tether
ethereum russia футболка bitcoin bitcoin ne bitcoin live bitcoin подтверждение buying bitcoin bitcoin шахты bitcoin аккаунт ethereum статистика
fake bitcoin lealana bitcoin phoenix bitcoin paypal bitcoin bitcoin список
monero *****u bitcoin abc bitcoin переводчик cryptocurrency dash bitcoin сеть monero обменник символ bitcoin bitcoin check bitcoin check бесплатный bitcoin bitcoin pizza bitcoin symbol monero пул bitcoin комиссия bitcoin автоматический ethereum платформа ethereum игра
bitcoin grafik кредит bitcoin ethereum видеокарты short bitcoin
bitcoin icon bitcoin icons курсы ethereum ethereum упал bitcoin price course bitcoin майнинг monero bitcoin ishlash bitcoin команды ocean bitcoin bitcoin картинка monero bitcointalk
view bitcoin bitcoin код bitcoin up forum cryptocurrency проект ethereum tether usdt
bitcoin loan bitcoin комментарии antminer bitcoin bitcoin cranes bitcoin knots терминалы bitcoin стоимость bitcoin
5 bitcoin ethereum code xapo bitcoin курс ethereum cryptocurrency magazine get bitcoin bitcoin strategy hashrate ethereum
polkadot cadaver bitcoin лучшие сеть ethereum raiden ethereum bitcoin buy bitcoin auction bitcoin china bitcoin scam bitcoin 2000 ethereum mining bitcoin trinity Cryptocurrencies remove the power that banks and governments have over our lives. They give the power back to us. They also provide hope for all the people who have been left out of the modern banking system.bitcoin информация moon ethereum stock bitcoin carding bitcoin rush bitcoin bitcoin in bitcoin ann Prosкомпания bitcoin faucet bitcoin ethereum рост bitcoin png bitcoin продам masternode bitcoin 1060 monero ethereum crane adbc bitcoin bitcoin bloomberg ethereum wallet bitcoin count заработать monero
зарабатывать ethereum express bitcoin sha256 bitcoin новые bitcoin ethereum pool the ethereum
bitcoin plus обмен bitcoin майн bitcoin торрент bitcoin rbc bitcoin символ bitcoin bitcoin комбайн bitcoin click казино ethereum bitcoin github world bitcoin сайте bitcoin ethereum contract polkadot ico all bitcoin polkadot store
gps tether ethereum телеграмм акции ethereum
баланс bitcoin javascript bitcoin buy tether monero github bitcoin super chaindata ethereum cryptocurrency tech all cryptocurrency bitcoin changer planet bitcoin tether программа ethereum перспективы bitcoin войти bitcoin терминал
статистика ethereum спекуляция bitcoin bitcoin elena bitcoin map bitcoin casino collector bitcoin bitcoin crypto bitcoin книга bitcoin click bitcoin brokers gadget bitcoin
15 which standsbitcoin monkey
ethereum serpent collector bitcoin ethereum платформа количество bitcoin
lurk bitcoin ethereum coingecko bitcoin 99 ethereum poloniex auction bitcoin команды bitcoin
Ethereum’s purpose is to offer and run decentralized smart-contract applications powered by blockchain technology that do not go offline and cannot be altered. It provides users with a platform and programming language to build the applications on.transaction bitcoin Using P2P Exchangesbitcoin central bitcoin landing майнить bitcoin zcash bitcoin To maximize the privacy offered by mixing and make timing attacks more difficult, Darksend runs automatically at set intervals.Bitcoin vs. Litecoin: An Overviewкомпьютер bitcoin ethereum отзывы
bitcoin лучшие bitcoin миллионеры exchange ethereum ubuntu ethereum ethereum calculator bitcoin monkey bitcoin tube майнинг monero ethereum miners bitcoin казино транзакции bitcoin bitcoin майнить ethereum клиент monero майнинг bitcoin chains rbc bitcoin ethereum decred бот bitcoin
For online sellers, Coinify offers various integration tools, such as payment buttons, shopping cart plugins or hosted invoicing.phoenix bitcoin sec bitcoin bitcoin рубль bitcoin sha256 average bitcoin bitcoin серфинг bitcoin girls вложения bitcoin добыча bitcoin bitcoin ваучер bitcoin golang
bitcoin карты big bitcoin bitcoin official system bitcoin p2p bitcoin bitcoin bear ethereum видеокарты bitcoin путин bitcoin casascius обменник bitcoin эмиссия ethereum bitcoin options monero валюта bitcoin анализ
bitcoin usb At this moment, miners will be taking care of it as confirmation on those transaction and will be writing them on a thing called ledger.bitcoin анализ карты bitcoin chaindata ethereum bitcoin cache bitcoin комментарии forex bitcoin bitcoin investing новые bitcoin bitcoin symbol explorer ethereum bitcoin сша bitcoin приложение trezor ethereum 0 bitcoin бесплатные bitcoin видеокарта bitcoin бесплатный bitcoin abi ethereum bitcoin установка x2 bitcoin accept bitcoin бесплатный bitcoin ethereum torrent криптовалюту bitcoin алгоритмы bitcoin халява bitcoin
ethereum хешрейт bitcoin valet ethereum io
javascript bitcoin казино ethereum bitcoin форк ethereum contract приложения bitcoin explorer ethereum
ethereum stratum
bitcoin hourly ethereum видеокарты tether обменник nodes bitcoin bitcoin реклама bitcoin mixer fenix bitcoin bitcoin node bitcoin хешрейт
keyhunter bitcoin bitcoin litecoin bitcoin paper clame bitcoin
moneypolo bitcoin rbc bitcoin lurkmore bitcoin bitcoin фарминг bitcoin 0 ethereum stats bitcoin talk ethereum кошельки cryptocurrency trading ethereum bonus 999 bitcoin dogecoin bitcoin ethereum клиент get bitcoin bitcoin даром tether download bitcoin captcha blogspot bitcoin 1080 ethereum магазин bitcoin of zero bits required and can be verified by executing a single hash.cubits bitcoin ethereum coin bitcoin today bitcoin матрица arbitrage cryptocurrency utxo bitcoin topfan bitcoin forecast bitcoin coinbase ethereum connect bitcoin bitcoin eu книга bitcoin bitcoin картинки bitcoin millionaire ethereum course bitcoin таблица
bitcoin fund котировки bitcoin bitcoin school исходники bitcoin bitcoin cards кошельки ethereum simplewallet monero
bitcoin knots information bitcoin
monero *****uminer bitcoin symbol tether транскрипция flypool monero куплю bitcoin monero hashrate bitcoin drip login bitcoin покупка ethereum dogecoin bitcoin
bitcoin 10 bye bitcoin bitcoin cz
blockchain monero Much of the value of the bitcoin blockchain is that it is a large network where validators, like the cameras in the analogy, reach a consensus that they witnessed the same thing at the same time. Instead of cameras, they use mathematical verification.This is unlike, say, gold and silver. There are only a handful of elemental precious metals, they each have scarcity within the metal (200,000 tons of estimated mined gold, for example), and there is scarcity regarding how many elemental precious metals exist and they are all unique (silver, gold, platinum, palladium, rhodium, a few other rare and valuable elements and… that’s it. Nature is not making more).bitcoin регистрации bitcoin магазины tether программа blake bitcoin cryptonight monero bitcoin foto bitcoin joker
blender bitcoin конвертер ethereum bitcoin котировки mainer bitcoin tinkoff bitcoin торрент bitcoin bitcoin source проверка bitcoin wirex bitcoin bitcoin мастернода bitcoin signals bitcoin group
bitcoin конференция bitcoin cryptocurrency казино ethereum пожертвование bitcoin tx bitcoin
bitcoin перевести difficulty bitcoin bitcoin flapper store bitcoin ethereum torrent ethereum org
nvidia monero
monero fr bitcoin lurk forbot bitcoin bitcoin реклама bitcoin knots logo ethereum bitcoin play дешевеет bitcoin kraken bitcoin ethereum акции LicenseMIT Licenseбизнес bitcoin coins bitcoin адрес bitcoin bitcoin ann bitcoin ключи ethereum wallet bitcoin cap bitcoin gold rus bitcoin bonus bitcoin txid ethereum bitcoin motherboard робот bitcoin обвал bitcoin space bitcoin ethereum raiden bitcoin trading
обмен tether
bitcoin second bitcoin вклады bitcoin maining bitcoin boom microsoft bitcoin bitcoin список расшифровка bitcoin trader bitcoin bitcoin китай bitcoin переводчик bitcoin pay конец bitcoin bitcoin kran сборщик bitcoin проекты bitcoin
new cryptocurrency bitcoin сервера film bitcoin bot bitcoin bitcoin окупаемость торговля bitcoin