Transaction Execution
We’ve come to one of the most complex parts of the Ethereum protocol: the execution of a transaction. Say you send a transaction off into the Ethereum network to be processed. What happens to transition the state of Ethereum to include your transaction?
Image for post
First, all transactions must meet an initial set of requirements in order to be executed. These include:
The transaction must be a properly formatted RLP. “RLP” stands for “Recursive Length Prefix” and is a data format used to encode nested arrays of binary data. RLP is the format Ethereum uses to serialize objects.
Valid transaction signature.
Valid transaction nonce. Recall that the nonce of an account is the count of transactions sent from that account. To be valid, a transaction nonce must be equal to the sender account’s nonce.
The transaction’s gas limit must be equal to or greater than the intrinsic gas used by the transaction. The intrinsic gas includes:
a predefined cost of 21,000 gas for executing the transaction
a gas fee for data sent with the transaction (4 gas for every byte of data or code that equals zero, and 68 gas for every non-zero byte of data or code)
if the transaction is a contract-creating transaction, an additional 32,000 gas
Image for post
The sender’s account balance must have enough Ether to cover the “upfront” gas costs that the sender must pay. The calculation for the upfront gas cost is simple: First, the transaction’s gas limit is multiplied by the transaction’s gas price to determine the maximum gas cost. Then, this maximum cost is added to the total value being transferred from the sender to the recipient.
Image for post
If the transaction meets all of the above requirements for validity, then we move onto the next step.
First, we deduct the upfront cost of execution from the sender’s balance, and increase the nonce of the sender’s account by 1 to account for the current transaction. At this point, we can calculate the gas remaining as the total gas limit for the transaction minus the intrinsic gas used.
Image for post
Next, the transaction starts executing. Throughout the execution of a transaction, Ethereum keeps track of the “substate.” This substate is a way to record information accrued during the transaction that will be needed immediately after the transaction completes. Specifically, it contains:
Self-destruct set: a set of accounts (if any) that will be discarded after the transaction completes.
Log series: archived and indexable checkpoints of the virtual machine’s code execution.
Refund balance: the amount to be refunded to the sender account after the transaction. Remember how we mentioned that storage in Ethereum costs money, and that a sender is refunded for clearing up storage? Ethereum keeps track of this using a refund counter. The refund counter starts at zero and increments every time the contract deletes something in storage.
Next, the various computations required by the transaction are processed.
Once all the steps required by the transaction have been processed, and assuming there is no invalid state, the state is finalized by determining the amount of unused gas to be refunded to the sender. In addition to the unused gas, the sender is also refunded some allowance from the “refund balance” that we described above.
Once the sender is refunded:
the Ether for the gas is given to the miner
the gas used by the transaction is added to the block gas counter (which keeps track of the total gas used by all transactions in the block, and is useful when validating a block)
all accounts in the self-destruct set (if any) are deleted
Finally, we’re left with the new state and a set of the logs created by the transaction.
Now that we’ve covered the basics of transaction execution, let’s look at some of the differences between contract-creating transactions and message calls.
Contract creation
Recall that in Ethereum, there are two types of accounts: contract accounts and externally owned accounts. When we say a transaction is “contract-creating,” we mean that the purpose of the transaction is to create a new contract account.
In order to create a new contract account, we first declare the address of the new account using a special formula. Then we initialize the new account by:
Setting the nonce to zero
If the sender sent some amount of Ether as value with the transaction, setting the account balance to that value
Deducting the value added to this new account’s balance from the sender’s balance
Setting the storage as empty
Setting the contract’s codeHash as the hash of an empty string
Once we initialize the account, we can actually create the account, using the init code sent with the transaction (see the “Transaction and messages” section for a refresher on the init code). What happens during the execution of this init code is varied. Depending on the constructor of the contract, it might update the account’s storage, create other contract accounts, make other message calls, etc.
As the code to initialize a contract is executed, it uses gas. The transaction is not allowed to use up more gas than the remaining gas. If it does, the execution will hit an out-of-gas (OOG) exception and exit. If the transaction exits due to an out-of-gas exception, then the state is reverted to the point immediately prior to transaction. The sender is not refunded the gas that was spent before running out.
Boo hoo.
However, if the sender sent any Ether value with the transaction, the Ether value will be refunded even if the contract creation fails. Phew!
If the initialization code executes successfully, a final contract-creation cost is paid. This is a storage cost, and is proportional to the size of the created contract’s code (again, no free lunch!) If there’s not enough gas remaining to pay this final cost, then the transaction again declares an out-of-gas exception and aborts.
If all goes well and we make it this far without exceptions, then any remaining unused gas is refunded to the original sender of the transaction, and the altered state is now allowed to persist!
Hooray!
Message calls
The execution of a message call is similar to that of a contract creation, with a few differences.
A message call execution does not include any init code, since no new accounts are being created. However, it can contain input data, if this data was provided by the transaction sender. Once executed, message calls also have an extra component containing the output data, which is used if a subsequent execution needs this data.
As is true with contract creation, if a message call execution exits because it runs out of gas or because the transaction is invalid (e.g. stack overflow, invalid jump destination, or invalid instruction), none of the gas used is refunded to the original caller. Instead, all of the remaining unused gas is consumed, and the state is reset to the point immediately prior to balance transfer.
Until the most recent update of Ethereum, there was no way to stop or revert the execution of a transaction without having the system consume all the gas you provided. For example, say you authored a contract that threw an error when a caller was not authorized to perform some transaction. In previous versions of Ethereum, the remaining gas would still be consumed, and no gas would be refunded to the sender. But the Byzantium update includes a new “revert” code that allows a contract to stop execution and revert state changes, without consuming the remaining gas, and with the ability to return a reason for the failed transaction. If a transaction exits due to a revert, then the unused gas is returned to the sender.
блокчейна ethereum
habr bitcoin bitcoin хайпы ethereum форум bitcoin json cryptocurrency index bitcoin fund ethereum gas bitcoin de monero обменник платформ ethereum эфириум ethereum bitcoin com space bitcoin
bitcoin график
bitcoin перевод биржа monero testnet bitcoin transaction bitcoin bitcoin стоимость bitcoin china bitcoin обменять monero форум
видео bitcoin 9000 bitcoin bitcoin click byzantium ethereum ethereum explorer monero rur
unconfirmed bitcoin bitcoin monkey вики bitcoin и bitcoin lucky bitcoin форумы bitcoin salt bitcoin кости bitcoin electrum ethereum
collector bitcoin ethereum online
bitmakler ethereum roulette bitcoin монета ethereum bitcoin synchronization rigname ethereum pay bitcoin
bitcoin bitcointalk monero майнер bitcoin 123 p2pool bitcoin bitcoin brokers reverse tether email bitcoin ultimate bitcoin bitcoin coingecko bitcoin проект википедия ethereum bitcoin life flash bitcoin ann ethereum bitcoin monkey wei ethereum bitcoin pool bitcoin forbes bitcoin форум ad bitcoin ethereum project store bitcoin bitcoin экспресс боты bitcoin bitcoin metatrader monero сложность bitcoin login unconfirmed bitcoin лохотрон bitcoin faucets bitcoin bitcoin news зебра bitcoin neo cryptocurrency monero carding bitcoin bitcoin окупаемость bitcoin alert криптовалюта tether bubble bitcoin
ethereum bitcoin bitcoin работа bitcoin hype
форумы bitcoin email bitcoin bitcoin graph bitcoin knots котировки bitcoin майнить bitcoin why cryptocurrency locate bitcoin валюта bitcoin bitcoin аккаунт ethereum testnet bounty bitcoin bitcoin token connect bitcoin pizza bitcoin bitcoin conf bitcoin ann ethereum токен bitcoin local конференция bitcoin bitcoin server кран ethereum bitcoin cash wmz bitcoin майнеры ethereum blender bitcoin bitcoin motherboard доходность ethereum bitcoin quotes ethereum игра bitcoin шахты bitcoin блог bitcoin cash to both.заработать monero
bitcoin microsoft ethereum mine
monero майнить bitcoin cards bitcoin today bitcoin пополнение buy tether bitcoin основы monero купить bitcoin зарегистрироваться
ethereum прибыльность cms bitcoin bitcoin сбербанк кран bitcoin bcn bitcoin проекта ethereum where m is the mixHash, n is the nonce, Hn is the new block’s header (excluding the nonce and mixHash components, which have to be computed), Hn is the nonce of the block header, and d is the DAG, which is a large data set.получить bitcoin
bitcoin click будущее ethereum bitcoin knots счет bitcoin эмиссия bitcoin bitcoin рулетка alipay bitcoin bitcoin block блог bitcoin dance bitcoin стоимость monero bitcoin cgminer bitcoin block market bitcoin bitcoin prices bitcoin переводчик claymore monero bitcoin synchronization
bitcoin froggy matrix bitcoin курс ethereum настройка monero vizit bitcoin лотереи bitcoin
windows bitcoin ethereum studio bitcoin start red bitcoin reklama bitcoin In addition, these norms have withstood the test of time and have proven their resilience in ways that are not obvious. You would not want to be the first person to fly in a car/plane hybrid, for example, because you wouldn’t know how safe such a vehicle is. Something that’s been around has proven its relative security. Bitcoin, in a sense, has the world’s richest bug bounty to reveal any security flaws. As a result, Bitcoin has proven its security with the only thing that can really test it: time. Every other coin is much *****er and/or has proven to be less secure.прогнозы bitcoin
bitcoin neteller bitcoin compromised bitcoin комиссия bitcoin metal
ethereum coin bitcoin блог bitcoin игра p2pool bitcoin system bitcoin zona bitcoin bitcoin pump
казахстан bitcoin bitcoin graph
bitcoin foto bitcoin клиент my ethereum red bitcoin обзор bitcoin chaindata ethereum unconfirmed monero кошельки bitcoin bitcoin компьютер
математика bitcoin
monero биржи poloniex monero Protocolmultiply bitcoin bitcoin значок cryptocurrency market проект bitcoin автомат bitcoin time bitcoin
bitcoin коллектор bitcoin avto
системе bitcoin mineable cryptocurrency bitcoin split bitcoin страна genesis bitcoin
логотип ethereum компания bitcoin курс ethereum bitcoin example Constantinople - February 2019rocket bitcoin dwarfpool monero tether валюта 50 bitcoin
ethereum настройка шахты bitcoin bitcoin funding
ethereum pool 1 bitcoin bitcoin golden игры bitcoin код bitcoin bitcoin ads bitcoin новости контракты ethereum cryptocurrency analytics kraken bitcoin cryptocurrency bitcoin get робот bitcoin faucet cryptocurrency bitcoin usd кости bitcoin bitcoin описание bitcoin cny okpay bitcoin If you have a small number of coins and you want easy and quick access to them, it is best to use a desktop or mobile wallet (software wallets). These are great as they do not take up much space on your computer or mobile, and they are reasonably secure.bitcoin paw bitcoin lurk сборщик bitcoin 60 bitcoin ethereum casino bitcoin protocol
ethereum pool bitcoin pools avatrade bitcoin cryptocurrency calculator bitcoin save bitcoin dump rush bitcoin bitcoin приложение pow bitcoin bitcoin ann получить bitcoin конвектор bitcoin bitcoin banks q bitcoin bitcoin курс заработок ethereum Cryptocurrencies hold the promise of making it easier to transfer funds directly between two parties, without the need for a trusted third party like a bank or credit card company. These transfers are instead secured by the use of public keys and private keys and different forms of incentive systems, like Proof of Work or Proof of Stake.добыча bitcoin bitcoin fpga alpari bitcoin pools bitcoin dat bitcoin bitcoin segwit2x обмен ethereum joker bitcoin скачать bitcoin вход bitcoin bitcoin favicon оборудование bitcoin
вход bitcoin bitcoin etherium
ethereum forum
bitcoin сети
fpga ethereum bitcoin 3d store bitcoin калькулятор monero bitcoin анализ bitcoin dollar
polkadot dag ethereum bitcoin co токены ethereum cryptocurrency calculator bitcoin мастернода bitcoin neteller bitcoin charts r bitcoin ethereum core ethereum news monero обменять bitcoin millionaire bitcoin покупка
bitcoin лохотрон отследить bitcoin bitcoin стоимость ethereum bitcointalk pay bitcoin bitcoin ishlash bitcoin io обмен monero go ethereum фото bitcoin
bitcoin click wallets cryptocurrency валюта bitcoin fox bitcoin bitcoin доходность bitcoin world проверка bitcoin flash bitcoin
bitcoin prosto bitcoin playstation bitcoin crypto bitcoin установка bitcoin получить hd7850 monero bitcoin 10 bitcoin rpg алгоритм monero bitcoin options bitcoin сервера
обменники ethereum фермы bitcoin bitcoin аналоги ethereum blockchain lurkmore bitcoin bitcoin flip xapo bitcoin lucky bitcoin bitcoin лучшие bitcoin roll ethereum курс кран bitcoin lite bitcoin надежность bitcoin euro bitcoin bitcoin neteller bitrix bitcoin bitcoin tm registration bitcoin bitcoin автосерфинг nicehash bitcoin математика bitcoin rbc bitcoin mineable cryptocurrency обмен ethereum
*****uminer monero golden bitcoin
trading cryptocurrency ethereum асик supernova ethereum магазины bitcoin bitcoin ads
bitcoin динамика
bitcoin форк контракты ethereum bitcoin mining auction bitcoin sportsbook bitcoin bitcoin 1000 bitcoin com nicehash ethereum bitcoin flex ethereum котировки x2 bitcoin алгоритмы ethereum bitcoin pro
exchange ethereum debian bitcoin air bitcoin Physical Coinsbitcoin explorer tether комиссии So far, we have contended that the 'problems being solved' by Bitcoin are not abstractions (ie., 'central banking' or 'soft money') but the concrete challenges of coordinating specialized human labor outside a command-and-control structure. We’ve established that the motivations for avoiding a command-and-control structure are threefold:Byzantine fault tolerance. Of course, the requirements for an Internet currency without a central authority are more stringent. A distributed ledger will inevitably have forks, which means that some nodes will think block A is the latest block, while other nodes will think it is block B. This could be because of an adversary trying to disrupt the ledger's operation or simply because of network latency, resulting in blocks occasionally being generated near-simultaneously by different nodes unaware of each other's blocks. Linked timestamping alone is not enough to resolve forks, as was shown by Mike Just in 1998.26bitcoin forbes клиент bitcoin bitcoin scrypt bitcoin инструкция ethereum создатель card bitcoin live bitcoin ethereum пулы
bitcoin airbitclub cryptocurrency wallets расшифровка bitcoin ethereum график china bitcoin monero график
zcash bitcoin bitcoin рублях
бесплатно ethereum bitcoin цены statistics bitcoin aliexpress bitcoin
ethereum dao monero usd raspberry bitcoin bitcoin loto bitcoin приват24 armory bitcoin ethereum валюта monero simplewallet ethereum foundation новые bitcoin bitcoin co miningpoolhub ethereum china bitcoin запрет bitcoin attack bitcoin cryptocurrency wikipedia bitcoin сбор ethereum заработать mini bitcoin ava bitcoin bitcoin bloomberg ethereum linux
bitcoin shop bitcoin machine spend bitcoin bitcoin коллектор bitcoin project bitcoin коды carding bitcoin ethereum price bitcoin реклама bitcoin продам bitcoin окупаемость bitcoin paypal tether chvrches ethereum mine разработчик bitcoin titan bitcoin bonus bitcoin bitcoin магазины adc bitcoin запросы bitcoin keystore ethereum bitcoin fields bitcoin machines падение bitcoin monero криптовалюта
ethereum сбербанк ethereum stats lamborghini bitcoin abc bitcoin ethereum web3 фарминг bitcoin bitcoin брокеры bitcoin genesis dog bitcoin block bitcoin pool bitcoin multiply bitcoin monero asic
p2pool ethereum ubuntu bitcoin ethereum supernova exchanges bitcoin blacktrail bitcoin bitcoin pdf polkadot блог mine ethereum dag ethereum вход bitcoin ad bitcoin tera bitcoin bitcoin central bitcoin blue ethereum stats bitcoin weekend bitcoin лого alpha bitcoin se*****256k1 ethereum exchanges bitcoin json bitcoin
bitcoin crash
faucet bitcoin bitcoin получить Some black market sites may seek to steal bitcoins from customers. The bitcoin community branded one site, Sheep Marketplace, as a scam when it prevented withdrawals and shut down after an alleged bitcoins theft. In a separate case, escrow accounts with bitcoins belonging to patrons of a different black market were hacked in early 2014.bit bitcoin api bitcoin bitcoin people calls of unity and conviction, and we see similar unifying doctrines today.byzantium ethereum bitcoin friday bitcoin asic ethereum addresses bitcoin converter ethereum calc monero price bitcoin legal bitcoin heist wmx bitcoin mac bitcoin ethereum contract автокран bitcoin сколько bitcoin будущее bitcoin bitcoin вложения bitcoin автосерфинг cryptocurrency tech half bitcoin bitcoin income swarm ethereum bitcoin казино bitcoin buy форк bitcoin рост bitcoin
bitcoin котировка установка bitcoin ethereum обменники сборщик bitcoin bitcoin софт buy tether bitcoin casino rx580 monero flappy bitcoin ethereum eth Bitstamp In 2015 cryptocurrencies worth $5 million were stolenPaper Walletbitcoin pdf captcha bitcoin bitcoin автоматически trader bitcoin panda bitcoin иконка bitcoin qtminer ethereum bitcoin tor 1070 ethereum транзакции ethereum cz bitcoin bitcoin suisse bitcoin tm monero 1060 знак bitcoin bitcoin 4096 bitcoin rigs
ethereum transaction payeer bitcoin exchanges bitcoin bitcoin blockchain ethereum telegram bitcoin украина cryptocurrency tech arbitrage bitcoin bestexchange bitcoin обменник bitcoin tails bitcoin master bitcoin bitcoin girls криптовалют ethereum кредит bitcoin
поиск bitcoin hourly bitcoin bitcoin get flypool monero bitcoin bounty сбербанк bitcoin world bitcoin bitcoin multibit
bitcoin автосерфинг ethereum complexity bitcoin prominer clicks bitcoin in bitcoin ethereum заработать адрес bitcoin bitcoin скачать bitcoin рубли bitcoin эмиссия tether coin bitcoin casascius hash bitcoin bitcoin base bitcoin xl usa bitcoin project ethereum maps bitcoin bitcoin gif bitcoin value bubble bitcoin ethereum siacoin equihash bitcoin бесплатно ethereum будущее ethereum bitcoin habr bitcoin today galaxy bitcoin bio bitcoin ethereum wallet trade cryptocurrency ethereum info бумажник bitcoin moneypolo bitcoin курсы bitcoin bitcoin markets bitcoin forecast bitcoin hashrate monero pools blender bitcoin datadir bitcoin bitcoin майнер nodes bitcoin How Bitcoin is Differentreindex bitcoin
bitcoin life
blog bitcoin
bitcoin payza bitcoin pizza top bitcoin mine ethereum ethereum coins api bitcoin я bitcoin bitcoin script
bitcoin daily ethereum claymore asics bitcoin hd7850 monero серфинг bitcoin сделки bitcoin double bitcoin
bitcoin основатель основатель ethereum okpay bitcoin chvrches tether bitcoin legal bitcoin vk
зарабатываем bitcoin bitcoin payment использование bitcoin people bitcoin ethereum эфириум bitcoin services
monero rur bitcoin synchronization bank bitcoin monero купить calc bitcoin magic bitcoin cardano cryptocurrency difficulty monero bitcoin preev kong bitcoin ethereum android bitcoin fox bitcoin доходность bitcoin майнить исходники bitcoin Parent Hash:Imagine you’ve ordered some apples from an online shop. However, when you receive the delivery, you find out that most of the apples have already become rotten. Now, assuming the shop doesn’t provide refunds, there’s not much you can do about it, is there?обмен tether segwit bitcoin майнер monero пример bitcoin
green bitcoin bitcoin protocol обналичить bitcoin
bitcoin трейдинг your bitcoin bitcoin update bitcoin gold cryptocurrency ethereum cgminer monero ann bitcoin heist bitcoin system
bitcoin community future bitcoin bitcoin usa bitcoin hashrate
nova bitcoin обменник bitcoin bitcoin links партнерка bitcoin testnet bitcoin ставки bitcoin conference bitcoin ethereum dao bitcoin people bitcoin up ubuntu bitcoin zcash bitcoin bitcoin swiss bitcoin зарегистрироваться dance bitcoin tx bitcoin
monero dwarfpool обмен bitcoin пожертвование bitcoin bitcoin добыть перспективы bitcoin grayscale bitcoin ethereum decred bitcoin loan bitcoin news bitcoin заработок падение ethereum bitcoin steam monero blockchain coingecko ethereum multibit bitcoin bitcoin evolution monero github ethereum создатель bitcoin system faucet ethereum
monero spelunker я bitcoin
10 bitcoin bitcoin hardfork bitrix bitcoin халява bitcoin bitcoin etf bitcoin сложность платформе ethereum bitcoin 2048 prune bitcoin monero валюта bitcoin шахта
bitcoin instant bitcoin knots bitcoin раздача bitcoin apple reverse tether panda bitcoin widget bitcoin bitcoin котировка
accepts bitcoin bitcoin china bitcoin clock ethereum mist bitcoin girls bitcoin database
forecast bitcoin bitcoin путин bitcoin алматы goldmine bitcoin bitcoin paypal статистика ethereum bitcoin store p2p bitcoin ethereum php cryptocurrency arbitrage ethereum io
ферма ethereum stellar cryptocurrency It's the currency of Ethereum apps.Unauthorized miningmonero gpu qtminer ethereum