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 poloniex alliance bitcoin Did you know?сложность bitcoin ocean bitcoin bitcoin картинка
monero bitcointalk
view bitcoin bitcoin код bitcoin up forum cryptocurrency проект ethereum tether usdt
bitcoin loan bitcoin комментарии antminer bitcoin bitcoin cranes bitcoin knots терминалы bitcoin стоимость bitcoin
5 bitcoin ethereum code strategy bitcoin Bank of Thailand’s and Project Inthanon.Decentralizing file storage on the internet brings clear benefits. Distributing data throughout the network protects files from getting hacked or lost.технология bitcoin ultimate bitcoin
kurs bitcoin clicker bitcoin пицца bitcoin ethereum usd mikrotik bitcoin bitcoin доходность british bitcoin ethereum заработок видеокарта bitcoin bitcoin bcn sgminer monero scrypt bitcoin torrent bitcoin ethereum browser bitcoin 999 bitcoin биткоин tether io bitcoin goldmine bitcoin крах adc bitcoin кошелька ethereum map bitcoin ethereum ethash bitcoin кран master bitcoin bitcoin видео bitcoin armory добыча ethereum криптовалюты bitcoin ethereum rub get bitcoin
calculator cryptocurrency alpha bitcoin 20 bitcoin bitcoin conference balance bitcoin rus bitcoin платформу ethereum bitcoin видеокарты bitcoin автоматически bitcoin up bitcoin играть poloniex ethereum bitcoin капча
bitcoin future bitcoin sportsbook bitcoin boxbit bitcoin coingecko bitcoin global bitcoin faucets продать ethereum bitcoin скачать monero пул love bitcoin bitcoin автосерфинг bitcoin count ethereum википедия
nvidia monero терминалы bitcoin get bitcoin up bitcoin trezor bitcoin bitcoin coingecko pizza bitcoin exchange bitcoin exchange cryptocurrency ann monero coingecko bitcoin контракты ethereum
ethereum проблемы habr bitcoin ethereum картинки капитализация ethereum stellar cryptocurrency txid ethereum ethereum io конец bitcoin bitcoin торрент bitcoin foto bitcoin сайт bitcoin vpn расчет bitcoin bitcoin торговать birds bitcoin bitcoin alien collector bitcoin bitcoin суть аналоги bitcoin bitcoin google ethereum block bitcoin конвертер ethereum dao apple bitcoin bitcoin location ethereum падение explorer ethereum ethereum упал cryptocurrency calculator bitcoin links tether 4pda free monero bitcoin 2017 cubits bitcoin
отслеживание bitcoin bitcoin tor майнинг ethereum bitcoin algorithm bitcoin даром bitcoin virus ethereum org криптовалют ethereum equihash bitcoin
bitcoin scan поиск bitcoin кран ethereum bitcoin 50
bitcoin xl лохотрон bitcoin daemon monero
bitcoin nvidia bitcoin elena
reddit ethereum bitcoin nodes bitcoin транзакция cryptocurrency это kong bitcoin робот bitcoin up bitcoin bitcoin форекс ethereum график bitcoin nachrichten ethereum swarm monero майнить chaindata ethereum бонусы bitcoin bitcoin 20
bitcoin зарегистрироваться bitcoin лохотрон
bitcoin зарегистрироваться сбербанк bitcoin clicks bitcoin the ethereum статистика bitcoin график bitcoin usd bitcoin ccminer monero ethereum pools bitcoin auto
ethereum claymore bitcoin lurkmore bitcoin greenaddress freeman bitcoin future bitcoin bitcoin scripting ethereum асик
bitcoin india aliexpress bitcoin bitcoin таблица bitcoin conveyor bitcoin location moto bitcoin ethereum habrahabr bitcoin sec ethereum pool bitcoin лопнет bitcoin proxy bitcoin рублях bitcoin home ccminer monero bitcoin часы майнить ethereum trader bitcoin python bitcoin ethereum russia bitcoin virus alpari bitcoin time bitcoin bitcoin зарегистрироваться mine ethereum
top bitcoin bitcoin cran ethereum асик bitcoin рублях bitcoin passphrase краны ethereum payable ethereum etf bitcoin bitcoin instant cranes bitcoin bitcoin ether bitcoin расчет bitcoin service bitcoin генератор ethereum бесплатно cz bitcoin bitcoin пул bitcoin тинькофф tether комиссии genesis bitcoin bitcoin conveyor
криптовалюта tether переводчик bitcoin Besides overall volatility, bitcoin has historically proven itself to be subject to market whims and news. Particularly as the cryptocurrency boom swept up a number of digital currencies into record-high prices around the end of 2017, news from the digital currency sphere could prompt investors to make quick decisions, sending the price of bitcoin upward or downward quickly. This volatility is not inherent to gold for reasons mentioned above, making it perhaps a safer asset.bitcoin onecoin
bitcoin миксер программа tether flypool monero bitcoin data bitcoin зарегистрироваться bitcoin money
ethereum rig bitcointalk bitcoin обменники bitcoin bitfenix bitcoin monero сложность people bitcoin
сервисы bitcoin видеокарты ethereum bitcoin changer bitcoin multiplier trader bitcoin bitcoin lurk
bitcoin технология avto bitcoin бесплатные bitcoin lottery bitcoin bitcoin cap ethereum investing bitcoin scripting bitcoin торговля pull bitcoin bitcoin биткоин bitcoin com locate bitcoin ethereum контракт 1 ethereum tether android цены bitcoin bitcoin mmgp ethereum прогноз bitcoin stellar bitcoin code котировки ethereum bitcoin golden
понятие bitcoin 777 bitcoin bitcoin arbitrage bitcoin вебмани
ethereum контракты bitcoin iso ethereum контракт usa bitcoin окупаемость bitcoin faucet cryptocurrency
keepkey bitcoin сокращение bitcoin bitcoin book
bitcoin видеокарты bitcoin bcc spend bitcoin bitcoin обменять fpga ethereum расчет bitcoin создать bitcoin сигналы bitcoin аналоги bitcoin надежность bitcoin dapps ethereum bitcoin goldman магазины bitcoin bitcoin конвектор миллионер bitcoin bitcoin транзакции bitcoin проблемы
shot bitcoin биржа monero forbes bitcoin
bitcoin mempool bitcoin счет ethereum torrent
bitcoin биткоин
pool bitcoin bitcoin golden bitcoin scan ethereum телеграмм bitcoin фарм сети ethereum
кошелька bitcoin etoro bitcoin cryptocurrency dash block bitcoin отдам bitcoin bitcoin технология china bitcoin ico cryptocurrency
ethereum википедия status bitcoin
tinkoff bitcoin bitcoin exchanges ethereum studio
ethereum address bitcoin cache
bitcoin mempool
fx bitcoin Once John sends the funds, they are then sent to the Litecoin blockchain.ethereum stratum You need to backup your wallet on a regular basis to make sure that all recent Bitcoin change addresses and all new Bitcoin addresses you created are included in your backup. However, all applications will be soon using wallets that only need to be backed up once.tether пополнение bitcoin dynamics
monero ann stats ethereum продам bitcoin bitcoin explorer рулетка bitcoin партнерка bitcoin puzzle bitcoin
bitcoin scripting порт bitcoin bitcoin автомат bitcoin exchanges будущее ethereum rotator bitcoin bitcoin ukraine
nodes bitcoin In the financial world the applications are more obvious and the revolutionary changes more imminent. Blockchains will change the way stock exchanges work, loans are bundled, and insurances contracted. They will eliminate bank accounts and practically all services offered by banks. Almost every financial institution will go bankrupt or be forced to change fundamentally, once the advantages of a safe ledger technology without transaction fees are widely understood and implemented. After all, the financial system is built on taking a small cut of your money for the privilege of facilitating a transaction. Instead of paying high transaction fees to the banks and taking several days for payments to settle and clear, they can just transact between each other on blockchain-based exchanges with ease and at no time. Bankers will become mere advisers, not gatekeepers of money. Stockbrokers will no longer be able to earn commissions and the buy/sell spread will disappear.How Does a Blockchain Work?кран bitcoin bitcoin коллектор bitcoin billionaire ethereum пул ethereum network monero купить roulette bitcoin bitcoin payoneer bitcoin javascript claim bitcoin currency bitcoin ethereum russia создать bitcoin
bitcoin ферма bitcoin приват24 ethereum прибыльность bitcoin x2 qr bitcoin bitcoin masters china bitcoin биржи monero ethereum faucet bitcoin орг zcash bitcoin bitcoin картинки gek monero total cryptocurrency bitcoin service ethereum пулы bitcoin rt
bitcoin lurkmore
1080 ethereum bitcoin зебра *****a bitcoin криптовалюта ethereum
ads bitcoin bitcoin magazin tether обмен testnet ethereum monero gpu bitcoin xpub capitalization bitcoin сколько bitcoin value bitcoin
bitcoin программа bitcoin динамика mercado bitcoin excel bitcoin This isn’t a one-time incident either. Whether its social media, banks, internet service providers or the U.S. election, centralized servers are hacked all the time. However, the good news is that decentralized servers are virtually impossible to hack. Here’s why!bitcoin создатель blue bitcoin bitcoin joker ethereum добыча bitcoin etherium
bux bitcoin ethereum course курс tether dark bitcoin abi ethereum ethereum рубль pirates bitcoin курс ethereum bitcoin оплатить
bitcoin скачать bitcoin casinos bitcoin бот bitcoin in bitcoin gift bitcoin mixer bitcoin основатель bitcoin gpu alipay bitcoin Late in 2017, a senior official from Zimbabwe’s central bank stated that bitcoin was not 'actually legal.' While the extent to which it can and cannot be used is not yet clear, the central bank is apparently undertaking research to determine the risks. CoinDesk recently produced a podcast series about the future of bitcoin in Africa, including in Zimbabwe. In 2009, Satoshi Nakamoto launched bitcoin as the world’s first cryptocurrency. The code is open source, which means it can be modified by anyone and freely used for other projects. Many cryptocurrencies have launched with modified versions of this code, with varying levels of success.bitcoin дешевеет At a very basic level, you can think of a smart contract like a sort of vending machine: a script which, when called with certain parameters, performs some actions or computation if certain conditions are satisfied. For example, a simple vendor smart contract could create and assign ownership of a digital asset if the caller sends ether to a specific recipient.bitcoin usa bitcoin переводчик bitcoin 2x
putin bitcoin шифрование bitcoin
bitcoin block doge bitcoin bitcoin переводчик space bitcoin bitcoin daily fire bitcoin bitcoin nachrichten Despite all the hype, a word of warning is required on a market that has seen price swings of 20% in a day. These sort of moves are known in the market as widow makers, in that they can wipe out experienced traders just as easily as novice traders.Some innovations based on blockchain may be small and seemingly incremental. With big banks like Santander, this is, perhaps, understandable. The Spanish bank recently used Ethereum to settle a $20 million bond trade.KEY TAKEAWAYScryptonight monero monero 1070