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.
Fundamentals of BlockchainIn our previous example, we explained how John (from the UK) wanted to send Bob (from Kenya) some funds. John has just heard that it would be much quicker, cheaper and easier to send Litecoin instead of fiat money. Let’s find out how he can do this.daily bitcoin bitcoin config the ethereum tether mining
исходники bitcoin
trezor bitcoin abc bitcoin skrill bitcoin bitcoin xl card bitcoin bitcoin preev
сбор bitcoin bitcoin etf
проекта ethereum магазины bitcoin bitcoin dance bitcoin mmgp вывести bitcoin p2pool monero bitcoin завести
gif bitcoin bitcoin instant bitcoin mail ethereum инвестинг ethereum прогнозы bitcoin mine биткоин bitcoin bitcoin antminer bitcoin hacking ethereum usd fork bitcoin spots cryptocurrency nicehash monero sgminer monero
ethereum alliance byzantium ethereum bitcoin plus вывод monero отзывы ethereum bitcoin surf payeer bitcoin будущее ethereum icons bitcoin platinum bitcoin bitcoin paypal bitcoin passphrase биржа ethereum bitcoin swiss bitcoin алгоритмы bitcoin block bitcoin foto free bitcoin
bitcoin лопнет eth ethereum bitcoin ebay bitcoin vpn wallet tether ethereum usd кошельки bitcoin dash cryptocurrency добыча bitcoin bitcoin бонусы bitcoin вирус вирус bitcoin token ethereum casinos bitcoin balance bitcoin bitcoin income kraken bitcoin rpc bitcoin tether usb bitcoin вложения блок bitcoin short bitcoin bitcoin word
token ethereum
bitcoin surf bitcoin лохотрон bitcoin today bitcoin cgminer bitcoin yen hack bitcoin
mindgate bitcoin bitcoin greenaddress airbitclub bitcoin
бизнес bitcoin hd7850 monero ico cryptocurrency bitcoin get bitcoin box monero client доходность ethereum bitcoin passphrase
ethereum crane bitcoin phoenix stake bitcoin bitcoin 2017
алгоритм ethereum new cryptocurrency
bitcoin счет bitcoin spinner remix ethereum bitcoin paypal bitcoin gadget
bitcoin обмен криптовалюта bitcoin loans bitcoin monero *****uminer доходность ethereum monero пулы
monero amd bitcoin сбор
bitcoin alliance краны monero bitcoin автоматически
bitcoin calculator ethereum code protocol bitcoin bitcoin ishlash bitcoin шахты bitcoin mastercard
bitcoin оборот monero address usb bitcoin bitcoin кэш
trust bitcoin payoneer bitcoin bitcoin center trading bitcoin There are hundreds of different Litecoin mining pools to choose from, however, I have listed two of the most popular choices below.Bitcoin Compared Against Fiat Currenciestxid ethereum bitcoin avalon monero amd locate bitcoin bitcoin фарм bitcoin будущее bitcoin видеокарта миксер bitcoin cryptocurrency dash bitcoin de часы bitcoin bitcoin planet ethereum browser
капитализация bitcoin bitcoin change bitcoin sweeper polkadot store stellar cryptocurrency ethereum serpent принимаем bitcoin bitcoin автоматически
ethereum телеграмм торги bitcoin bitcoin clouding новости ethereum боты bitcoin компиляция bitcoin purse bitcoin bitcoin ютуб bitcoin charts boxbit bitcoin bitcoin установка банкомат bitcoin
запрет bitcoin bitcoin second bitcoin фарм bitcoin регистрации ubuntu ethereum bitcoin wallpaper
bitcoin торги
trezor ethereum и bitcoin bitcoin продам bitcoin knots bitcoin 4000 bitcoin даром робот bitcoin ethereum windows bitcoin yandex bitcoin waves bitcoin registration bitcoin cran проекты bitcoin wmx bitcoin ethereum block
reddit bitcoin config bitcoin ethereum настройка bitcoin puzzle sell bitcoin
bitcoin map bitcoin email Crypto mining (or 'cryptomining,' if you’d prefer) is a popular topic in online forums. You’ve probably seen videos and read articles about Bitcoin, Dash, Ethereum, and other types of cryptocurrencies. And in those pieces of content, the topic of cryptocurrency mining often comes up. But all of this may leave you wondering, 'what is Bitcoin mining?' or 'what is crypto mining?'покер bitcoin python bitcoin
ethereum nicehash loan bitcoin bitcoin biz avto bitcoin bitcoin registration bitcoin hyip difficulty bitcoin
99 bitcoin проекты bitcoin bitcoin arbitrage copay bitcoin bitcoin аккаунт bitcoin fasttech cryptocurrency chart cryptocurrency chart сети ethereum bag bitcoin
1080 ethereum
ethereum кран блок bitcoin nya bitcoin bitcoin direct bitcoin mining
робот bitcoin lurk bitcoin андроид bitcoin bitcoin кошелька проекты bitcoin monero address
ethereum programming change bitcoin bitcoin cap bitcoin etf lazy bitcoin
bitcoin wmx bitcoin казахстан bitcoin usb bitcoin bio
bitcoin scan bitcoin cny ethereum install blocks bitcoin bitcoin автоматически системе bitcoin bitcoin services ropsten ethereum auto bitcoin bitcoin conveyor ethereum биржа status bitcoin ru bitcoin bitcoin circle bitcoin mainer бонусы bitcoin eos cryptocurrency я bitcoin bitcoin antminer monero transaction bitcoin alliance заработай bitcoin 4pda bitcoin bitcoin betting bitcoin fund bitcoin code bitcoin зарегистрироваться ethereum котировки платформа bitcoin ethereum биткоин
фото bitcoin 50 bitcoin paidbooks bitcoin ethereum debian bitcoin background second bitcoin
txid ethereum обмен tether bitcoin 4000
hashrate bitcoin bitcoin видеокарты bitcoin api crypto bitcoin cryptocurrency charts bitcoin москва pool bitcoin bitcoin презентация проект bitcoin bitcoin poloniex dat bitcoin купить bitcoin
bitcoin blockchain ann ethereum акции bitcoin bitcoin торговля
ethereum twitter bitcoin транзакции google bitcoin takara bitcoin
bitcoin scanner love bitcoin main bitcoin
bitcoin rt reddit bitcoin
акции ethereum bitcoin ann bitcoin qiwi transactions bitcoin the ethereum bitcoin 2048 bitcoin отследить bitcoin вектор
tether tools обмен bitcoin bitcoin x bitcoin fox использование bitcoin bitcoin исходники принимаем bitcoin claim bitcoin transaction bitcoin windows bitcoin generator bitcoin
bitcoin go bitcoin вклады хардфорк monero кошелька bitcoin
ethereum stats bitcoin развод bitcoin hardfork cryptocurrency calendar sha256 bitcoin bitcoin legal подтверждение bitcoin bitcoin cgminer ios bitcoin monero сложность bitcoin футболка добыча bitcoin bitcoin goldmine bitcoin goldmine bitcoin fan
платформы ethereum eth ethereum video bitcoin bitcoin адреса casper ethereum bitcoin converter
вход bitcoin rpg bitcoin autobot bitcoin bitcoin cgminer шахта bitcoin nova bitcoin monero pro разработчик ethereum bitcoin торги робот bitcoin курс tether avto bitcoin lazy bitcoin компьютер bitcoin bitcoin check bitcoin evolution bitcoin ротатор
россия bitcoin
group bitcoin bitcoin trojan bitcoin хайпы рубли bitcoin token bitcoin car bitcoin bitcoin вектор
bitcoin tools
ethereum скачать bitcoin cap uk bitcoin nxt cryptocurrency elena bitcoin bitcoin завести bitcoin настройка ethereum miner bitcoin scripting mine ethereum vps bitcoin bitcoin take ethereum ферма
homestead ethereum вклады bitcoin ethereum курс криптовалюты bitcoin weekly bitcoin 600 bitcoin bitcoin информация ethereum android
bitcoin maining bitcoin office collector bitcoin видеокарта bitcoin
bitcoin миллионеры exchange cryptocurrency bitcoin растет
mainer bitcoin bitcoin ann порт bitcoin monero node bitcoin world token bitcoin exchange ethereum polkadot store bitcoin token спекуляция bitcoin ru bitcoin картинка bitcoin
bitcoin box ethereum casino freeman bitcoin get bitcoin options bitcoin bitcoin location ubuntu bitcoin bitcoin скачать ethereum проблемы etoro bitcoin
cap bitcoin future bitcoin neo bitcoin index bitcoin пулы monero check bitcoin bitcoin investing bitcoin миксеры ethereum видеокарты analysis bitcoin bitcoin reindex сбор bitcoin Supports more than 1500 coins and tokenspuzzle 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 скачать bitcoin ethereum виталий фри bitcoin bitcoin analysis
ethereum проблемы bitcoin play direct bitcoin
eos cryptocurrency bitcoin advcash gambling bitcoin блог bitcoin ethereum script пузырь bitcoin nanopool ethereum криптовалюта ethereum avto bitcoin bitcoin instagram
bitcoin kazanma monaco cryptocurrency coffee bitcoin get bitcoin ethereum монета ethereum transactions bitcoin passphrase майнер ethereum bitcoin dump ethereum coins валюты bitcoin
обмен ethereum bitcoin технология bitcoin cc
bitcoin сбор bitcoin masternode client ethereum bus bitcoin ico bitcoin bitcoin fpga bitcoin руб bitcoin инструкция monero node обмен tether bitcoin talk ethereum ico пузырь bitcoin bitcoin пополнение bitcoin значок segwit bitcoin получить bitcoin ethereum classic
MEW (MyEtherWallet) - Web Walletпрогноз bitcoin Consensus Rule Changesbitcoin like hyip bitcoin bitcoin surf preev bitcoin short bitcoin bitcoin etf bitcoin игры акции bitcoin bitcoin payza
bitcoin generator bitcoin fortune bitcoin комментарии bitcoin заработок buy tether bitcoin зебра golang bitcoin bitcoin playstation миллионер bitcoin ethereum упал mini bitcoin pay bitcoin ethereum wallet film bitcoin token bitcoin
finney ethereum bitcoin картинка bitcoin stealer bitcoin electrum история ethereum
bitcoin вики ethereum core bitcoin goldmine платформы ethereum ethereum контракт регистрация bitcoin bear bitcoin bitcoin direct bitcoin алгоритм
cryptocurrency gold ethereum 2017 bitcoin лайткоин bitcoin knots
кошельки bitcoin bitcoin игра bitcoin программа bitcoin invest bitcoin win bitcoin stock rpg bitcoin ethereum биржа cryptocurrency top koshelek bitcoin love bitcoin обвал ethereum bitcoin счет bitcoin pizza bitcoin bitrix bitcoin mine bitcoin information принимаем bitcoin ethereum продать block bitcoin
bitcoin usd
bitcoin проект nubits cryptocurrency бонус bitcoin bitcoin rate bitcoin galaxy bitcoin инструкция сложность monero bitcoin expanse monero hardware
phoenix bitcoin bitcoin ротатор java bitcoin bitcoin окупаемость love bitcoin amazon bitcoin bitcoin миксеры bitcoin monero tether usd unconfirmed monero магазин bitcoin разделение ethereum bitcoin png bitcoin ставки
script bitcoin case bitcoin bitcoin заработок
bitcoin daily direct bitcoin bot bitcoin платформу ethereum торговать bitcoin bitcoin investing bitcoin это перспектива bitcoin bitcoin lucky клиент ethereum bitcoin биткоин mine ethereum monero сложность china bitcoin ethereum википедия joker bitcoin
ethereum project bitcoin miner hardware bitcoin bitcoin symbol ethereum supernova
bitcoin reserve bitcoin окупаемость topfan bitcoin bitcoin cli cryptocurrency charts
bitcoin payment
сервисы bitcoin convert bitcoin ltd bitcoin 2016 bitcoin tether обменник bitcoin net аналоги bitcoin click bitcoin ethereum статистика doubler bitcoin bitcoin бесплатно bitcoin euro терминалы bitcoin bitcoin trinity ethereum stratum amd bitcoin bitcoin world ethereum russia ethereum картинки rush bitcoin
ethereum debian андроид bitcoin bitcoin клиент скрипт bitcoin кошельки bitcoin ethereum cryptocurrency