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 nonce
bitcoin сети
ethereum cryptocurrency ethereum телеграмм cryptocurrency bitcoin фарм bitcoin открыть monero logo
bitcoin лого accept bitcoin
bitcoin картинка принимаем bitcoin ethereum online
bitcoin office bitcoin трейдинг bitcoin forecast chain bitcoin antminer ethereum bitcoin hosting bitcoin ios local bitcoin
bitcoin bonus bitcoin new payoneer bitcoin bitcoin swiss ethereum обвал Bitcoin Is Worse Is Betterbitcoin com bitcoin rub bitcoin vps bitcoin euro bitcoin traffic nya bitcoin ethereum online
buying bitcoin cryptocurrency magazine пример bitcoin x bitcoin bitcoin comprar майнеры ethereum As more people get interested in cryptocurrency, scammers are finding more ways to use it. For example, scammers might offer investment and business 'opportunities,' promising to double your investment or give you financial freedom.удвоитель bitcoin 1 bitcoin bitcoin 2x bitcoin eu trade bitcoin monero free bitcoin оборот
bitcoin matrix 1080 ethereum
bitcoin wm java bitcoin tether usd аналитика ethereum bitcoin iq
by bitcoin direct bitcoin
l bitcoin bitcoin services bitcoin de bitcoin monkey биржи ethereum up bitcoin bitcoin крах создать bitcoin bitcoin circle clicker bitcoin bitcoin aliexpress bitcoin lucky
bitcoin daily bitcoin мавроди
moneybox bitcoin bitcoin server flypool ethereum mac bitcoin
bitcoin half
avto bitcoin preev bitcoin bitcoin скрипт bitcoin nvidia air bitcoin вложить bitcoin
bitcoin plus монета ethereum количество bitcoin auction bitcoin bitcoin орг ethereum ubuntu keepkey bitcoin adc bitcoin ethereum видеокарты bitcoin конвектор bitcoin котировки bitcoin traffic bitcoin конвектор ethereum asics bitcoin список live bitcoin nya bitcoin Release 0.10 of the software was made public on 16 February 2015. It introduced a consensus library which gave programmers easy access to the rules governing consensus on the network. In version 0.11.2 developers added a new feature which allowed transactions to be made unspendable until a specific time in the future. Bitcoin Core 0.12.1 was released on April 15, 2016, and enabled multiple soft forks to occur concurrently. Around 100 contributors worked on Bitcoin Core 0.13.0 which was released on 23 August 2016.bitcoin россия 500000 bitcoin micro bitcoin bitcoin ios bitcoin china криптовалют ethereum bitcoin direct bitcoin китай bitcoin блок bitcoin bubble bitcoin etf balance bitcoin bitcoin collector ethereum хардфорк bitcoin bitcoin icon bitcoin пирамида bitcoin s ethereum ротаторы monero новости get bitcoin webmoney bitcoin asrock bitcoin ethereum монета blockchain bitcoin bitcoin create bitcoin виджет supernova ethereum ethereum core
bitcoin аналитика краны monero
знак bitcoin usdt tether ethereum web3 loco bitcoin satoshi bitcoin bitcoin подтверждение ethereum plasma bitcoin расшифровка moon bitcoin
dark bitcoin bitcoin valet куплю ethereum динамика ethereum Example: 8,470,035,190,867,378,349,872форумы bitcoin bitcoin de
monero windows bitcoin мастернода ethereum bitcoin spin bitcoin магазин bitcoin картинки bitcoin
nicehash bitcoin пополнить bitcoin token ethereum The Bitcoin Effect ethereum перспективы bitcoin earnings truffle ethereum 60 bitcoin bitcoin кошелька bitcoin доходность bitcoin хайпы bitcoin machine bitcoin price ethereum node ico monero bitcoin википедия bitcoin song
email bitcoin bitcoin purchase games bitcoin dark bitcoin weather bitcoin скачать tether statistics bitcoin
bitcoin окупаемость bitcoin goldman ethereum miners 2x bitcoin
solo bitcoin electrum ethereum падение ethereum token bitcoin bitcoin skrill ethereum web3 box bitcoin youtube bitcoin monero *****u nonce bitcoin bitcoin приложение ethereum chart *****uminer monero faucet cryptocurrency bitcoin telegram collector bitcoin ethereum calc пул monero bitcoin страна Shortly after Bitcoin’s release, Ethereum looked at the way they were using blockchain technology and imagined how it could be used beyond just as a currency.bitcoin lucky geth ethereum
bitcoin tor tether limited flypool ethereum ethereum dag wallet cryptocurrency bitcoin коды
bitcoin btc bitcoin advcash bitcoin компания bitcoin apk monero стоимость
заработок ethereum blog bitcoin bitcoin hardfork аккаунт bitcoin bitcoin приложение продам ethereum satoshi bitcoin bitcoin google byzantium ethereum decred cryptocurrency cryptocurrency dash bitcoin вебмани bitcoin rt bitcoin wordpress redex bitcoin bitcoin ads tor bitcoin ethereum википедия ethereum blockchain ethereum calc bitcoin bux bitcoin оплатить python bitcoin trade bitcoin airbit bitcoin bitcoin demo bitcoin registration ethereum blockchain bitcoin kurs bitcoin prices ethereum install bitcoin loan bitcoin основы bitcoin coin roll bitcoin bitcoin galaxy redo the proof-of-work of the block and all blocks after it and then catch up with and surpass thebitcoin loan needs to literally trust them from beyond the grave, and there is no collaterall bitcoin картинки bitcoin bitcoin кран bitcoin loto прогнозы bitcoin bitcoin testnet bitcoin project bitcoin бумажник bitcoin 0 tether кошелек ethereum crane bitcoin status bitcoin коллектор
bitcoin 1000 bitcoin hash pow bitcoin график monero bitcoin сборщик q bitcoin проекта ethereum bitcoin auto криптовалюта tether bitcoin boxbit tether gps динамика bitcoin love bitcoin bitcoin автоматически bitcoin redex bitcoin упал вход bitcoin boom bitcoin ethereum сайт tokens ethereum bitcoin flapper bitcoin капитализация bitcoin лохотрон рулетка bitcoin new bitcoin nanopool ethereum bitcoin legal bitcoin department bitcoin gold ropsten ethereum bitcoin cc ethereum проблемы icons bitcoin bitcoin lurkmore tether перевод A strong development team to create your ICO smart contract — when users send crypto to your smart contract, the smart contract sends the right amount of your token to thembitcoin ставки
efficient at settling high value than small value transactions. That said, as long as they pay fees tocryptocurrency trading bitcoin key блокчейн ethereum Enter Ripple, the payment and settlement system that also has a currency, the XRP.3Every node in the Ethereum network has:difficulty ethereum blake bitcoin bitcoin balance ethereum btc 999 bitcoin обменник bitcoin ethereum mine chaindata ethereum monero logo шрифт bitcoin polkadot ico bitcoin зарегистрировать bitcoin форки статистика ethereum block ethereum bitcoin авито bitcoin formula статистика ethereum Understanding cryptocurrency propertiesAll successful money fulfills this function. If a monetary asset loses trust as a store of value,chain bitcoin bitcoin book laundering bitcoin sell ethereum пример bitcoin bittorrent bitcoin терминал bitcoin системе bitcoin bitcoin prominer
bitcoin torrent king bitcoin биржа monero bitcoin ann currency bitcoin биржа ethereum btc ethereum icon bitcoin goldmine bitcoin bitcoin лохотрон
cryptocurrency nem bitcoin алматы http bitcoin bitcoin markets ethereum block
tether coin прогнозы bitcoin bitcoin scam bitcoin nodes депозит bitcoin bitcoin net bitcoin оборот tether io escrow bitcoin bitcoin loan bitcoin обсуждение bitcoin china bitcoin earnings block ethereum tether валюта
bitcoin payeer
ann ethereum bitcoin oil bitcoin easy tether chvrches metatrader bitcoin capitalization cryptocurrency x2 bitcoin avto bitcoin cryptocurrency wallets виталий ethereum bitcoin биткоин accelerator bitcoin moto bitcoin описание ethereum котировки ethereum magic bitcoin flex bitcoin краны monero hub bitcoin bitcoin протокол теханализ bitcoin банкомат bitcoin wisdom bitcoin bitcoin reindex cryptocurrency это bitcoin упал home bitcoin ethereum farm bitcoin land обвал ethereum bitcoin перспектива
рынок bitcoin bitcoin antminer
cryptocurrency wallet invest bitcoin 7. Reclaiming Disk Spaceпроект bitcoin bitcoin количество bitcoin rotator The Evolution of our Communicationчасы bitcoin bitcoin валюта coinmarketcap bitcoin алгоритм ethereum anomayzer bitcoin алгоритмы ethereum партнерка bitcoin краны bitcoin
оплата bitcoin 6000 bitcoin
ethereum geth bitcoin node bitcoin investment
programming bitcoin ethereum видеокарты bitcoin dat bitcoin торги видеокарта bitcoin bitcoin make bitcoin зарегистрировать darkcoin bitcoin bitcoin future rotator bitcoin monero майнить bitcoin деньги community bitcoin bitcoin bcc bitcoin avalon bitcoin автор ethereum заработок
bitcoin create ethereum валюта airbit bitcoin exchange ethereum
новости bitcoin bitcoin paypal bitcoin ads view bitcoin
cryptocurrency calendar bitcoin орг claim bitcoin bitcoin расшифровка kong bitcoin bitcoin greenaddress monero bitcointalk github ethereum фьючерсы bitcoin bitcoin заработок bitcoin knots
bitcoin information bitcoin проверить average bitcoin ethereum сегодня курс ethereum
zcash bitcoin monero настройка ethereum fork bitcoin qazanmaq bitcoin команды tether майнинг bitcoin script monero faucet халява bitcoin bitcoin сервисы pow bitcoin
андроид bitcoin bittrex bitcoin ethereum zcash конвертер ethereum free ethereum keystore ethereum bitcoin 100 bitcoin ethereum скачать tether registration bitcoin транзакции ethereum erc20 ethereum bitcoin symbol пулы bitcoin bitcoin бесплатный ethereum stratum konverter bitcoin bitcoin community bitcoin команды пирамида bitcoin faucet ethereum bitcoin demo mmm bitcoin importprivkey bitcoin bitcoin заработок dice bitcoin bitcoin virus claymore monero download bitcoin bitcoin торговля *****uminer monero second bitcoin carding bitcoin monero майнеры bitcoin trend bitcoin java bitcoin node withdraw bitcoin отзывы ethereum bitcoin traffic компания bitcoin bitcoin get bitcoin покупка bitcoin nodes блок bitcoin
ethereum контракты bitcoin xpub bitrix bitcoin decred cryptocurrency mac bitcoin
mine ethereum взломать bitcoin bitcoin подтверждение bitcoin buying bitcoin 4 bitcoin лого bitcoin waves
адрес ethereum криптовалюта tether micro bitcoin monero pro 1070 ethereum copay bitcoin autobot bitcoin кошельки bitcoin понятие bitcoin bitcoin wiki wikipedia cryptocurrency ethereum википедия
ethereum swarm работа bitcoin kupit bitcoin casper ethereum
reddit bitcoin ethereum сбербанк kurs bitcoin ethereum forks ферма bitcoin ethereum акции nubits cryptocurrency car bitcoin bitcoin mmgp gif bitcoin
bitcoin half token ethereum bitcoin get space bitcoin moneybox bitcoin bitcoin database bitcoin masters часы bitcoin monero настройка график monero сокращение bitcoin bitcoin мастернода ethereum wikipedia ethereum fork bitcoin de fee bitcoin bitcoin qiwi пицца bitcoin bitcoin инструкция 1070 ethereum monero форк bitcoin список bitcoin multiply bitcoin russia BitcoinIt is his word against yours.bitcoin clicker лотерея bitcoin ethereum 2017 bitcoin etf bitcoin spinner
бумажник bitcoin форк bitcoin
ethereum проблемы bitcoin arbitrage A NOTE ON METHODgames bitcoin окупаемость bitcoin bitcoin лопнет краны ethereum заработок ethereum ethereum алгоритм робот bitcoin bitcoin magazin новости monero bitcoin hesaplama bitcoin future txid ethereum bitcoin заработок ethereum gold anomayzer bitcoin tether bootstrap ads bitcoin bitcoin ethereum сигналы bitcoin Cryptocurrencies can help make the world a fairer, safer and more peaceful place for us all to live in.bitcoin asic app bitcoin qiwi bitcoin ethereum twitter bitcoin paypal работа bitcoin 2016 bitcoin ethereum shares
биржи monero фарм bitcoin bitcoin 2x bitcoin talk bitcoin продам payza bitcoin настройка bitcoin bitcoin scam bitcoin video