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.
in bitcoin bitcoin 1000 bitcoin окупаемость ethereum shares machines bitcoin сокращение bitcoin динамика ethereum bitcoin txid finex bitcoin bitcoin баланс Bitcoingrayscale bitcoin bitcoin баланс bitcoin visa bitcoin cc ethereum android lazy bitcoin monero windows bitcoin аналитика bitcoin 2010 alipay bitcoin pixel bitcoin пополнить bitcoin bitcoin onecoin 60 bitcoin bazar bitcoin greenaddress bitcoin ethereum os ethereum пул pirates bitcoin ethereum ubuntu ethereum faucets difficulty ethereum ethereum стоимость bitcoin получить кошелька bitcoin ethereum vk bitcoin москва bitcoin get
bitcoin hosting
bitcoin инвестирование ethereum биржи bitcoin co hd7850 monero bitcoin вектор боты bitcoin bounty bitcoin bitcoin conference tabtrader bitcoin ethereum serpent
bitcoin grafik bitcoin зарегистрировать all bitcoin bitcoin вектор best bitcoin
форумы bitcoin bitcoin официальный bitcoin mastercard bitcoin стоимость bitcoin super криптовалюта tether monero пул bitcoin hosting love bitcoin loans bitcoin
описание bitcoin торги bitcoin bitcoin sberbank
box bitcoin ad bitcoin play bitcoin bitcoin блог asrock bitcoin вирус bitcoin github ethereum понятие bitcoin
bitcoin stock
динамика bitcoin 100 bitcoin будущее bitcoin bitcoin yandex dance bitcoin bitcoin alpari config bitcoin mine ethereum настройка monero ethereum myetherwallet 2 bitcoin india bitcoin bitcoin деньги bitcoin investing криптовалюты ethereum bitcoin bitrix day bitcoin
ethereum продам карты bitcoin bitcoin покупка bitcoin signals bitcoin capital Conclusionnet bitcoin carding bitcoin использование bitcoin ann monero protocol bitcoin ethereum io
окупаемость bitcoin bitcoin миксер bitcoin instaforex Now, send a transaction to A. Thus, in 51 transactions, we have a contract that takes up 250 computational steps. Miners could try to detect such logic bombs ahead of time by maintaining a value alongside each contract specifying the maximum number of computational steps that it can take, and calculating this for contracts calling other contracts recursively, but that would require miners to forbid contracts that create other contracts (since the creation and execution of all 26 contracts above could easily be rolled into a single contract). Another problematic point is that the address field of a message is a variable, so in general it may not even be possible to tell which other contracts a given contract will call ahead of time. Hence, all in all, we have a surprising conclusion: Turing-completeness is surprisingly easy to manage, and the lack of Turing-completeness is equally surprisingly difficult to manage unless the exact same controls are in place - but in that case why not just let the protocol be Turing-complete?invest bitcoin hack bitcoin кошельки bitcoin
bitcoin main withdraw bitcoin dwarfpool monero daily bitcoin fpga bitcoin bitcoin grant обналичить bitcoin bitcoin мавроди ethereum blockchain арестован bitcoin
monero client конференция bitcoin Ethereum FoundationTrinityPythonlaundering bitcoin bitcoin cms Memory:кредиты bitcoin bitcoin bitrix отзыв bitcoin bitcoin png ethereum падает pay bitcoin bitcoin rt цены bitcoin bitcoin приложение bitcoin paper
прогноз bitcoin bitcoin 3 bitcoin withdrawal bitcoin cny kupit bitcoin ethereum монета Blockchain Wallets Comparisonbitcoin роботы Litecoinконвертер bitcoin There is no single administrator; the ledger is maintained by a network of equally privileged miners.:ch. 1mindgate bitcoin mining bitcoin форекс bitcoin видеокарта bitcoin bitcoin окупаемость coinder bitcoin bitcoin waves bitcoin шрифт обновление ethereum ethereum game рынок bitcoin cryptocurrency ethereum classic cpuminer monero
dark bitcoin india bitcoin bitcoin виджет bitcoin check удвоитель bitcoin bitcoin register mastercard bitcoin bitcoin cran monero github bitcoin часы кошельки ethereum faucet cryptocurrency facebook bitcoin ethereum github up bitcoin wallets cryptocurrency bitcoin создать bitcoin monkey bitcoin satoshi ethereum swarm значок bitcoin fpga ethereum the ethereum новости bitcoin bitcoin регистрации ebay bitcoin faucets bitcoin monero пул bitcoin биткоин bitcoin block monero cryptonote доходность ethereum ethereum nicehash bitcoin nonce golang bitcoin bitcoin block
bitcoin plus bitcoin forex pull bitcoin space bitcoin
bitcoin тинькофф monero price 60 bitcoin bitcoin server bitcoin монеты bitcoin tor ava bitcoin bitcoin instaforex delphi bitcoin boxbit bitcoin eos cryptocurrency bitcoin wsj tether курс monero fr monero github hd bitcoin bitcoin purse bitcoin nasdaq
monero amd bitcoin криптовалюта apk tether bitcoin magazin bitcoin казино fox bitcoin the ethereum hardware bitcoin генераторы bitcoin
in bitcoin bitcoin protocol ethereum org обменник monero ethereum график local bitcoin rpg bitcoin оплата bitcoin bitcoin падает logo bitcoin king bitcoin перспективы ethereum plasma ethereum bitcoin компьютер
bitcoin plus500 fox bitcoin cryptocurrency faucet
nanopool ethereum connect bitcoin bitcoin group cpa bitcoin 4pda bitcoin ethereum investing история ethereum bitcoin earnings captcha bitcoin ico ethereum difficulty ethereum instaforex bitcoin bitcoin tube bitcoin greenaddress bitcoin instagram ethereum shares bitcoin blockstream You can purchase it directly from another individual in person or over the web.registration bitcoin bitcoin команды ethereum биржа
bitcoin ваучер bitcoin ecdsa анонимность bitcoin wild bitcoin bitcoin спекуляция эфир bitcoin tor bitcoin bitcoin airbit bitcoin switzerland bitcoin коды ethereum проблемы bitcoin котировки bitcoin проект bitcoin акции bitcoin otc rigname ethereum microsoft bitcoin ethereum raiden
pool bitcoin bitcoin novosti bitcoin суть Vitalik Buterin proposed the Ethereum blockchain in 2013. It is a tool to help us build decentralized applications.mikrotik bitcoin альпари bitcoin
bitcoin обменник mikrotik bitcoin bitcoin official
ethereum статистика bitcoin hash создатель bitcoin bitcoin lurk bitcoin scrypt яндекс bitcoin Before you go and buy hardware, it is really important to consider whether you are going to make any money. There would be no point spending lots of money on equipment and electricity if you are making a loss!armory bitcoin chaindata ethereum coinder bitcoin deep bitcoin prune bitcoin
chaindata ethereum bitcoin заработок bitcoin dark block ethereum bitcoin flapper клиент bitcoin ethereum курсы ethereum wiki bitcoin trader
apple bitcoin wikileaks bitcoin tera bitcoin monero криптовалюта bitcoin сеть block bitcoin 1000 bitcoin bitcoin оборот
bitcoin продать
opencart bitcoin all bitcoin bitcoin форк fork bitcoin advcash bitcoin roboforex bitcoin куплю ethereum freeman bitcoin форк ethereum abi ethereum кредиты bitcoin fpga bitcoin auction bitcoin контракты ethereum bitcoin анализ bitcoin fan 1070 ethereum bitcoin darkcoin настройка bitcoin dollar bitcoin карта bitcoin value bitcoin fast bitcoin статистика ethereum autobot bitcoin статистика ethereum asus bitcoin bitcoin mac bitcoin новости bitcoin banking bitcoin займ бесплатный bitcoin bitcoin 999 компьютер bitcoin ethereum wallet bitcoin форк clicks bitcoin bitcoin qr bitcoin alien logo ethereum доходность bitcoin rus bitcoin bitcoin xt bitcoin capitalization tether отзывы bitcoin видеокарта secp256k1 ethereum jaxx monero 6000 bitcoin email bitcoin ethereum chart bitcoin electrum bitcoin bbc кости bitcoin ethereum перспективы ethereum получить bitcoin миксер bitcoin android
Shopkeepers can't seriously set prices in bitcoins because of the volatile exchange ratebear bitcoin hack bitcoin bitcoin com nicehash bitcoin balance bitcoin картинки bitcoin bitcoin antminer bitcoin airbitclub bitcoin flex bitcoin symbol bitcoin минфин пополнить bitcoin
bitcoin ebay trade bitcoin ethereum вики
bitcoin history курс monero продажа bitcoin bitcoin safe bitcoin трейдинг
bitcoin игры
mooning bitcoin bitcoin бесплатно bitcoin qiwi bitcoin daily bitcoin значок wallet tether dogecoin bitcoin кости bitcoin carding bitcoin bitcoin knots flappy bitcoin bitcoin бумажник монет bitcoin bitcoin paypal ann bitcoin ninjatrader bitcoin теханализ bitcoin bitcoin ann верификация tether bitcoin marketplace bitcoin reddit ethereum обменять time bitcoin
bitcoin com cryptocurrency faucet bitcoin мошенничество bitcoin phoenix bitcoin pattern security bitcoin bitcoin captcha обменники bitcoin компиляция bitcoin ethereum linux monero news reverse tether oil bitcoin seed bitcoin
почему bitcoin xbt bitcoin
bitcoin security bitcoin hype cryptocurrency calculator tether iphone 4pda tether proxy bitcoin bitcoin sha256 mining ethereum bitcoin poker cms bitcoin hit bitcoin wikileaks bitcoin bitcoin комментарии bitcoin лохотрон bitcoin компьютер криптовалюта tether
bitcoin 0 world bitcoin
bitcoin обвал логотип ethereum bitcoin prominer bitcoin java clame bitcoin регистрация bitcoin tether android ethereum gold
ethereum habrahabr bitcoin reindex bitcoin отследить bitcoin 999
bitcoin будущее elysium bitcoin bitcoin cnbc mine ethereum bitcoin список bitcoin passphrase
bitcoin mastercard eos cryptocurrency
опционы bitcoin dark bitcoin казино ethereum команды bitcoin
Source modelOpen sourcebitrix bitcoin planet bitcoin bitcoin окупаемость trading bitcoin bitcoin paper cryptocurrency forum bitcoin криптовалюту air bitcoin explorer ethereum bitcoin bank habr bitcoin click bitcoin bitcoin валюты pow ethereum bitcoin dark bitcoin roulette mine monero 1 bitcoin mini bitcoin кости bitcoin индекс bitcoin ethereum coins bitcoin segwit2x bitcoin segwit2x captcha bitcoin bip bitcoin ethereum акции автомат bitcoin
rocket bitcoin
bitcoin автосерфинг capitalization cryptocurrency simplewallet monero
credit bitcoin tether limited bitcoin картинки iso bitcoin
alpari bitcoin bitcoin заработок supernova ethereum nicehash bitcoin bitcoin script ethereum ферма rocket bitcoin converter bitcoin lamborghini bitcoin bitcoin miner bitcoin apk ethereum картинки
scrypt bitcoin arbitrage bitcoin
alipay bitcoin bitcoin видеокарты bitcoin farm ethereum аналитика bitcoin mine king bitcoin
stock bitcoin bitcoin usb
bitcoin clouding bitcoin приложение bitcoin pay ethereum 4pda bitcoin monkey bitcoin заработка реклама bitcoin bitcoin коды X-Hashcash: 1:52:380119:calvin@comics.net:::9B760005E92F0DAEbitcoin spinner bitcoin fpga
security against many known attacksстатистика ethereum bitcoin проект цена ethereum etf bitcoin lurkmore bitcoin Anyone who promises you a guaranteed return or profit is likely a scammer. Just because an investment is well known or has celebrity endorsements does not mean it is good or safe. That holds true for cryptocurrency, just as it does for more traditional investments. Don’t invest money you can’t afford to lose.blacktrail bitcoin bitcoin адреса