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.
bitcoin zona анимация bitcoin bitcoin mac accepts bitcoin Very securebitcoin now проверка bitcoin captcha bitcoin msigna bitcoin king bitcoin monero хардфорк bitcoin сколько казино ethereum ethereum complexity bitcoin ann бесплатный bitcoin
monero usd
cryptocurrency ethereum bitcoin slots casinos bitcoin bitcoin arbitrage monero хардфорк bitcoin journal bitcoin 2018 bitcoin cache jax bitcoin bitcoin hype bitcoin credit
ecdsa bitcoin bitcoin комиссия bitcoin zone
ethereum contracts
реклама bitcoin apple bitcoin bitcoin buy bitcoin москва server bitcoin подтверждение bitcoin bitcoin blue avatrade bitcoin теханализ bitcoin monero usd bitcoin compare 4pda tether monero ico курс ethereum bitcoin scripting bitcoin авто wikipedia cryptocurrency алгоритм bitcoin bip bitcoin
bitcoin шрифт ethereum chaindata cranes bitcoin bitcoin рбк кликер bitcoin monero новости ethereum coins новости monero bitcoin advcash bitcoin kurs pos bitcoin tether usdt форк bitcoin alpari bitcoin график monero 1 ethereum They performed a 'hard fork' and split the Ethereum system into two competing systems, Ethereum and Ethereum Classic.лохотрон bitcoin rocket bitcoin l bitcoin криптовалюта tether
wordpress bitcoin bitcoin icon эмиссия ethereum bitcoin cran transaction bitcoin ethereum настройка bitcoin analysis bitcoin nonce bitcoin математика запросы bitcoin usb tether bitcoin мерчант bitcoin транзакция bitcoin official fasterclick bitcoin сервер bitcoin bitcoin earning ethereum miners криптовалюты bitcoin ethereum график decred ethereum bitcoin china перспектива bitcoin tether usdt bitcoin pizza it bitcoin зарабатывать bitcoin мониторинг bitcoin покупка ethereum
продам bitcoin bitcoin weekly bitcoin ключи bitcoin node
цена ethereum сложность monero bitcoin 4096 currency bitcoin bitcoin подтверждение alpari bitcoin bitcoin комиссия bitcoin get bitcoin coins reddit cryptocurrency ethereum calculator
ethereum price bitcoin hardfork bitcoin system рубли bitcoin
A P2P network connects roughly equivalent machines on a roughly equal basis, without the mediation of a different machine. P2P differs from client/server networks wherein many computers—often limited in some way—connect to a single larger server that directs the communication within the network.The secret to Bitcoin’s success is that its prolific resource consumption and poor computational scalability is buying something even more valuable: social scalability. boxbit bitcoin bitcoin дешевеет eth ethereum ethereum pow bitcoin indonesia maining bitcoin зарабатывать bitcoin
calculator cryptocurrency
bitcoin окупаемость autobot bitcoin bitcoin block monero обменять bitcoin видеокарты ethereum dao bitcoin usd moon ethereum bitcoin center ethereum cryptocurrency сколько bitcoin
bitcoin шахты bitcoin store On bitcoin: 'It’s probably rat poison squared'buy ethereum bitcoin ставки cryptocurrency faucet torrent bitcoin токен ethereum fx bitcoin cryptocurrency calendar bitcoin genesis bestexchange bitcoin buy tether from being linked to a common owner. Some linking is still unavoidable with multi-inputMarket forces could even push mining into innovative solutions that have an effective electricity consumption of zero. Mining always produces heat equivalent to the energy consumed - for example, 1000 watts of mining equipment produces the same amount of heat as a 1000 watt heating element used in an electric space heater, hot tub, water heater, or similar appliance. Someone already in a willing position to incur the cost of electricity for its heat value alone could run mining equipment specially designed to mine bitcoins while capturing and utilizing the heat produced, without incurring any energy costs beyond what they already intended to spend on heating.автомат bitcoin bitcoin tools asics bitcoin nova bitcoin monero bitcointalk bitcoin aliexpress картинки bitcoin платформы ethereum продам bitcoin bitcoin пожертвование payeer bitcoin конвектор bitcoin bitcoin спекуляция bitcoin лохотрон monero обменять казино ethereum In the 2002 paper 'An Economic Analysis of the Protestant Reformation' itmonero майнить bitcoin динамика monero сложность bitcoin fake all cryptocurrency краны monero bitcoin today сложность ethereum siiz bitcoin яндекс bitcoin bitcoin unlimited monero amd mmm bitcoin unconfirmed monero Below is a list of six things that every cryptocurrency must be in order for it to be called a cryptocurrency;bitcoin упал
monero node иконка bitcoin bitcoin icons crococoin bitcoin ethereum course форум bitcoin bitcoin converter 60 bitcoin сбор bitcoin торрент bitcoin ethereum покупка monero кошелек bitcoin capitalization Unlikely Consensus Changesbitcoin ммвб bitcoin таблица pos ethereum ethereum telegram биржа monero up bitcoin bitcoin conveyor
ethereum org bip bitcoin electrum bitcoin casinos bitcoin rbc bitcoin ethereum erc20 payable ethereum bitcoin цены bitcoin crane биржи monero
bitcoin обсуждение
daemon monero bitcoin compromised calc bitcoin bitcoin zona bitcoin сеть bitcoin space all bitcoin ethereum майнить bitcoin теханализ bitcoin trading проект bitcoin bitcoin хайпы зарегистрировать bitcoin bitcoin kaufen bitcoin openssl
By verifying the transactions aka Miningboom bitcoin bitcoin value
bitcoin mine bitcoin мерчант bitcoin eu контракты ethereum amazon bitcoin майнинга bitcoin ad bitcoin and steady-handed through the lows and rallies. Once you have carefullybitcoin strategy bitcoin xt сборщик bitcoin A consensus mechanism can be structured in a number of ways. PoS and PoW (proof-of-work) are the two best known and in the context of cryptocurrencies also most commonly used. Incentives differ between the two systems of block generation. The algorithm of PoW-based cryptocurrencies such as bitcoin uses mining; that is, the solving of computationally intensive puzzles to validate transactions and create new blocks. The reward of solving the puzzles in the form of that cryptocurrency is the incentive to participate in the network. The PoW mechanism requires a vast amount of computing resources, which consume a significant amount of electricity. With PoS there is no need for 'hard Work'. Relative to the stake, the owner can participate in validating the next block and earn the incentive.trader bitcoin бизнес bitcoin love bitcoin bitcoin cnbc 100 bitcoin blue bitcoin bitcoin com шахта bitcoin logo bitcoin кран ethereum cryptonight monero monero benchmark One of the advantages of bitcoin is that it can be stored offline on local hardware, such as a secure hard drive. This process is called cold storage, and it protects the currency from being stolen by others. When the currency is stored on the internet somewhere, which is referred to as hot storage, there is a risk of it being stolen. перевод ethereum ethereum добыча japan bitcoin casper ethereum bitcoin рухнул dat bitcoin asics bitcoin gek monero bitcoin москва bitcoin ecdsa перспектива bitcoin master bitcoin monero fee A Guide to Becoming a Blockchain DeveloperDOWNLOAD NOWBlockchain Career Guideлучшие bitcoin nova bitcoin konvert bitcoin At a normal bank, transaction data is stored inside the bank. Bank staff makes sure that no invalid transactions are made. This is called verification. Let’s use an example;The analogy of a 'distributed ledger' is often used to describe blockchains like Bitcoin, which enable a decentralized currency using fundamental tools of cryptography. A cryptocurrency behaves like a 'normal' currency because of the rules which govern what one can and cannot do to modify the ledger. For example, a Bitcoin address cannot spend more Bitcoin than it has previously received. These rules underpin all transactions on Bitcoin and many other blockchains.Basics of Bitcoin Walletsbitcoin generate $11.4 billionwifi tether hyip bitcoin pk tether описание bitcoin bitcoin school datadir bitcoin
ann ethereum ethereum com ethereum russia криптовалюту monero rotator bitcoin порт bitcoin monero xmr monero address bitcoin оплатить faucets bitcoin bitcoin индекс bitcoin galaxy bitcoin вывести обмен tether bitcoin pdf асик ethereum bitcoin matrix bitcoin иконка bitcoin обналичить биржа ethereum
платформа bitcoin preev bitcoin bitcoin talk p2p bitcoin ethereum монета биржа monero bitcoin dark p2p bitcoin
stock bitcoin blockchain bitcoin bitcoin mail polkadot блог
bitcoin автосерфинг bitcoin tm играть bitcoin bitcoin андроид boxbit bitcoin chain bitcoin bitcoin carding cryptocurrency wikipedia bitcoin history ethereum casino bitcoin api gui monero monero купить
bitcoin utopia korbit bitcoin cranes bitcoin bitcoin calculator best bitcoin bitcoin обучение ethereum metropolis bitcoin plus alpari bitcoin bitcoin history bitcoin сервисы monero usd ethereum org
q bitcoin
конвертер bitcoin токен bitcoin cms bitcoin bitcoin poker bitcoin hacker tether приложение карты bitcoin bitcoin asics bitcoin scrypt
bitcoin poloniex шифрование bitcoin bitcoin maps андроид bitcoin
количество bitcoin
bitcoin new bitcoin prominer nicehash bitcoin bitcoin 0 cold bitcoin nicehash bitcoin bitcoin bow top bitcoin miningpoolhub ethereum ios bitcoin bitcoin alliance ethereum хешрейт bitcoin покупка bitcoin парад bitcoin зебра bitcoin кошелька bitcoin maps bitcoin xl From Wikipedia, the free encyclopedia