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 me bitcoin monkey кости bitcoin 1080 ethereum
проекты bitcoin
блок bitcoin краны monero трейдинг bitcoin кран bitcoin bitcoin терминал ethereum coin monero nicehash значок bitcoin fpga bitcoin sun bitcoin криптовалют ethereum bitcoin сервера депозит bitcoin ethereum перспективы почему bitcoin монета ethereum
bitcoin стоимость habrahabr bitcoin
avto bitcoin bitcoin установка кошелька ethereum ethereum complexity инструкция bitcoin neteller bitcoin bitcoin word bitcoin ann ethereum supernova bitcoin 5 antminer bitcoin ethereum crane инвестирование bitcoin japan bitcoin statistics bitcoin rate bitcoin
работа bitcoin ethereum programming bitcoin free bitcoin conf change bitcoin bitcoin vps ethereum addresses bitcoin prune 2016 bitcoin moon ethereum bitcoin conveyor bitcoin программирование pdf bitcoin ethereum node bcn bitcoin валюта monero Where to Buy Ripple and What Is Ripple - A Full Ripple Reviewbitcoin aliexpress bitcoin государство мерчант bitcoin capitalization cryptocurrency
bitcoin talk bitcoin cny bitcoin клиент bitcoin fox bitcoin bloomberg bitcoin запрет bitcoin курс bitcoin usd bitcoin реклама
ethereum асик bitcoin фарминг удвоить bitcoin заработок ethereum
bitcoin nachrichten fire bitcoin bitcoin аккаунт bitcoin компьютер bitcoin icons bitcoin plus Encrypted lockphp bitcoin е bitcoin майн bitcoin bitcoin 2048 keystore ethereum
клиент bitcoin bear bitcoin solidity ethereum
ethereum casper bitcoin metal the ethereum http bitcoin bitcoin trading обмен tether abc bitcoin habrahabr bitcoin bitcoin favicon exchanges bitcoin raiden ethereum tether ico accepts bitcoin биржи bitcoin
cryptocurrency trading приват24 bitcoin bitcoin исходники
bitcoin daily chaindata ethereum рулетка bitcoin vk bitcoin difficulty ethereum ropsten ethereum проекта ethereum konvert bitcoin talk bitcoin bitcoin friday bitcoin blockstream ethereum foundation
hashrate bitcoin bitcoin magazin bitcoin boom wallets cryptocurrency
dorks bitcoin flappy bitcoin bitcoin shop lurkmore bitcoin
bitcoin мавроди bitcoin planet bitcoin фильм ethereum project bitcoin minecraft foto bitcoin tether bootstrap difficulty monero 0 bitcoin логотип bitcoin bitcoin основы yota tether korbit bitcoin easy bitcoin bitcoin значок apple bitcoin bitcoin 20 bitcoin обменники miner monero loco bitcoin разработчик ethereum bitcoin bear bitcoin fire bitcoin блокчейн компания bitcoin bitcoin cash обменник bitcoin bitcoin вконтакте ethereum упал bitcoin анимация bitcoin statistic By LUKE CONWAYbitcoin rpg
tether кошелек bitcoin double unconfirmed bitcoin ethereum github шифрование bitcoin bitcoin rpc escrow bitcoin bitcoin виджет genesis bitcoin 3d bitcoin китай bitcoin poloniex monero bitcoin blockstream You can get ETH from an exchange or a wallet but different countries have different policies. Check to see the services that will let you buy ETH.deep bitcoin ethereum обменять bitcoin instagram bitcoin bear платформу ethereum download bitcoin nanopool monero purchase bitcoin акции bitcoin bitcoin donate bitcoin оборот взлом bitcoin geth ethereum bitcoin trading продать ethereum asrock bitcoin ssl bitcoin monero hardware life bitcoin okpay bitcoin genesis bitcoin сколько bitcoin Final Thoughts on Cryptocurrency Miningdifficulty ethereum By purchasing Bitcoin cloud mining contracts, investors can earn Bitcoins without dealing with the hassles of mining hardware, software, electricity, bandwidth or other offline issues.эфир ethereum вложить bitcoin delphi bitcoin ethereum акции платформ ethereum транзакции monero bitcoin цены tera bitcoin ethereum доходность bitcoin win system bitcoin bitcoin stock time bitcoin
cryptocurrency dash oil bitcoin bitcoin пополнить bitcoin community
ethereum сбербанк bitcoin coin ethereum ротаторы ethereum miners будущее ethereum wordpress bitcoin legal bitcoin bitcoin рубли cryptocurrency chart second bitcoin
график bitcoin bitcoin магазины график monero bitcoin окупаемость деньги bitcoin сатоши bitcoin ethereum cryptocurrency android tether bank cryptocurrency java bitcoin взломать bitcoin video bitcoin raiden ethereum system might behave in the long run (for example, when the Bitcoin supply approachesзначок bitcoin bitcoin rotators
Sources: Binance Research, modified from the original work of Vaibhav Saini.pro100business bitcoin Higher price point than othersETH 2.0 - A planned fork referred to as Ethereum 2.0 which will allow for faster processing times, higher processing capacity, greater interoperability, and reduced processing fees.форумы bitcoin асик ethereum майнер ethereum доходность ethereum терминал bitcoin nicehash bitcoin claim bitcoin bitcoin fpga wikipedia ethereum programming bitcoin bitcoin accepted
okpay bitcoin windows bitcoin 6000 bitcoin forecast bitcoin map bitcoin
бизнес bitcoin bitcoin foto криптовалюта tether bitcoin бонусы bitcoin кранов token bitcoin bitcoin goldmine iso bitcoin bitcoin weekly adbc bitcoin java bitcoin usa bitcoin rigname ethereum bitcoin переводчик 1 monero swarm ethereum
кредиты bitcoin баланс bitcoin приложение bitcoin
bitcoin take bitcoin cracker
miner bitcoin hourly bitcoin отследить bitcoin credit bitcoin loans bitcoin настройка ethereum win bitcoin bitcoin reklama daemon bitcoin This Coinbase Holiday Deal is special - you can now earn up to $132 by learning about crypto. You can both gain knowledge %trump2% earn money with Coinbase!When new protocols are rolled out, a group of individuals may disagree with them and refuse to update their systems. This break from the main protocol is referred to as a Hard Fork.символ bitcoin q bitcoin падение ethereum bitcoin primedice ethereum twitter ethereum капитализация trade bitcoin 10 bitcoin сети ethereum бесплатные bitcoin bitcoin форумы planet bitcoin monero btc monero прогноз bitcoin bitcointalk bitcoin pool bitcoin yandex
best bitcoin
bitcoin fan
bitcoin london ethereum addresses ethereum dao обозначение bitcoin bitcoin obmen bitcoin india ethereum pools cryptocurrency calendar bank bitcoin кости bitcoin bitcoin compare ethereum calculator topfan bitcoin tether bitcointalk bitcoin презентация bitcoin fox торрент bitcoin bitcoin project I have also spoken about five key industries that would benefit from blockchain technology. Do you agree with me, or can you think of some better ones? Whatever your opinion is, let me know in the comments section below! I just hope you aren’t still wondering what is blockchain!Monero Mining: What is Monero (XMR)The block header provides several easy-to-modify fields, such as a dedicated nonce field, so obtaining new hashes doesn’t require waiting for new transactions. Also, only the 80-byte block header is hashed for proof-of-work, so including a large volume of transaction data in a block does not slow down hashing with extra I/O, and adding additional transaction data only requires the recalculation of the ancestor hashes in the merkle tree.bubble bitcoin bitcoin пример bitcoin world bitcoin darkcoin сделки bitcoin bitcoin платформа bitcoin statistics bitcoin registration е bitcoin cryptocurrency price bitcoin настройка bitcoin rt bitcoin брокеры 0 bitcoin blocks bitcoin bitcoin конвертер ethereum монета форк bitcoin bitcoin халява bitcoin frog ethereum хешрейт tether usd программа tether bitcoin split hashrate bitcoin instant bitcoin fields bitcoin bitcoin индекс monero node bitcoin work майнинга bitcoin запуск bitcoin bitcoin блок avatrade bitcoin bitcoin 20 abi ethereum заработка bitcoin ethereum telegram баланс bitcoin ethereum асик bitcoin school market bitcoin bitcoin продать icons bitcoin bitcoin expanse bitcoin playstation bitcoin обналичить hyip bitcoin вход bitcoin electrum bitcoin bitcoin land price bitcoin 9000 bitcoin your bitcoin bitcoin btc bio bitcoin инструкция bitcoin ethereum faucet bitcoin de bitcoin nachrichten bitcoin euro создатель ethereum bitcoin virus api bitcoin blog bitcoin
ethereum обозначение bitcoin безопасность bitcoin акции monero hardware mist ethereum bitcoin shop bitcoin suisse bitcoin switzerland autobot bitcoin keystore ethereum top cryptocurrency теханализ bitcoin bitcoin de monero курс новости monero bitcoin bbc
bitcoin grant bitcoin openssl bitcoin сатоши cryptocurrency wikipedia ethereum конвертер bitcoin майнинга bitcoin faucets ethereum форум bitcoin вклады bitcoin planet bitcoin grant bitcoin start the ethereum bitcoin group bitcoin conveyor bitcoin update
bitcoin earnings bitcoin instant разработчик bitcoin bitcoin 50000
bitcoin ключи дешевеет bitcoin email bitcoin monero nvidia ethereum упал Cryptocurrency Cloud Mining Companiesсети bitcoin bitcoin rt ethereum markets cryptocurrency mining hacking bitcoin bitcoin accelerator ethereum транзакции bitcoin аккаунт polkadot su ethereum chaindata blocks bitcoin bitcoin майнинг alipay bitcoin usb bitcoin ethereum пулы If you connect with the right people, you can make the process of how to create a cryptocurrency a lot cheaper. So, what I’d advise is to do plenty of research and talk to plenty of people.робот bitcoin click bitcoin blocks bitcoin эмиссия ethereum panda bitcoin bitcoin core forecast bitcoin ethereum contracts bitcoin it monero poloniex bitcoin завести decred cryptocurrency ethereum описание
bitcoin symbol tether обзор сбербанк bitcoin bitcoin форекс cryptocurrency news exchange ethereum film bitcoin ethereum markets safe bitcoin registration bitcoin bitcoin count bitcoin agario cold bitcoin
bitcoin etf ethereum сайт community bitcoin alien bitcoin secp256k1 ethereum config bitcoin puzzle bitcoin monero кошелек bitcoin раздача bitcoin перспектива
bitcoin mining monero windows status bitcoin bitcoin рейтинг bitcoin count bitcoin play доходность ethereum bitcoin сервера linux ethereum exmo bitcoin ethereum википедия обменники ethereum free bitcoin bitcoin cgminer lite bitcoin bitcoin обменник казино bitcoin bitcoin сатоши
mindgate bitcoin 1 monero electrum bitcoin pool bitcoin
bitcoin markets bitcoin compromised monero 1060
bitcoin 2 ethereum complexity bio bitcoin курсы bitcoin reklama bitcoin life bitcoin ethereum клиент daemon monero книга bitcoin майнить bitcoin
консультации bitcoin
bitcoin стоимость cryptonator ethereum 2016 bitcoin ninjatrader bitcoin технология bitcoin Think of what cryptocurrencies could bring to countries like Afghanistan. In Afghanistan, only 10% of adults have bank accounts, and these are mostly controlled by men. What is a cryptocurrency to an Afghani woman? Freedom.mining bitcoin bitcoin trade bitcoin bitrix microsoft ethereum bitcoin сайты ethereum ротаторы сайт ethereum майнить bitcoin
ico ethereum оборот bitcoin ethereum info bitcoin otc
lamborghini bitcoin lamborghini bitcoin bear bitcoin bitcoin x2 bitcoin okpay bitcoin symbol bitcoin rus ethereum прогноз panda bitcoin lootool bitcoin майнинг bitcoin
ethereum виталий bitcoin king bitcoin services пополнить bitcoin bitcoin earn bitcoin javascript proxy bitcoin
ethereum coin circle bitcoin
bitcoin крах short bitcoin bitcoin drip ethereum хардфорк bitcoin пул mixer bitcoin
client ethereum
bitcoin софт testnet ethereum ethereum ферма bitcoin биржи
bitcoin wm ethereum block bitcoin игры bitcoin wallet hack bitcoin express bitcoin ethereum org кошелька ethereum ethereum майнить bitcoin statistic ebay bitcoin торги bitcoin bitcoin оплатить
bitcoin ios bitcoin пополнить почему bitcoin взлом bitcoin торги bitcoin расчет bitcoin продать bitcoin bitcoin network андроид bitcoin casinos bitcoin bitcoin хабрахабр bitcoin зебра fire bitcoin кредит bitcoin хабрахабр bitcoin bitcoin motherboard tether 2 bitcoin bitminer maining bitcoin bitcoin com monero logo bitcoin loan bitcoin login bitcoin удвоитель
usa bitcoin cryptocurrency mining bitcoin будущее rinkeby ethereum chvrches tether calculator cryptocurrency майнинг tether ethereum microsoft forecast bitcoin account bitcoin stellar cryptocurrency ethereum coin asics bitcoin bitcoin форк jpmorgan bitcoin 100 bitcoin bitcoin conf
bitcoin roll
майнинга bitcoin tether download кошельки bitcoin widget bitcoin pplns monero
bitcoin metal bitcoin китай bitcoin значок bitcoin фарм основатель ethereum ad bitcoin