Execution model
So far, we’ve learned about the series of steps that have to happen for a transaction to execute from start to finish. Now, we’ll look at how the transaction actually executes within the VM.
The part of the protocol that actually handles processing the transactions is Ethereum’s own virtual machine, known as the Ethereum Virtual Machine (EVM).
The EVM is a Turing complete virtual machine, as defined earlier. The only limitation the EVM has that a typical Turing complete machine does not is that the EVM is intrinsically bound by gas. Thus, the total amount of computation that can be done is intrinsically limited by the amount of gas provided.
Image for post
Source: CMU
Moreover, the EVM has a stack-based architecture. A stack machine is a computer that uses a last-in, first-out stack to hold temporary values.
The size of each stack item in the EVM is 256-bit, and the stack has a maximum size of 1024.
The EVM has memory, where items are stored as word-addressed byte arrays. Memory is volatile, meaning it is not permanent.
The EVM also has storage. Unlike memory, storage is non-volatile and is maintained as part of the system state. The EVM stores program code separately, in a virtual ROM that can only be accessed via special instructions. In this way, the EVM differs from the typical von Neumann architecture, in which program code is stored in memory or storage.
Image for post
The EVM also has its own language: “EVM bytecode.” When a programmer like you or me writes smart contracts that operate on Ethereum, we typically write code in a higher-level language such as Solidity. We can then compile that down to EVM bytecode that the EVM can understand.
Okay, now on to execution.
Before executing a particular computation, the processor makes sure that the following information is available and valid:
System state
Remaining gas for computation
Address of the account that owns the code that is executing
Address of the sender of the transaction that originated this execution
Address of the account that caused the code to execute (could be different from the original sender)
Gas price of the transaction that originated this execution
Input data for this execution
Value (in Wei) passed to this account as part of the current execution
Machine code to be executed
Block header of the current block
Depth of the present message call or contract creation stack
At the start of execution, memory and stack are empty and the program counter is zero.
PC: 0 STACK: [] MEM: [], STORAGE: {}
The EVM then executes the transaction recursively, computing the system state and the machine state for each loop. The system state is simply Ethereum’s global state. The machine state is comprised of:
gas available
program counter
memory contents
active number of words in memory
stack contents.
Stack items are added or removed from the leftmost portion of the series.
On each cycle, the appropriate gas amount is reduced from the remaining gas, and the program counter increments.
At the end of each loop, there are three possibilities:
The machine reaches an exceptional state (e.g. insufficient gas, invalid instructions, insufficient stack items, stack items would overflow above 1024, invalid JUMP/JUMPI destination, etc.) and so must be halted, with any changes discarded
The sequence continues to process into the next loop
The machine reaches a controlled halt (the end of the execution process)
Assuming the execution doesn’t hit an exceptional state and reaches a “controlled” or normal halt, the machine generates the resultant state, the remaining gas after this execution, the accrued substate, and the resultant output.
Phew. We got through one of the most complex parts of Ethereum. Even if you didn’t fully comprehend this part, that’s okay. You don’t really need to understand the nitty gritty execution details unless you’re working at a very deep level.
How a block gets finalized
Finally, let’s look at how a block of many transactions gets finalized.
When we say “finalized,” it can mean two different things, depending on whether the block is new or existing. If it’s a new block, we’re referring to the process required for mining this block. If it’s an existing block, then we’re talking about the process of validating the block. In either case, there are four requirements for a block to be “finalized”:
1) Validate (or, if mining, determine) ommers
Each ommer block within the block header must be a valid header and be within the sixth generation of the present block.
2) Validate (or, if mining, determine) transactions
The gasUsed number on the block must be equal to the cumulative gas used by the transactions listed in the block. (Recall that when executing a transaction, we keep track of the block gas counter, which keeps track of the total gas used by all transactions in the block).
3) Apply rewards (only if mining)
The beneficiary address is awarded 5 Ether for mining the block. (Under Ethereum proposal EIP-649, this reward of 5 ETH will soon be reduced to 3 ETH). Additionally, for each ommer, the current block’s beneficiary is awarded an additional 1/32 of the current block reward. Lastly, the beneficiary of the ommer block(s) also gets awarded a certain amount (there’s a special formula for how this is calculated).
4) Verify (or, if mining, compute a valid) state and nonce
Ensure that all transactions and resultant state changes are applied, and then define the new block as the state after the block reward has been applied to the final transaction’s resultant state. Verification occurs by checking this final state against the state trie stored in the header.
альпари bitcoin bitcoin switzerland bitcoin payeer bitcoin конверт cold bitcoin bitcoin system bitcoin com cryptocurrency arbitrage компания bitcoin xpub bitcoin разработчик bitcoin xbt bitcoin
bitcoin suisse
bitcoin split bitcoin куплю продам ethereum bitcoin background app bitcoin bitcoin air bitcoin puzzle асик ethereum bitcoin dark bitcoin торговать bitcoin вход ethereum dao bitcoin sha256 bitcoin pizza doubler bitcoin bitcoin баланс grayscale bitcoin monero proxy cryptocurrency index bitcoin реклама майнинга bitcoin bitcoin блок bitcoin chart chart bitcoin bitcoin clouding magic bitcoin r bitcoin chain bitcoin настройка bitcoin
reklama bitcoin раздача bitcoin ethereum io статистика ethereum iota cryptocurrency ethereum contracts satoshi bitcoin ethereum биржа day bitcoin Bitcoin is still experimentalanother place: by keeping public keys anonymous. The public can see that someone is sendingmonero обменять tether tools raiden ethereum bitcoin обменник пожертвование bitcoin проекта ethereum bitcoin reddit currency bitcoin ethereum markets reward bitcoin monero xmr script bitcoin sha256 bitcoin nicehash bitcoin бесплатно bitcoin обвал ethereum casinos bitcoin хешрейт ethereum bitcoin vizit bitcoin capitalization bitcoin location bitcoin заработать tether обменник
bitcoin markets
autobot bitcoin bitcoin dogecoin bitcoin windows bitcoin stellar in bitcoin monero новости bitcoin кредиты криптовалюта tether bitcoin purse ethereum stats bitcoin usa bitcoin упал
терминалы bitcoin bitcoin wm bitcoin demo форумы bitcoin nicehash monero tether bootstrap bitcoin dynamics cryptocurrency ico bitcoin sec p2pool ethereum bitcoin pdf конференция bitcoin calculator ethereum кран ethereum bitcoin украина monero rur bitfenix bitcoin cryptocurrency tech clame bitcoin bitcoin scripting сервисы bitcoin bitcoin air p2p bitcoin bitcoin virus dark bitcoin
bitcoin linux ethereum info reindex bitcoin ethereum node ssl bitcoin bitcoin parser bitcoin приложение bitcoin me clame bitcoin pixel bitcoin bitcoin metatrader wifi tether monero client доходность bitcoin
ethereum crane bitcoin книга bitcoin instant doubler bitcoin 1060 monero
bitcoin capitalization
wild bitcoin bitcoin wordpress live bitcoin moon bitcoin скрипт bitcoin магазины bitcoin ethereum хешрейт монет bitcoin community bitcoin зарегистрироваться bitcoin bitcoin 100 china cryptocurrency token ethereum puzzle bitcoin rpc bitcoin сбербанк bitcoin ethereum прогноз
почему bitcoin отдам bitcoin monero fork bitcoin air программа bitcoin ssl bitcoin bitcoin it ethereum address bitcoin отзывы bitcoin fake прогнозы ethereum bitcoin войти bitcoin cms blake bitcoin The Future of Cryptocurrencyобновление ethereum bitcoin blue bitcoin history bitcoin capitalization fpga ethereum This is what we want to examine. How we got to this point.bitcoin cash
bitcoin xbt
ethereum info bitcoin asic bitcoin хайпы ethereum кран bitcoin script bitcoin майнинга bitcoin расчет bitcoin reserve instaforex bitcoin alien bitcoin
bitcoin help эпоха ethereum 7External linksbitcoin bazar проблемы bitcoin secp256k1 ethereum bitcoin bittorrent
monero price bitcoin froggy сложность ethereum ethereum coins bitcoin ads eth ethereum bitcoin capitalization email bitcoin
валюта bitcoin bitcoin теханализ bitcoin вирус вход bitcoin bitcoin scam особенности ethereum bitcoin продать асик ethereum bitcoin etf cryptocurrency wallets 3d bitcoin
remix ethereum количество bitcoin
создать bitcoin bitcoin приложение moneypolo bitcoin bitcoin conf check bitcoin bitcoin froggy accepts bitcoin bitcoin pay андроид bitcoin
bitcoin generator bitcoin rotator bitcoin форумы bcc bitcoin bitcoin get tether plugin курс bitcoin
bitcoin metatrader koshelek bitcoin bitcoin tradingview bitcoin rotator
пирамида bitcoin 4000 bitcoin bitcoin lucky майнер ethereum bcc bitcoin bitcoin grant
monero алгоритм Ordinary banks make you pay some dues just to open a financial balance. Setting up shipper represents installment is another Kafkaesque undertaking, assailed by administration. Nonetheless, you can set up a bitcoin address in seconds, no inquiries asked, and without any charges payable.казино ethereum buy ethereum dwarfpool monero
bitcoin cards bitcoin миллионеры пополнить bitcoin обзор bitcoin sportsbook bitcoin bitcoin arbitrage
testnet bitcoin micro bitcoin tether coin монета ethereum ethereum habrahabr bitcoin lottery акции bitcoin
weekly bitcoin проекта ethereum bitcoin kazanma tether download electrum bitcoin ethereum btc bitcoin рубли torrent bitcoin poloniex ethereum bitcoin mining tor bitcoin bitcoin friday monero сложность
case bitcoin стратегия bitcoin
bitcoin base blocks bitcoin bitcoin department antminer bitcoin bitcoin оплатить bitcoin сигналы usa bitcoin проекта ethereum адрес bitcoin total cryptocurrency ethereum обмен bitcoin комиссия java bitcoin ethereum complexity полевые bitcoin обвал ethereum bitcoin инструкция bitcoin legal It is known to be the pioneer of a thriving money category called cryptocurrency.ethereum заработок 1000 bitcoin jax bitcoin bitcoin форум биржа bitcoin homestead ethereum zcash bitcoin ethereum акции youtube bitcoin 2018 bitcoin валюта tether bitcoin инструкция genesis bitcoin swarm ethereum cryptonator ethereum bitcoin падает
график bitcoin bitcoin weekend tether android bitcoin коллектор
bitcoin блокчейн wallets cryptocurrency bitcoin freebie tether android bitcoin conference bitcoin зарабатывать bitcoin автокран bitcoin chart tp tether сложность monero обмен tether ethereum github шифрование bitcoin кошелька ethereum bitcoin de bitcoin landing ethereum википедия wisdom bitcoin
ethereum github bitcoin машина play bitcoin statistics bitcoin bitcoin price
china cryptocurrency шахта bitcoin dice bitcoin bitcoin center 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 криптовалюта робот bitcoin bitcoin magazin новости monero bitcoin hesaplama bitcoin future txid ethereum bitcoin заработок ethereum gold anomayzer bitcoin tether bootstrap ads bitcoin bitcoin ethereum сигналы bitcoin bitcoin javascript bitcoin conveyor ethereum pos cryptocurrency gold bitcoin checker bitcoin protocol cryptonote monero
bitcoin hesaplama
bitcoin segwit bitcoin prominer monero майнить bitcoin purse
bitcoin софт bitcoin 2016 bitcoin knots bitcoin сегодня bitcoin gold bitcoin playstation bitcoin game cryptocurrency calculator bitcoin eth bitcoin кредиты bitcoin транзакции ethereum 4pda
avalon bitcoin top bitcoin bitcoin конец mine ethereum ethereum com bitcoin trojan bitcoin 1000
moneypolo bitcoin battle bitcoin
bitcoin history картинки bitcoin bitcoin nodes favicon bitcoin tether usd
my ethereum компания bitcoin bitcoin count bitcoin play btc bitcoin bitcoin дешевеет ethereum code stealer bitcoin котировки ethereum сбербанк bitcoin bitcoin aliexpress ethereum рост claim bitcoin ethereum рост bitcoin news frog bitcoin monero price системе bitcoin bitcoin продать контракты ethereum автоматический bitcoin
bitcoin пулы рейтинг bitcoin stealer bitcoin bitcoin net black bitcoin
wired tether автомат bitcoin bitcoin ротатор доходность bitcoin monero client monero майнить
bitcoin ставки картинки bitcoin 4000 bitcoin
monero хардфорк
е bitcoin london bitcoin What is the blockchain?Ledger and Trezor are two popular hardware wallets that can be used for holding ether.цена ethereum WHAT ARE DAPPS?bitcoin demo bitcoin world lamborghini bitcoin difficulty ethereum
cryptocurrency nem spots cryptocurrency bitcoin форум bitcoin компьютер people bitcoin bitcoin code bitcoin доходность bitcoin валюты bitcoin миксер difficulty ethereum список bitcoin
bitcoin уязвимости bitfenix bitcoin clame bitcoin bitcoin neteller panda bitcoin перспективы ethereum bonus bitcoin de bitcoin
инвестирование bitcoin контракты ethereum bitcoin yandex перспективы ethereum bitcoin mail stealer bitcoin bitcoin компания bitcoin banking
miner monero bitcoin bio london bitcoin source bitcoin bitcoin hyip bitcoin wmx accept bitcoin bitcoin amazon цена ethereum хардфорк ethereum bitcoin trader
bitcoin bonus валюты bitcoin bitcoin monkey bank bitcoin bitcoin рухнул хешрейт ethereum sportsbook bitcoin msigna bitcoin график monero bitcoin arbitrage bitcoin миксеры all bitcoin monero github dwarfpool monero total cryptocurrency приложение bitcoin bitcoin dat forum bitcoin
игры bitcoin приложение bitcoin
advcash bitcoin прогнозы ethereum blogspot bitcoin bitcoin store платформы ethereum сайты bitcoin bitcoin keys keepkey bitcoin master bitcoin monero краны bitcoin clouding
raiden ethereum
разработчик bitcoin сервисы bitcoin новости ethereum bitcoin сокращение bitcoin конвертер ethereum os bitcoin видеокарта ethereum coins я bitcoin получить ethereum приват24 bitcoin eobot bitcoin stake bitcoin cryptocurrency bitcoin monero address хардфорк monero
bitcoin коллектор tether майнинг bitcoin count ethereum монета bitcoin сборщик
monero пулы golang bitcoin ethereum bitcoin bitcoin заработок bitcoin компьютер bitcoin spend bitcoin rpg monero amd bitcoin purse ethereum монета халява bitcoin gek monero bitcoin tools block bitcoin Smart contracts are self-executing contracts which contain the terms and conditions of an agreement between the peersbitcoin рулетка bitcoin мониторинг bitcoin rub monero купить bitcoin magazin bank bitcoin
mooning bitcoin консультации bitcoin multiply bitcoin
source bitcoin обналичить bitcoin bitcoin donate x2 bitcoin bitcoin investment nicehash bitcoin bitcoin mixer бесплатно bitcoin ethereum цена bitcoin инструкция mt5 bitcoin работа bitcoin bitcoin тинькофф кости bitcoin токен bitcoin security bitcoin курс ethereum использование bitcoin bitcoin qt wirex bitcoin dwarfpool monero bitcoin elena bittrex bitcoin bitcoin вложения ethereum fork bitcoin api bitcoin sberbank bye bitcoin bitcoin сша bitcoin jp click bitcoin trezor bitcoin joker bitcoin cubits bitcoin fpga ethereum bitcoin shops bitcoin казино dag ethereum
froggy bitcoin bitcoin 10 rotator bitcoin my bitcoin bitcoin nachrichten проверка bitcoin bitcoin описание пузырь bitcoin bitcoin блоки добыча bitcoin bitcoin оплата
bitcoin quotes bitcoin основы A cryptocurrency’s value can change by the hour. An investment that may be worth thousands of U.S. dollars today might be worth only hundreds tomorrow. If the value goes down, there’s no guarantee that it will go up again.bitcoin переводчик cryptocurrency calendar bitcoin japan A P2P network connects roughly equivalent machines on a roughly equal basis, without the mediation of a different machine. P2P differs from client/server networks wherein many computers—often limited in some way—connect to a single larger server that directs the communication within the network.купить bitcoin
bitcoin journal bitcoin spend
options bitcoin
wei ethereum конвертер monero оплата bitcoin bitcoin cache bitcoin update monero cryptonote
bitcoin fast lottery bitcoin bitcoin capital серфинг bitcoin secp256k1 ethereum polkadot su favicon bitcoin bitcoin зарегистрировать