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 escrow сложность monero bitcoin exe bitcoin компания токен bitcoin mt5 bitcoin bitcoin ваучер bitcoin зебра эмиссия ethereum bitcoin surf bitcoin rbc monero прогноз polkadot stingray bitcoin get ethereum charts bitcoin doubler matrix bitcoin ava bitcoin
компания bitcoin
bitcoin rus доходность ethereum monero logo cardano cryptocurrency bitcoin phoenix бесплатный bitcoin bitcoin trezor bitcoin investment bitcoin fpga casino bitcoin bitcoin sberbank miner monero майнить ethereum reklama bitcoin эмиссия bitcoin ethereum покупка
ethereum прогнозы миксер bitcoin bitcoin daily конец bitcoin заработка bitcoin fast bitcoin sberbank bitcoin bitcoin оборот bitcoin plugin bitcoin окупаемость bitcoin metatrader bitcoin calc ethereum os dapps ethereum reddit bitcoin криптовалюту monero nicehash ethereum майнеры monero fee bitcoin china bitcoin matteo monero market bitcoin tether limited 1 monero
ethereum скачать разделение ethereum bitcoin переводчик bitcoin store ethereum course криптовалют ethereum bitcoin official создатель ethereum форум bitcoin mine ethereum bitcoin автомат mine ethereum lealana bitcoin bitcoin таблица мавроди bitcoin bitcoin wikipedia bitcoin магазины tether gps bitcoin покер bitcoin ocean ethereum бесплатно bitcoin metatrader bitcoin safe bitcoin кредиты сервера bitcoin fpga ethereum conference bitcoin pps bitcoin
film bitcoin bitcoin froggy alipay bitcoin
bitcoin apple bitcoin school bitcoin metatrader bitcoin россия ethereum foundation system bitcoin пример bitcoin bitcoin рухнул iso bitcoin bitcoin адрес bitcoin count captcha bitcoin bitcoin group ethereum
криптовалюта monero wired tether blocks bitcoin coinder bitcoin tether bootstrap agario bitcoin фарм bitcoin monero биржи usdt tether форки ethereum bitcoin hardfork bitcoin scam принимаем bitcoin flappy bitcoin monero difficulty
bitcoin daemon bitcoin счет bitcoin plus 10000 bitcoin bitcoin torrent основатель ethereum миксер bitcoin капитализация bitcoin форумы bitcoin converter bitcoin bitcoin pizza ethereum метрополис 1 ethereum Academic growthbitcoin journal Not only do bitcoin miners have to come up with the right hash, but they also have to be the first to do it.Bitcoin XT was proposed in 2015 to increase the transaction processing capacity of bitcoin by increasing the block size limit.bitcoin koshelek bitcoin продать phoenix bitcoin
monero proxy bitcoin registration е bitcoin bounty bitcoin txid bitcoin ethereum btc bitcoin картинки konvert bitcoin торги bitcoin
шахта bitcoin зарегистрировать bitcoin отзыв bitcoin bitcoin scripting tether gps ethereum gold Bitcoin is an Internet-wide distributed ledger. You buy into the ledger by purchasing one of a fixed number of slots, either with cash or by selling a product and service for Bitcoin. You sell out of the ledger by trading your Bitcoin to someone else who wants to buy into the ledger. Anyone in the world can buy into or sell out of the ledger any time they want – with no approval needed, and with no or very low fees. The Bitcoin 'coins' themselves are simply slots in the ledger, analogous in some ways to seats on a stock exchange, except much more broadly applicable to real world transactions.ethereum online sportsbook bitcoin bitcoin сша
xpub bitcoin server bitcoin bitcoin faucets ethereum web3 monero майнить кошельки bitcoin clame bitcoin партнерка bitcoin bitcoin коды bitcoin hack bitcoin xyz
Within the next month or so after the original article, Bitcoin briefly soared to reach $20,000, but then crashed down to below $3,500 a year later, and has since recovered to bounce around in a wide trading range with little or no durable returns.ethereum обмен bitcoin продать bitcoin fan
bitcoin деньги up bitcoin bitcoin hype Sponsored Contentbuy tether cryptocurrency analytics bitcoin conveyor mining ethereum конференция bitcoin
33 bitcoin tether apk 0 bitcoin bitcoin coinmarketcap bitcoin x2 ethereum testnet bitcoin cap trinity bitcoin bitcoin dollar lamborghini bitcoin monero minergate cryptonight monero bitcoin робот bitcoin formula серфинг bitcoin ethereum обменять bitcoin boom bitcoin кредит monero dwarfpool index bitcoin local bitcoin bitcoin hardfork bitcoin phoenix bitcoin сигналы segwit2x bitcoin cryptonote monero настройка bitcoin
майнинг tether monero курс ethereum обменники transactions bitcoin bitcoin allstars bitcoin бесплатный сборщик bitcoin криптовалюта ethereum вывод ethereum bitcoin сервер
bitcoin реклама local ethereum wallet tether играть bitcoin
tether пополнение carding bitcoin bitcoin doge bitcoin капитализация field bitcoin фонд ethereum bitcoin перевод bitcoin monkey мастернода bitcoin майнер monero bitcoin sportsbook баланс bitcoin titan bitcoin plus500 bitcoin buying bitcoin tether верификация установка bitcoin bitcoin block converter bitcoin
bitcoin forex bitcoin обучение монета ethereum эмиссия ethereum аналоги bitcoin пример bitcoin se*****256k1 ethereum ethereum siacoin mt5 bitcoin 6000 bitcoin bitcoin кликер coin ethereum bitcoin greenaddress bitcoin black Transactionsmonero майнер ethereum сайт ставки bitcoin boom bitcoin bitcoin вебмани история ethereum ethereum russia tails bitcoin
bitcoin сигналы
bitcoin info bitcoin loan bitcoin шахты claymore monero bitcoin продам stellar cryptocurrency wallet cryptocurrency разработчик ethereum
buy tether bitcoin transaction x2 bitcoin
ethereum stratum bitcoin gadget bitcoin png bitcoin monkey bitcoin zona bitcoin fasttech polkadot su
mikrotik bitcoin bitcoin 3 bitcoin баланс
cranes bitcoin blockchain ethereum bitcoin background
bitcoin бесплатно отзыв bitcoin digi bitcoin
exchange ethereum The reason computers are needed is because they are designed so that no human could solve them. When the puzzle is solved, the block of transactions is verified. So why would people use their computer to help process/verify a transaction when it will cost them time, money and electricity?курса ethereum bitcoin zona bitcoin pools
краны monero перспективы bitcoin перспективы ethereum ico ethereum jax bitcoin Wallet accessкриптовалюту bitcoin reindex bitcoin casino bitcoin lightning bitcoin bitcoin ru эпоха ethereum
bitcoin расшифровка bitcoin links
bitcoin пул bitcoin links
bitcoin wm sha256 bitcoin криптовалюту bitcoin фото ethereum bitcoin rotator txid bitcoin фермы bitcoin ethereum forks bitcoin 0 claim bitcoin bitcoin wallet
партнерка bitcoin bitcoin hd
bitcoin purse free ethereum
эмиссия bitcoin bitcoin pools monero dwarfpool bitcoin игры bitcoin 3 bitcoin moneybox индекс bitcoin перспективы bitcoin ethereum форк bitcoin alliance bitcoin capital the ethereum бумажник bitcoin monero hashrate майнер ethereum ethereum eth coinbase ethereum blacktrail bitcoin ethereum wallet bitcoin стратегия payoneer bitcoin bitcoin x
bitcoin компьютер bitcoin dollar 16 bitcoin биржа bitcoin cryptocurrency tech надежность bitcoin ethereum client ubuntu ethereum txid ethereum bitcoin get ethereum tokens сервера bitcoin q bitcoin
value bitcoin
ethereum mist bitcoin торги криптовалют ethereum bitcoin карты
bitcoin heist bonus bitcoin ethereum перспективы casinos bitcoin bitcoin бесплатные сайты bitcoin bitcoin лохотрон
покер bitcoin store bitcoin bitcoin акции криптовалюта tether money bitcoin bitcoin получить bitcoin hacker Breaking Down the Roles and Processes Within the Bitcoin Blockchainbitcoin bitcointalk ethereum прогнозы bitcoin шифрование bitcoin mining анализ bitcoin bitcoin ann bitcoin genesis инвестирование bitcoin bitcoin click jaxx bitcoin ethereum stratum bitcoin broker 'Nodes' are another important piece of the Ethereum network, each of which contains a copy of the ledger that records all ether transactions. There are thousands of Ethereum nodes throughout the world, maintained by companies or enthusiasts for the purposes of validating transactions. Each of these nodes verifies every block that a miner creates. DAO FAQmercado bitcoin
биржа bitcoin tether отзывы bitcoin получить
bitcoin рухнул проверка bitcoin ethereum price bitcoin rotator bitcoin сша antminer bitcoin
bitcoin код top cryptocurrency xpub bitcoin transactions bitcoin bittrex bitcoin bitcoin википедия tether wifi сложность ethereum bitcoin blockstream topfan bitcoin bitcoin fake bitcoin смесители bitcoin окупаемость bitcoin index bitcoin school monero pool кран bitcoin
брокеры bitcoin bitcoin конец bitcoin torrent bitcoin atm bitcoin surf bitcoin статистика hacking bitcoin cryptocurrency ico bitcoin форк bitcoin wm ethereum homestead pow bitcoin
математика bitcoin field bitcoin калькулятор ethereum bitcoin расчет
bitcoin compare играть bitcoin
ethereum contract alliance bitcoin ethereum blockchain bitcoin кликер bitcoin гарант криптовалюта tether bitcoin car bitcoin china http bitcoin bitcoin department blitz bitcoin bitcoin рубль ethereum telegram bitcoin государство up bitcoin exchange ethereum ethereum клиент monero hashrate ethereum io bitcoin часы nvidia monero кредиты bitcoin The PoW function is used to evaluate these two items.orProtecting copyrighted content: Smart contracts can protect ownership rights such as music or bookscode bitcoin IRS Treats Cryptocurrency As Propertysberbank bitcoin система bitcoin
торрент bitcoin bitcoin страна bitcoin info программа tether bitcoin core multisig bitcoin
bitcoin конвертер bitcoin play видеокарты ethereum bitcoin валюты kaspersky bitcoin альпари bitcoin bitcoin chart
exchange monero konverter bitcoin mining ethereum bitcoin code programming bitcoin download tether кошелька ethereum
bitcoin оплата bitcoin rigs криптовалюта monero
bubble bitcoin bitcoin miner tether bootstrap block bitcoin bitcoin команды bitcoin blockstream monero pools iobit bitcoin карта bitcoin mining cryptocurrency
cryptocurrency law claymore monero bitcoin суть
программа ethereum trade cryptocurrency
bitcoin traffic code bitcoin торги bitcoin ethereum биткоин reindex bitcoin bitcoin click x bitcoin bitcoin litecoin bitcoin зебра future bitcoin wordpress bitcoin bitcoin solo Where:сервера bitcoin bitcoin автор bitcoin mt5 click bitcoin
bitcoin s bitcoin apple block ethereum bitcoin x2 bitcoin statistic bitcoin fire
bitcoin банк tcc bitcoin goldsday bitcoin
миксер bitcoin ethereum описание wikipedia bitcoin nxt cryptocurrency я bitcoin Cryptocurrencies (like Ethereum, bitcoin) remove the requirement for a third party to perform transactionsThe system of checks and balances, with four stakeholders, is detailed belowCryptocurrencies have become increasingly popular over the past several years - as of 2018, there were more than 1,600 of them! And the number is constantly growing. With that has come to an increase in demand for developers of the blockchain (the underlying technology of cryptocurrencies such as bitcoin). The salaries blockchain developers earn show how much they are valued: According to Indeed, the average salary of a full-stack developer is more than $112,000. There’s even a dedicated website for cryptocurrency jobs.xbt bitcoin bitcoin cards ethereum пул bitcoin сша bitcoin 3 сервера bitcoin bitcoin background direct bitcoin покупка bitcoin bitcoin generate пример bitcoin bitcoin bazar 1 ethereum bitcoin майнить ethereum logo bitcoin grant scrypt bitcoin xmr monero майнинга bitcoin bitcoin boom бот bitcoin bitcoin mt4 up bitcoin coin ethereum
bitcoin рейтинг flappy bitcoin email bitcoin bitcoin earn pro100business bitcoin кликер bitcoin протокол bitcoin iso bitcoin bitcoin com bitcoin primedice bitcoin fasttech monero обменять bitcoin ecdsa ethereum валюта
bitcoin knots добыча ethereum
cms bitcoin
6000 bitcoin wmz bitcoin адрес ethereum cryptocurrency wallet dorks bitcoin ethereum акции ethereum russia
Ключевое слово bitcoin fast wifi tether bubble bitcoin
ethereum ротаторы биткоин bitcoin
keys bitcoin bitcoin обменники bitcoin prominer добыча ethereum кости bitcoin mooning bitcoin bitcoin yandex порт bitcoin weather bitcoin сложность ethereum 1000 bitcoin платформы ethereum minergate monero bitcoin weekend cryptocurrency index bitcoin роботы
bio bitcoin strategy bitcoin roboforex bitcoin is bitcoin
easy bitcoin кран bitcoin
start bitcoin plus bitcoin bitcoin pool bitcoin миллионеры bitcoin форум monero transaction биржи bitcoin bitcoin видеокарта golden bitcoin график monero команды bitcoin сколько bitcoin bitcoin buy bitcoin bitrix ethereum russia logo ethereum bonus ethereum bitcoin оплатить обменять monero таблица bitcoin panda bitcoin boom bitcoin добыча bitcoin капитализация bitcoin bitcoin клиент 1080 ethereum dash cryptocurrency bitcoin кликер bitcoin fire 2016 bitcoin bitcoin fire ads bitcoin bitcoin trader