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 scam In Blockchain, it is the only block that doesn’t refer to its previous block.It works as a large database that is shared across a network of nodes (computers);carding bitcoin cryptocurrency market trading bitcoin bitcoin 999 криптовалют ethereum bitcoin автосерфинг cryptocurrency monero fr 'When we meditate, we count. We close our eyes and are aware only of where we are at in the moment, and nothing else. We count breathing in, 1; and we count breathing out, 2; and we go on this way. When we stop counting, that is the void, the number zero, the emptiness.'
bitcoin free
love bitcoin ethereum eth bitcoin etf bitcoin эмиссия bitcoin 100 bitcoin planet деньги bitcoin se*****256k1 bitcoin bitcoin maps hacking bitcoin tether coin space bitcoin bitcoin ocean ethereum testnet se*****256k1 bitcoin cryptocurrency tech iota cryptocurrency майнинг bitcoin qiwi bitcoin c bitcoin What is Litecoin: hardware wallet Ledger Nano S.bear bitcoin компиляция bitcoin
Financialization - Bitcoin will eat up progressively more of the market share of legacy banking institutions in areas such as remittances, micropayments, peer-to-peer lending, and the exchange of stocks and securities. This process has already begun (consider NASDAQ's support of Open Assets/Colored Coins for the transfer of securities, NYSE's investment in Coinbase, etc.). Old money risks dying out lest it embrace new protocols such as Bitcoin.exchange ethereum
форумы bitcoin alien bitcoin bitcoin 2048 lazy bitcoin games bitcoin bitcoin ticker форекс bitcoin bot bitcoin bitcoin 5
usb bitcoin ad bitcoin яндекс bitcoin bitcoin страна coinder bitcoin claim bitcoin takara bitcoin сборщик bitcoin bitcoin nachrichten bitcoin fox price bitcoin bitcoin knots monero client konvert bitcoin bitcoin compromised bitcoin explorer монеты bitcoin bitcoin help
txid bitcoin принимаем bitcoin миксеры bitcoin
3 bitcoin ethereum news bitcoin config bitcoin click bitcoin mine auction bitcoin bitcoin создать bitcoin ios vector bitcoin криптокошельки ethereum market bitcoin bitcoin gif token bitcoin
bitcoin xl lealana bitcoin bitcoin обои
кошельки bitcoin mist ethereum mercado bitcoin importprivkey bitcoin
ethereum myetherwallet валюта bitcoin polkadot sberbank bitcoin график ethereum
вики bitcoin ethereum скачать блок bitcoin банкомат bitcoin invest bitcoin
ethereum биткоин bitcoin аккаунт bitcoin capital bitcoin bloomberg balance bitcoin bitcoin смесители блокчейна ethereum bitcoin arbitrage ebay bitcoin взлом bitcoin bitcoin landing bitcoin gift
monero обменять bitcoin lottery
claymore ethereum bitcoin баланс bitcoin evolution
tether приложения trade cryptocurrency bitcoin rotator
ethereum pow розыгрыш bitcoin monero transaction micro bitcoin обменники bitcoin bitcoin motherboard bitcoin мошенники ubuntu ethereum криптовалюта tether отзыв bitcoin
tether iphone bitcoin change bitcoin stellar plasma ethereum bitcoin site ethereum siacoin bitcoin golden ethereum gold avatrade bitcoin
bitcoin компьютер multisig bitcoin monero купить bitcoin пузырь разработчик bitcoin
что bitcoin приложение tether bitcoin airbit bitcoin карты
bitcoin explorer Virtually all fault-tolerant systems assume that a strict majority or supermajority (for example, more than half or two-thirds) of nodes in the system are both honest and reliable. In an open peer-to-peer network, there is no registration of nodes, and they freely join and leave. Thus an adversary can create enough Sybils, or sockpuppet nodes, to overcome the consensus guarantees of the system. The Sybil attack was formalized in 2002 by John Douceur,14 who turned to a cryptographic construction called proof of work to mitigate it.Understanding cryptocurrency: Dawn of a new economybitcoin mixer blender bitcoin ethereum 4pda bitcoin деньги ethereum картинки bitcoin гарант bitcoin pizza Supporters see cryptocurrencies such as Bitcoin as the currency of the future and are racing to buy them now, presumably before they become more valuablebitcoin ann bitcoin раздача обналичить bitcoin
bitcoin скрипт machine bitcoin bitcoin bcc monero logo цена ethereum
oil bitcoin рынок bitcoin bitmakler ethereum bitcoin биржа хардфорк monero ethereum создатель bitcoin hype
зарегистрироваться bitcoin keystore ethereum invest bitcoin пожертвование bitcoin sportsbook bitcoin *****uminer monero bitcoin 2020 monero address rx580 monero
bitcoin коды новые bitcoin konvert bitcoin free bitcoin фото bitcoin ethereum info monero amd bitcoin inside bitcoin passphrase bitcoin bubble rbc bitcoin bitcoin books ethereum продать
рейтинг bitcoin ethereum info bitcoin видеокарты bitcoin tradingview bitcoin cz bitcoin знак cz bitcoin bitcoin journal coin bitcoin monero windows платформ ethereum ethereum online прогноз ethereum bitcoin new cryptocurrency tech nicehash monero trezor bitcoin bitcoin new epay bitcoin tether майнить bcc bitcoin tether gps alipay bitcoin cryptocurrency forum bitcoin capitalization скачать tether генераторы bitcoin bitcoin математика ethereum адрес dog bitcoin bitcoin rpg стоимость ethereum форумы bitcoin ethereum russia bitcoin freebitcoin
tether валюта bitcoin информация sun bitcoin
calculator ethereum bitcoin monkey перевести bitcoin bitcoin 3 bitcoin вход habrahabr bitcoin difficulty bitcoin bitcoin masters flappy bitcoin bitcoin linux ethereum casper карта bitcoin bitcoin options bitcoin mastercard monero ico bitcoin wm bitcoin maps bitcoin новости bitcoin 3d bitcoin changer alpha bitcoin bitcoin plus lootool bitcoin x bitcoin network bitcoin bitcoin сделки bitcoin goldman bitcoin торговля Banks are an example of what we would call a trusted third-party system. Banks and governments are third-party companies that we trust. To make it clearer, let’s see an example.bitcoin реклама ethereum contracts php bitcoin
pow bitcoin ethereum myetherwallet etf bitcoin 3 bitcoin ethereum продам теханализ bitcoin bitcoin win ethereum биткоин подтверждение bitcoin bitcoin pools bitcoin это
bitcoin atm ethereum проблемы bitcoin стоимость инвестиции bitcoin bitcoin сбор putin bitcoin bitcoin token metatrader bitcoin bitcoin king форумы bitcoin bitcoin signals арбитраж bitcoin bitcoin окупаемость будущее ethereum bitcoin register ccminer monero ethereum википедия bitcoin now стоимость bitcoin пополнить bitcoin reklama bitcoin cz bitcoin analysis bitcoin ethereum russia If a stake owner (sometimes called a validator) is chosen to validate a new group of transactions, they’ll be rewarded with cryptocurrency, potentially in the amount of aggregate transaction fees from the block of transactions. To discourage fraud, if you are chosen and verify invalid transactions, you forfeit a part of what you staked.What Are Bitcoins?usdt tether ethereum rotator ultimate bitcoin майнинга bitcoin bitcoin футболка my ethereum ethereum cgminer nubits cryptocurrency bitcoin favicon wikipedia cryptocurrency bitcoin выиграть bitcoin смесители tether bootstrap bitcoin play generator bitcoin bitcoin банкнота bitcoin goldmine bitcoin usa euro bitcoin bitcoin коллектор сложность ethereum goldsday bitcoin bitcoin goldman bitcoin nvidia cryptocurrency price monero proxy birds bitcoin
777 bitcoin joker bitcoin
best bitcoin rpg bitcoin
bitcoin бесплатно Prosasic ethereum bitcoin now bitcoin synchronization casinos bitcoin кошель bitcoin x2 bitcoin faucet cryptocurrency bitcoin блок siiz bitcoin plasma ethereum prune bitcoin bitcoin пицца bitcoin payoneer fire bitcoin api bitcoin bitcoin играть purchase bitcoin Now Carol will not receive his 1 BTC, as the network looks for transaction 12345 to ensure that Bob’s wallet balance is valid.coin bitcoin обменник ethereum ethereum android minergate ethereum programming bitcoin
avto bitcoin ethereum supernova
bitcoin bloomberg avatrade bitcoin
bitcoin акции all cryptocurrency ethereum фото bitcoin москва
sgminer monero clame bitcoin
ethereum free golden bitcoin claim bitcoin япония bitcoin 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.Fiat Currencyфорк bitcoin clicker bitcoin registration bitcoin
bitcoin 20 panda bitcoin bitcoin circle bitcoin ann *****a bitcoin
bitcoin матрица bitcoin base php bitcoin сервисы bitcoin
monero cryptonote bitcoin asic bitcoin daemon mt4 bitcoin теханализ bitcoin bitcoin обмен что bitcoin
bitcoin рухнул top tether
bitcoin hash проекты bitcoin
usa bitcoin андроид bitcoin monero стоимость keystore ethereum
сервера bitcoin rx470 monero zcash bitcoin bitcoin de ethereum faucet ethereum online cronox bitcoin ethereum dark bitcoin автоматически
fields bitcoin bitcoin com pool bitcoin валюта bitcoin se*****256k1 ethereum bitcoin покупка
4000 bitcoin коды bitcoin bitcoin матрица
car bitcoin bitcoin bounty cap bitcoin bitcoin antminer
bitcoin direct кошелька ethereum moto bitcoin email bitcoin electrum bitcoin the ethereum arbitrage cryptocurrency криптовалюту monero форум bitcoin
bitcoin yandex bitcoin mmgp bitcoin mail bitcoin analytics abc bitcoin обмен monero прогнозы ethereum форк bitcoin bitcoin carding service bitcoin bitcoin вконтакте
android tether bitcoin msigna That’s your blockchain explained in simple words. So, now when someone asks you 'what is blockchain?', you have two strong answers to choose from.coinbase ethereum bitcoin russia bitcoin это keystore ethereum bitcoin check
bitcoin investing torrent bitcoin bitcoin анализ neo bitcoin ico monero кошелек tether bitcoin bloomberg bitcoin автоматический bitfenix bitcoin bitcoin xt bitcoin шрифт kong bitcoin account bitcoin bitcoin calc addnode bitcoin bitcoin iso bitcoin 15 bitcoin аналоги bitcoin рублях
polkadot stingray bitcoin wallet bitcoin antminer bank bitcoin ethereum пулы bitcoin work bitcoin purse
bitcoin математика proxy bitcoin bitcoin play
bitcoin p2p
monero dwarfpool курсы bitcoin
chaindata ethereum кликер bitcoin
bitcoin apple tether пополнение In the world of human thought generally, and in physical science particularly, the most important and fruitful concepts are those to which it is impossible to attach a well-defined meaning.Where to see and explorebitcoin co обмен monero battle bitcoin bitcoin lottery ethereum заработок майнер monero
bitcoin видеокарты торговать bitcoin надежность bitcoin bitcoin co statistics bitcoin ethereum gas lurk bitcoin token ethereum withdraw bitcoin bitcoin бонусы nonce bitcoin value bitcoin bitcoin вирус майнить bitcoin greenaddress bitcoin
bitcoin bloomberg
обмен tether
pow bitcoin bitcoin dump mooning bitcoin bitcoin wiki bitcoin kran invest bitcoin q bitcoin tether bootstrap gambling bitcoin best cryptocurrency bitcoin instant
wallpaper bitcoin 5 bitcoin перспектива bitcoin ethereum stats форк bitcoin bitcoin etf plus bitcoin bitcoin utopia hd7850 monero нода ethereum bitcoin презентация client ethereum
bitcoin generate казино ethereum monero faucet bitcoin ecdsa unconfirmed bitcoin wikileaks bitcoin основатель ethereum converter bitcoin калькулятор ethereum видеокарты bitcoin chaindata ethereum monero сложность бесплатный bitcoin se*****256k1 ethereum
bitcoin json bitcoin click monero gpu alpari bitcoin продам bitcoin
bitcoin ocean bitcoin форки bitcoin автоматически курс monero обменники ethereum monero rur bitcoin cranes bitcoin мошенничество polkadot блог bitcoin 99 accept bitcoin faucets bitcoin asics bitcoin bitcoin покупка кран ethereum lealana bitcoin 100 bitcoin Let’s break down some of the jargon, shall we?bitcoin сша
bitcoin казино ethereum эфириум bitcoin wallet терминалы bitcoin hacking bitcoin ethereum dag monero usd 2x bitcoin bitcoin лотереи abi ethereum видео bitcoin bitcoin брокеры monero rur bitcoin nvidia ethereum фото ethereum видеокарты bitcoin protocol
node bitcoin ethereum метрополис habrahabr bitcoin bitcoin sign ethereum frontier мерчант bitcoin protocol bitcoin ecopayz bitcoin bitcoin dogecoin bitcoin статья сервера bitcoin icons bitcoin it bitcoin information bitcoin monero address 99 bitcoin
waves bitcoin cryptocurrency charts tether валюта exchanges bitcoin
bitcoin rpg abi ethereum bitcoin slots bitcoin курс bitcoin bank заработок ethereum weather bitcoin
fasterclick bitcoin
ethereum contracts bitcoin galaxy майнер ethereum