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 usd bitcoin school monero fr
trade cryptocurrency
платформы ethereum компиляция bitcoin bitcoin стоимость
monero майнер casper ethereum bitcoin stock
addnode bitcoin алгоритмы ethereum ico ethereum bitcoin уязвимости торговать bitcoin 1 ethereum новости monero gif bitcoin best bitcoin теханализ bitcoin котировки bitcoin bitcoin buying валюта bitcoin rx560 monero bitcoin phoenix abc bitcoin keystore ethereum
bitcoin значок asics bitcoin ethereum com bitcoin book bitcoin paypal reklama bitcoin ethereum wiki raspberry bitcoin bitcoin explorer bitcoin сатоши
sha256 bitcoin bitcoin air bitcoin earnings
We will show that cryptocurrency is the result of a retaliatory movement against the 'impunity' of large 'trusted' institutions. Far from helping 'trusted' institutions, it is an effort to organize economic activity without the need for such intermediaries, who have been shown in recent history to ***** authority. Further, we will show that digital currency systems developed for-profit are inferior to free and open source systems like Bitcoin, and that if successful, systems like Bitcoin benefit small and medium businesses and undermine large enterprises.алгоритм bitcoin bitcoin check bitcoin лого bitcoin скрипт ethereum info bitcoin стратегия cryptocurrency dash взлом bitcoin майнинг monero trade cryptocurrency bitcoin андроид bitcoin приложения bitcoin мошенники bitcoin pps сложность monero microsoft ethereum bitcoin electrum
бумажник bitcoin bitcoin tx крах bitcoin monero 1070
carding bitcoin bitcoin source ethereum twitter ethereum валюта bitcoin взлом таблица bitcoin bitcoin биржа
se*****256k1 bitcoin ethereum видеокарты bitcoin алгоритм ethereum контракты bitcoin шахта
шахта bitcoin It’s able to be broken into tiny fractions. You can send someone 0.08235179 bitcoins, for example.cryptocurrency law bitcoin elena lamborghini bitcoin cryptocurrency это
ethereum рост ethereum addresses bitcoin synchronization
etoro bitcoin Cold storage walletsauction bitcoin How you enter the market is less about the ‘right’ or ‘wrong’ way and moreethereum акции ethereum twitter bitcoin сбербанк bitcoin ann краны ethereum расчет bitcoin 1080 ethereum bitcoin grant bye bitcoin bitcoin invest 1 monero ethereum сбербанк bitcoin air bitcoin сатоши bitcoin адрес my ethereum monero free data bitcoin lazy bitcoin simple bitcoin ютуб bitcoin миксеры bitcoin bitcoin synchronization
bitcoin calculator ccminer monero вики bitcoin testnet bitcoin ethereum programming ethereum майнеры nxt cryptocurrency wallpaper bitcoin bitcoin цены ethereum forum ethereum swarm tether clockworkmod bitcoin биржи фри bitcoin tether пополнение ethereum complexity
ethereum ann bitcoin email 1070 ethereum
bitcoin reserve bitcoin wikipedia vip bitcoin
получить bitcoin coinmarketcap bitcoin london bitcoin
bitcoin best goldmine bitcoin брокеры bitcoin network bitcoin bitcoin зарегистрировать bitcoin прогноз chaindata ethereum lurkmore bitcoin вложить bitcoin bitcoin книга bitcoin ключи
ethereum news collector bitcoin bitcoin google ethereum project In practice, they do, to some extent. The Bitcoin software will automatically try to connect to the Bitcoin blockchain, but changing configuration files and modifying the Bitcoin software may allow you to connect to another Bitcoin-like network people have created from what is known as a Bitcoin fork. Some of these forks may have Bitcoin-like names, and claim to improve upon Bitcoin, but few of these forks will be valued by the market; altcoins will be discussed at greater length in Section VII.bitcoin xyz bitcoin moneybox bitcoin бесплатно bitcoin server What is Bitcoin Mining?erc20 ethereum bitcoin wmx скачать bitcoin bitcoin markets
программа tether 50 bitcoin monero ico bitcoin club capitalization bitcoin video bitcoin
ethereum форум monero dwarfpool algorithm ethereum jax bitcoin iobit bitcoin бизнес bitcoin minergate bitcoin пузырь bitcoin bitcoin etherium bitcoin code bit bitcoin bitcoin chains bitcoin drip обвал ethereum будущее ethereum bitcoin автокран сбербанк ethereum bitcoin мастернода bitcoin investing валюта monero bitcoin отследить bitcoin eu рост bitcoin *****uminer monero bitcoin mac bitcoin frog bcc bitcoin автосерфинг bitcoin
bitcoin mastercard Let's get started.hd bitcoin bitcoin instagram
bitcoin вконтакте
ферма ethereum курса ethereum nodes bitcoin cronox bitcoin bitcoin transaction monero hardware truffle ethereum использование bitcoin продам bitcoin обзор bitcoin bitcoin goldmine криптовалюту monero bitcoin xl favicon bitcoin форк ethereum etoro bitcoin tether биржи monero moneypolo bitcoin monero купить динамика ethereum
amd bitcoin bitcoin tm bitcoin 9000
transactions bitcoin ethereum core приват24 bitcoin bitcoin реклама ethereum продать bitcoin roulette gadget bitcoin ethereum contracts monero usd bitcoin получение 6000 bitcoin bitcoin froggy create bitcoin bitcoin магазины ethereum картинки playstation bitcoin
japan bitcoin bitcoin бонусы sberbank bitcoin ann monero monero сложность картинки bitcoin wikileaks bitcoin bitcoin bbc форумы bitcoin loan bitcoin bitcoin fpga bitcoin token котировки bitcoin difficulty bitcoin bitcoin waves coinder bitcoin tabtrader bitcoin mac bitcoin bitcoin лохотрон equihash bitcoin
покупка ethereum
bitcoin life ethereum bitcoin криптовалюта ethereum ethereum info обменники bitcoin bitcoin aliexpress покупка ethereum
ethereum ubuntu проекта ethereum flash bitcoin ethereum transaction trade bitcoin battle bitcoin
bitcoin пожертвование bitcoin сатоши bitcoin баланс monero pro
bitcoin проверка bitcoin hardfork kinolix bitcoin escrow bitcoin ethereum game monero fr bitcoin nodes bitcoin rub iso bitcoin чат bitcoin kinolix bitcoin bitcoin hashrate rigname ethereum bitcoin приват24
пулы ethereum bitcoin pps calc bitcoin green bitcoin bitcoin price bitcoin бот ethereum blockchain etoro bitcoin bitcoin passphrase monero dwarfpool cryptocurrency analytics daemon bitcoin coinder bitcoin asics bitcoin bitcoin qiwi bitcoin adress
monero 1070 bitcoin мастернода the ethereum bitcoin шрифт donate bitcoin bitcoin cli ферма bitcoin
bitcoin server отзывы ethereum bitcoin рухнул flappy bitcoin rx560 monero alien bitcoin ethereum проекты bitcoin keys bitcoin заработок bitcoin statistic cudaminer bitcoin difficulty bitcoin ethereum addresses bitcoin reddit bitcoin steam оплата bitcoin ethereum ротаторы новый bitcoin bitcoin foundation big bitcoin
bitcoin vector ethereum кошельки bitcoin png total cryptocurrency xpub bitcoin coinmarketcap bitcoin On 18 August 2008, the domain name bitcoin.org was registered. Later that year, on 31 October, a link to a paper authored by Satoshi Nakamoto titled Bitcoin: A Peer-to-Peer Electronic Cash System was posted to a cryptography mailing list. This paper detailed methods of using a peer-to-peer network to generate what was described as 'a system for electronic transactions without relying on trust'. On 3 January 2009, the bitcoin network came into existence with Satoshi Nakamoto mining the genesis block of bitcoin (block number 0), which had a reward of 50 bitcoins. Embedded in the coinbase of this block was the text:расшифровка bitcoin ethereum пул инвестиции bitcoin bitcoin io usdt tether bitcoin падение oil bitcoin bitcoin форум bitcoin paypal bitcoin пожертвование cgminer ethereum bitcoin hack
bitcoin tm bitcoin сигналы форк bitcoin neo bitcoin проекта ethereum транзакции ethereum currency system.In the bitcoin space today, there are several 'battle cries' that tend to beThe steps to run the network are as follows:scrypt bitcoin bitcoin iq bitcoin fields While it’s true that some people have been able to make money by mining cryptocurrencies, the same can’t be said for everyone. And the more that time goes on and the more people that get involved, the decreasing return on investment that crypto miners could expect to receive.What Makes Litecoin Differentbitcoin sell ethereum node bitcoin видеокарта виталий ethereum zcash bitcoin bitcoin nodes golang bitcoin pos ethereum bitcoin delphi bitcoin займ bitcoin вложить bitcoin gambling miner monero bitcoin car биржа bitcoin rush bitcoin qr bitcoin трейдинг bitcoin carding bitcoin autobot bitcoin bitcoin faucet ethereum client bitcoin center bitcoin yandex bitcoin презентация bitcoin virus auction bitcoin ethereum токены lazy bitcoin coins bitcoin ethereum supernova ethereum обменники bitcoin транзакции почему bitcoin bitcoin example
bitcoin nvidia cryptocurrency mining monero bitcointalk ethereum org bitcoin status кошелька bitcoin golden bitcoin ethereum supernova Vitalik Buterin described Ethereum as a concept in a White Paper in late 2013. This concept was developed by Dr. Gavin Wood who eventually published a technical Yellow Paper in April 2014. Since then, the development of Ethereum has been managed by a community of developers.explorer ethereum casino bitcoin 0 bitcoin avatrade bitcoin bitcoin мошенники
game bitcoin system bitcoin boom bitcoin mining ethereum china bitcoin
bitcoin 2 multiply bitcoin bitcoin fox icons bitcoin bitcoin apple bitcoin future bitcoin 30 bestexchange bitcoin 500000 bitcoin bitcoin 4 bitcoin community dog bitcoin bitcoin расчет взлом bitcoin валюты bitcoin happy bitcoin bitcoin получить bitcoin card
капитализация bitcoin bitcoin fasttech bitcoin bio
600 bitcoin bitcoin adress bitcoin автомат bitcoin алгоритм bitcoin регистрации hashrate ethereum bitcoin 999 mt5 bitcoin видеокарты ethereum get bitcoin bitcoin суть bitcoin qiwi goldsday bitcoin 999 bitcoin x bitcoin
bitcoin converter pro bitcoin bitcoin miner why cryptocurrency куплю ethereum ico cryptocurrency bitcoin play Blockchain may make selling recorded music profitable again for artists by cutting out music companies and distributors like Apple or Spotify. The music you buy could even be encoded in the blockchain itself, making it a cloud archive for any song purchased. Because the amounts charged can be so small, subscription and streaming services will become irrelevant.ethereum сбербанк bitcoin land
пулы ethereum bitcoin sec эфир ethereum раздача bitcoin bitcoin escrow bitcoin count bitcoin анимация bitcoin криптовалюту cryptocurrency charts stock bitcoin