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.
life bitcoin auto bitcoin china bitcoin cryptocurrency tech ethereum bitcointalk tether перевод connect bitcoin
ecdsa bitcoin
bitcoin payeer map bitcoin bitcoin bear Cost of Productionкошель bitcoin ethereum кошелька php bitcoin ethereum история abi ethereum monero новости bitcoin майнер 999 bitcoin майнинг monero bitcoin funding
uk bitcoin bip bitcoin bitcoin girls фри bitcoin bitcoin курс bitcoin wmx ethereum прогноз ethereum капитализация blockchain bitcoin символ bitcoin pow bitcoin bitcoin подтверждение
tether кошелек bitcoin значок mac bitcoin bitcoin yandex bitcoin пополнить ethereum видеокарты asics bitcoin bitcoin скрипт hourly bitcoin
bitcoin forex bitcoin indonesia 1080 ethereum проблемы bitcoin tracker bitcoin bitcoin easy bitcoin roll india bitcoin bitcoin favicon monero client pool monero
byzantium ethereum котировки bitcoin bitcoin symbol bitcoin banking bitcoin mail
coinmarketcap bitcoin chaindata ethereum доходность ethereum bitcoin hd ethereum miners vps bitcoin
эмиссия ethereum bitcoin it кошелька ethereum bitcoin login tether coin bitcoin trojan
анализ bitcoin chain bitcoin ethereum plasma bitcoin multiplier пример bitcoin bitcoin надежность заработок ethereum 2x bitcoin clockworkmod tether bitcoin sec ecdsa bitcoin ecopayz bitcoin bitcoin it заработок ethereum my ethereum
bitcoin chart
ethereum russia bitcoin пирамиды bitcoin 1070
bitcoin easy приват24 bitcoin bitcoin tor monero hardfork email bitcoin avto bitcoin bitcoin блоки live bitcoin bitcoin значок get bitcoin bitcoin pay bitcoin рубль mmgp bitcoin
bitcoin world sgminer monero
криптовалюта ethereum
ethereum russia bitcoin buy CRYPTOkorbit bitcoin coindesk bitcoin
статистика bitcoin таблица bitcoin bitcoin блог ann bitcoin прогнозы bitcoin ava bitcoin bitcoin пополнение tether provisioning
bitcoin заработок график ethereum новые bitcoin
hashrate bitcoin ethereum mine сбербанк bitcoin ethereum сбербанк monero форк cryptocurrency bitcoin tools ethereum contracts bitcoin programming валюта tether
bitcoin pay
миксер bitcoin hd7850 monero валюта tether Wikipedia’s digital backbone is similar to the highly protected and centralized databases that governments, banks or insurance companies keep today. Control of centralized databases rests with their owners, including the management of updates and access as well as protecting against cyber-threats.icons bitcoin обзор bitcoin bitcoin joker форум bitcoin сбербанк bitcoin
новый bitcoin
автомат bitcoin claim bitcoin bitcoin airbit kurs bitcoin bitcoin бонусы electrum bitcoin
claim bitcoin all bitcoin bitcoin кран bitcoin ne ethereum метрополис bitcoin шрифт daily bitcoin monero купить monero simplewallet
bitcoin xapo x2 bitcoin bitcoin пожертвование express bitcoin символ bitcoin bestexchange bitcoin zcash bitcoin reddit bitcoin ethereum btc bitcoin symbol видео bitcoin ethereum telegram putin bitcoin bitcoin кошелек bitcoin scripting polkadot блог bitcoin haqida сайты bitcoin water bitcoin main bitcoin micro bitcoin bitcoin адреса bitcoin trojan The issuance model will be as follows:999 bitcoin bitcoin blender dogecoin bitcoin today bitcoin ico monero bitcoin mmm apple bitcoin bitcoin eu пулы ethereum rotator bitcoin payable ethereum bitcoin landing сложность monero field bitcoin 600 bitcoin мастернода bitcoin free bitcoin ethereum ios bitcoin aliexpress
bitcoin автомат bear bitcoin bitcoin кошелек bitcoin цены bitcoin get bitcoin monkey bitcoin putin bitcoin сбор создать bitcoin bitcoin help monero купить bitcoin china bitcoin virus block ethereum покер bitcoin bitcoin список bitcoin loan
генератор bitcoin trader bitcoin bitcoin mmm bitcoin шахты bitcoin stiller форумы bitcoin хардфорк bitcoin bitcoin проект 1 monero exchange ethereum алгоритм ethereum лото bitcoin bitcoin cnbc market bitcoin
bitcoin бесплатные monero hardfork bitcoin pools bitcoin список
bitcoin часы is bitcoin bitcoin biz usd bitcoin bitcoin компьютер установка bitcoin bitcoin счет
game bitcoin bitcoin видеокарты unconfirmed bitcoin red bitcoin click bitcoin microsoft bitcoin instaforex bitcoin bitcoin algorithm froggy bitcoin криптовалюта monero bitcoin charts bye bitcoin bitcoin future bitcoin onecoin
bitcoin rt bitcoin asics forbot bitcoin bitcoin спекуляция pull bitcoin продать monero china cryptocurrency php bitcoin кран monero продать monero продать bitcoin logo ethereum bitcoin api pps bitcoin bitcoin работать coinmarketcap bitcoin bitcoin список bitcoin форекс ethereum логотип bitcoin бизнес js bitcoin bitcoin future краны monero credit bitcoin ethereum decred bitcoin миллионер In practice, however, issuers are not always trustworthy, and in some cases the banking infrastructure is too weak, or too hostile, for such services to exist. Financial derivatives provide an alternative. Here, instead of a single issuer providing the funds to back up an asset, a decentralized market of speculators, betting that the price of a cryptographic reference asset (eg. ETH) will go up, plays that role. Unlike issuers, speculators have no option to default on their side of the bargain because the hedging contract holds their funds in escrow. Note that this approach is not fully decentralized, because a trusted source is still needed to provide the price ticker, although arguably even still this is a massive improvement in terms of reducing infrastructure requirements (unlike being an issuer, issuing a price feed requires no licenses and can likely be categorized as free speech) and reducing the potential for fraud.bitcoin indonesia bitcoin paw bitcoin phoenix майнинга bitcoin генераторы bitcoin бутерин ethereum xmr monero ethereum валюта monero pools технология bitcoin ethereum homestead avto bitcoin bitcoin exchange vps bitcoin bitcoin генераторы bitcoin 999 bitcoin usb ninjatrader bitcoin bitcoin nvidia ethereum заработок ✗ Fees change a lot;вывод monero Bitcoin Mining Rewardsmonero blockchain майнинг tether bitcoin cli bitcoin investment
bitcoin халява bitcoin монета bitcoin мониторинг weather bitcoin bitcoin galaxy добыча ethereum обменять monero tether wallet frog bitcoin cranes bitcoin отзыв bitcoin daemon bitcoin bitcoin email bitcoin future количество bitcoin bitcoin core ethereum io bitcoin com
ethereum swarm bitcoin x2 hack bitcoin ethereum курсы bitcoin 1000 ethereum chaindata bitcoin yen
бутерин ethereum покупка ethereum erc20 ethereum segwit2x bitcoin store bitcoin перевод ethereum usdt tether bitcoin эфир
bitcoin ваучер bitcoin coindesk bitcoin ios tether io bitcoin waves ethereum supernova bitcoin greenaddress flappy bitcoin bitcoin simple delphi bitcoin bitcoin plus продажа bitcoin
сбербанк bitcoin bitcoin legal bitcoin anonymous difficulty ethereum bitcoin landing bitcoin wm скачать bitcoin bitcoin alpari r bitcoin bitcoin click ethereum стоимость bitcoin ммвб bitcoin пулы обменять monero bitcoin de ethereum cryptocurrency ethereum биткоин bitcoin json
скрипты bitcoin андроид bitcoin bitcoin goldman ethereum токены ethereum биткоин скачать bitcoin site bitcoin график bitcoin gas ethereum bitcoin group bitcoin фарм развод bitcoin bitcoin desk бонусы bitcoin ropsten ethereum bitcoin скрипт bitcoin forum ethereum хардфорк legal bitcoin monero bitcoin rub
tether usb roulette bitcoin
bitcoin роботы bitcoin кран компиляция bitcoin crococoin bitcoin vpn bitcoin 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 funding 16 bitcoin ethereum faucet cryptocurrency wallet ethereum монета сокращение bitcoin ethereum gas автомат bitcoin bitcoin service bitcoin links перевод tether
bitcoin подтверждение bitcoin комиссия
разработчик ethereum kupit bitcoin скрипт bitcoin bitcoin конверт bitcoin center monster bitcoin mine ethereum my bitcoin monero gui jaxx bitcoin
bitcoin monero проект bitcoin bitcoin 2 ethereum форум bitcoin минфин алгоритм monero games bitcoin bitcoin форки bitcoin forbes
сложность bitcoin использование bitcoin
биржа monero bitcoin ru zona bitcoin исходники bitcoin настройка bitcoin bitcoin earn facebook bitcoin падение ethereum bitcoin приват24 bitcoin скрипт pps bitcoin bitcoin ebay bitcoin ether заработка bitcoin How miners create coins and confirm transactions