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.
Think of a block as a dataset that links the past to the present. Technically, individual blocks record changes to the overall state of bitcoin ownership within a given time interval. In aggregate, blocks record the entire history of bitcoin transactions as well as ownership of all bitcoin at any point in time. Only changes to the state are recorded in each passing block. How blocks are constructed, solved and validated is critical to the process of network consensus, and it also ensures that bitcoin maintains a fixed supply (21 million). Miners compete to construct and solve blocks that are then proposed to the rest of the network for acceptance. To simplify, think of the mining function as a continual process of validating history and clearing pending bitcoin transactions; with each block, miners add new transaction history to the blockchain and validate the entire history of the chain. It is through this process that miners secure the network; however, all network nodes then check the work performed by miners for validity, ensuring network consensus is enforced. More technically, miners construct blocks that represent data sets which include three critical elements (again simplifying):bitcoin майнить
flash bitcoin
monero fee ethereum contracts 60 bitcoin bitcoin keywords bitcoin central byzantium ethereum кредит bitcoin 50000 bitcoin обсуждение bitcoin panda bitcoin bitcoin spinner vpn bitcoin
bitcoin black alipay bitcoin bitcoin 1000 monero новости online bitcoin bitcoin гарант ethereum пул bitcoin ico bitcoin 10 bitcoin airbit cryptonight monero bitcoin loto 9000 bitcoin To start on this journey, first realize that bitcoin was created to specifically address a problem that exists with modern money. The founder of bitcoin set out to create a peer-to-peer digital cash system without the need for a trusted third-party, and a blockchain was one critical part of the solution. In practice, bitcoin (the currency) and its blockchain are interdependent. One does not exist without the other; bitcoin needs its blockchain to function and there would not be a functioning blockchain without a native currency (bitcoin) to properly incentivize resources to protect it. That native currency must be viable as a form of money because it is exclusively what pays for security, and it must have credible monetary properties in order to be viable. ethereum сайт ethereum myetherwallet арестован bitcoin bank bitcoin accepts bitcoin bitcoin free simple bitcoin обменник bitcoin
bitcoin комиссия
dwarfpool monero ethereum supernova работа bitcoin boxbit bitcoin
вложить bitcoin bitcoin магазин инвестирование bitcoin claim bitcoin bitcoin cost monero обменник coinbase ethereum bitcoin analysis decred ethereum
bitcoin signals
monero bitcointalk bitcoin 1000 bitcoin bitminer bitcoin cap bitcoin книга siiz bitcoin торрент bitcoin bitcoin monero ethereum nicehash bitcoin комиссия ethereum gold bitcoin trinity bitcoin json casper ethereum bubble bitcoin rise cryptocurrency asics bitcoin bitcoin delphi bitcoin москва
отследить bitcoin monero xmr amazon bitcoin platinum bitcoin bitcoin hype ethereum заработать бумажник bitcoin
сервера bitcoin отследить bitcoin best bitcoin
робот bitcoin клиент ethereum
bot bitcoin bitcoin check etoro bitcoin testnet bitcoin ico monero bitcoin hyip nubits cryptocurrency locate bitcoin ethereum calculator ethereum купить ethereum заработок ethereum продам bitcoin conference testnet bitcoin обмен monero понятие bitcoin auto bitcoin bitcoin код magic bitcoin box bitcoin bitcoin zona майнер monero monero fee автоматический bitcoin bitcoin tools ethereum dark While there have been instances of decentralized platforms being manipulated, these occasions are rare because blockchain platforms have to all agree to any changes. This means that a group of compromised computers would trigger suspicion because a vast number of other computers would have conflicting registers.bitcoin ne вложения bitcoin reindex bitcoin 8 bitcoin
999 bitcoin bitcoin rt accepts bitcoin bitcoin mt4 bitcoin инвестиции bitcoin пополнить
mini bitcoin
monero address bitcoin рейтинг
ethereum php bitcoin onecoin
капитализация bitcoin chain bitcoin bitcoin electrum
50 bitcoin
bitcoin knots monero nvidia coinder bitcoin
приложение tether bitcoin раздача
bitcoin metatrader
bitcoin fpga coinder bitcoin playstation bitcoin sell ethereum cryptonote monero nanopool ethereum bitcoin daemon bittorrent bitcoin
converter bitcoin анимация bitcoin bitcoin зарегистрироваться metropolis ethereum Mining is intensive, requiring big, expensive rigs and a lot of electricity to power them. And it's competitive. There's no telling what nonce will work, so the goal is to plow through them as quickly as possible.metal bitcoin bitcoin автосборщик gadget bitcoin mt5 bitcoin lamborghini bitcoin стратегия bitcoin cap bitcoin converter bitcoin china bitcoin форумы bitcoin reddit cryptocurrency bitcoin visa production cryptocurrency bitcoin tm bitcoin биржи monero fr bitcoin получить ann bitcoin bitcoin rt
bitcoin database bitcoin форекс ninjatrader bitcoin bitcoin установка
de bitcoin bitcoin virus vpn bitcoin обновление ethereum bitcoin legal bitcoin википедия пополнить bitcoin кошель bitcoin ethereum сложность токен ethereum майнинг ethereum kran bitcoin форумы bitcoin flappy bitcoin ava bitcoin bitcoin casino bitcoin 2020
monero hashrate bitcoin video bitcoin com bitcoin играть equihash bitcoin bitcoin bitrix monero transaction bitcoin рейтинг ethereum calculator kinolix bitcoin форум bitcoin bitcoin banking simplewallet monero ethereum перспективы bitcoin capital monero обмен
статистика ethereum ethereum 1070 usb tether yandex bitcoin bitcoin хайпы ethereum транзакции
купить monero bitcoin спекуляция bitcoin путин nem cryptocurrency инвестиции bitcoin chaindata ethereum bitcoin frog ethereum игра bitcoin tx
explorer ethereum monero js client ethereum bitcoin magazin habrahabr bitcoin forecast bitcoin bitcoin price сколько bitcoin ютуб bitcoin bitcoin логотип
delphi bitcoin bitcoin novosti currency bitcoin bitcoin transaction bitcoin course бесплатный bitcoin адрес ethereum day bitcoin bitcoin валюты ethereum контракты ubuntu bitcoin get bitcoin bitcoin подтверждение daemon monero bitcoin casascius
bitcoin ebay bitcoin биткоин bitcoin forum cryptonight monero bitcoin armory habr bitcoin ethereum wikipedia bitcoin скрипт кран ethereum get bitcoin bitcoin комбайн майнинга bitcoin ethereum course
50000 bitcoin bitcoin clouding all cryptocurrency bitcoin 2016 antminer ethereum bitcoin crane исходники bitcoin лотереи bitcoin accelerator bitcoin bitcoin пулы bitcoin обсуждение bitcoin анализ buy ethereum курс ethereum bitcoin скачать swiss bitcoin blocks bitcoin bitcoin 2020 bubble bitcoin iota cryptocurrency bitcoin 4096 исходники bitcoin
bitcoin 4000
ecdsa bitcoin эфир bitcoin casper ethereum ledger bitcoin shot bitcoin bittorrent bitcoin bitcoin redex bitcoin инструкция перевести bitcoin ethereum github стоимость ethereum blake bitcoin bitcoin accelerator принимаем bitcoin
ethereum ann
bitcoin фарм mine ethereum sha256 bitcoin flex bitcoin tradingview bitcoin ethereum обменять bitcoin book bitcoin мастернода bitcoin смесители арбитраж bitcoin best bitcoin bitcoin kurs 6000 bitcoin ethereum swarm iphone tether bitcoin 10 bitcoin прогнозы bitcoin update bitcoin биржи автомат bitcoin китай bitcoin bitcoin oil bitcoin wallet reverse tether bitcoin black криптовалюта monero jax bitcoin ethereum contracts
прогноз bitcoin bitcoin кэш moon bitcoin bitcoin развод
mixHash is a hash that, when combined with the nonce, proves that this block has carried out enough computationbitcoin лопнет ethereum bitcoin
ethereum chaindata bitcoin get ethereum contracts vk bitcoin bitcoin invest
обмен bitcoin ann monero accepts bitcoin ethereum info tera bitcoin bitcoin bux кошель bitcoin bitcoin monkey coingecko bitcoin bitcoin arbitrage bitcoin автоматически bitcoin capitalization ethereum foundation
игры bitcoin
bitcoin earn продам ethereum расчет bitcoin casascius bitcoin
bitcoin миллионеры bip bitcoin bitcoin reindex cryptocurrency gold bitcoin hosting linux ethereum bitcoin уязвимости mikrotik bitcoin яндекс bitcoin bitcoin оплата monero minergate
bitcoin coingecko
bitcoin roll p2pool ethereum ethereum это 1) Scarcitybitcoin tm rx580 monero tether обменник 'These proceedings may at first seem strange and difficult, but like all other steps which we have already passed over, will in a little time become familiar and agreeable: and until an independance is declared, the Continent will feel itself like a man who continues putting off some unpleasant business from day to day, yet knows it must be done, hates to set about it, wishes it over, and is continually haunted with the thoughts of its necessity.' – Thomas Paine, Common SenseBitcoin, Not Blockchainплатформ ethereum Say I tell three friends that I'm thinking of a number between 1 and 100, and I write that number on a piece of paper and seal it in an envelope. My friends don't have to guess the exact number, they just have to be the first person to guess any number that is less than or equal to the number I am thinking of. And there is no limit to how many guesses they get.ethereum txid bitcoin server panda bitcoin комиссия bitcoin putin bitcoin bitcoin minergate ethereum network
bitcoin информация динамика ethereum удвоитель bitcoin love bitcoin bitcoin автомат monero вывод bitcoin софт bitcoin китай icon bitcoin
bitcoin calc
депозит bitcoin js bitcoin bitcoin транзакции криптовалюты bitcoin перспектива bitcoin dog bitcoin проекты bitcoin трейдинг bitcoin
bitcoin презентация coinmarketcap bitcoin bitcoin бесплатные genesis bitcoin bitcoin информация bitcoin будущее space bitcoin data bitcoin coinmarketcap bitcoin bitcoin check bitcoin 4000 сети bitcoin bitcoin ферма bitcoin минфин china bitcoin unconfirmed bitcoin доходность ethereum bitcoin conveyor All cryptocurrencies are decentralized, which means that their value, in general, won't be affected negatively by any country's status or any international conflict. For example, if the United States entered a recession, the U.S. dollar would likely decrease in value but Bitcoin and other cryptocurrencies wouldn't necessarily be affected. That's because they're not tied to any political group or geographical area. This decentralization is partially why Bitcoin has become so popular in countries that are struggling financially, such as Venezuela and Ghana.Litecoin Mining Calculatorпродать ethereum Litecoin Blockchain Explorersbitcoin пополнить multisig bitcoin обменять monero прогнозы bitcoin cryptocurrency logo mikrotik bitcoin транзакции bitcoin ethereum упал ethereum pow bitcoin redex accepts bitcoin bitcoin valet asics bitcoin ethereum erc20 fire bitcoin bitcoin machine ethereum токен bitcoin bitrix casper ethereum importprivkey bitcoin platinum bitcoin ethereum обменять air bitcoin bitcoin инструкция
bitcoin jp investment bitcoin bitcoin valet кликер bitcoin bitcoin hyip
etoro bitcoin cryptocurrency nem bitcoin grafik ethereum faucet bye bitcoin bitcoin скрипт карты bitcoin
amazon bitcoin wikipedia cryptocurrency games bitcoin monero обменять ethereum usd bitcoin fan ethereum сбербанк bitcoin кликер bitcoin two bitcoin price bitcoin rate bitcoin grafik андроид bitcoin trade cryptocurrency