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
bitcoin blockstream
hit bitcoin bitcoin trojan bitcoin sportsbook bitcoin монет torrent bitcoin
bitcoin china развод bitcoin today bitcoin
cryptocurrency calculator
технология bitcoin bitcoin euro tp tether dog bitcoin ethereum картинки bitcoin client equihash bitcoin monero майнинг carding bitcoin программа tether fire bitcoin json bitcoin cz bitcoin moon bitcoin 2x bitcoin автомат bitcoin
сложность monero бесплатно ethereum bitcoin биржа bitcoin mainer
bitcoin 100
продам bitcoin bitcoin автомат unconfirmed monero bitcoin lion reverse tether графики bitcoin обновление ethereum bitcoin ваучер cudaminer bitcoin bitcoin flapper
bitcoin machine инвестирование bitcoin bistler bitcoin bitcoin падает знак bitcoin
конец bitcoin
bitcoin bloomberg
ethereum erc20 Ethereum tokensEarn interest – on ETH and other Ethereum-based tokens.tether верификация collector bitcoin ethereum developer phoenix bitcoin ethereum описание finney ethereum etoro bitcoin bitcoin капитализация bitcoin rpc bitcoin motherboard cryptocurrency tech cryptocurrency блог bitcoin bitcoin config ethereum токены bitcoin mainer minergate bitcoin
cgminer ethereum bitcoin virus форумы bitcoin bitcoin data rocket bitcoin
ethereum gold запрет bitcoin up bitcoin bitcoin настройка 2016 bitcoin rocket bitcoin ethereum падает to bitcoin converter bitcoin bitcoin debian bloomberg bitcoin bitcoin sphere
flappy bitcoin создатель bitcoin анализ bitcoin forecast bitcoin
monero js bitcoin strategy ethereum block faucet ethereum ethereum charts bitcoin future
bitcoin today сложность bitcoin bitcoin код bitcoin hardfork kinolix bitcoin ethereum linux курс ethereum ethereum аналитика all cryptocurrency bitcoin instant Satoshi's anonymity often raises unjustified concerns because of a misunderstanding of Bitcoin's open-source nature. Everyone has access to all of the source code all of the time and any developer can review or modify the software code. As such, the identity of Bitcoin's inventor is probably as relevant today as the identity of the person who invented paper.bitcoin это Second, blockchains are frequently presented as more secure than traditional registries—a misleading claim. To see why, the overall stability of the system or platform must be separated from endpoint security—that is, the security of users and devices. True, the systemic risk of block-chains may be lower than that of many centralized institutions, but the endpoint-security risk of blockchains is far worse than the corresponding risk of traditional institutions. Block-chain transactions are near-instant, irreversible, and, in public block-chains, anonymous by design. With a blockchain-based stock registry, if a user (or broker or agent) loses control of his or her private keys—which takes nothing more than losing a phone or getting malware on a computer—the user loses his or her assets. The extraordinary history of bitcoin hacks, thefts, and scams does not inspire much confidence—according to one estimate, at least 6% of bitcoins in circulation have been stolen at least once.39будущее ethereum ethereum cryptocurrency kinolix bitcoin ethereum проекты
bitcoin easy bitcoin dynamics bitcoin nodes bitcoin tm стоимость bitcoin widget bitcoin buy tether ethereum clix buy tether wikipedia cryptocurrency bitcoin login cryptocurrency mining bitcoin capitalization tether транскрипция
установка bitcoin bitcoin euro
ethereum parity bitcoin freebitcoin pirates bitcoin gift bitcoin paypal bitcoin bitcoin symbol ethereum телеграмм ethereum markets bitcoin daemon bitcoin cz polkadot cadaver биржа ethereum casino bitcoin
daemon bitcoin
bitcoin wm
сложность bitcoin ethereum info bitcoin neteller история bitcoin bitcoin puzzle
stock bitcoin monero minergate bitcoin расчет bitcoin 2020 blocks bitcoin портал bitcoin
sha256 bitcoin адрес ethereum
фарм bitcoin Protection against physical damagebitcoin курс bitcoin io ethereum контракт
отзыв bitcoin bitcoin check мониторинг bitcoin According to Ethereum, it can be used to 'codify, decentralize, secure, and trade just about anything.' One of the big projects around Ethereum is Microsoft’s partnership with ConsenSys which offers 'Ethereum Blockchain as a Service (EBaaS) on Microsoft Azure so Enterprise clients and developers can have a single click cloud-based blockchain developer environment.'Every time the network makes an update to the database, it is automatically updated and downloaded to every computer on the network.ethereum клиент Thus, you can’t be certain of which address sent funds to another address.прогнозы bitcoin wikileaks bitcoin location bitcoin currency bitcoin бесплатные bitcoin sec bitcoin пополнить bitcoin bitcoin nedir bitcoin майнинга bitcoin virus lavkalavka bitcoin bitcoin компьютер япония bitcoin fun bitcoin cryptocurrency это бесплатный bitcoin bitcoin коды maps bitcoin хабрахабр bitcoin займ bitcoin bitcoin hesaplama faucet bitcoin bitcoin кошельки bitcoin rt claim bitcoin solo bitcoin Blockchain explained: a man purchasing something online.monero pools
bitcoin eu bitcoin yandex bitcoin инвестиции bitcoin steam arbitrage cryptocurrency bitcoin эмиссия график ethereum
адреса bitcoin credit bitcoin
ethereum siacoin cryptocurrency wallet bitcoin карты tokens ethereum jax bitcoin bitcoin plus график ethereum добыча bitcoin bitcoin технология bitcoin nedir p2p bitcoin bitcoin автор bitcoin вконтакте bitcoin jp bitcoin change exchange bitcoin bitcoin parser bitcoin weekend faucet bitcoin logo ethereum ставки bitcoin bitcoin порт bitcoin dance торрент bitcoin blender bitcoin bitcoin adress bitcoin 0 bitcoin suisse cryptocurrency faucet 1000 bitcoin all cryptocurrency ethereum ann приложения bitcoin elysium bitcoin adbc bitcoin monero miner
bitcoin laundering fast bitcoin bitcoin simple bitcoin betting tabtrader bitcoin stealer bitcoin
bitcoin бесплатно ethereum покупка форк ethereum bitcoin instaforex bitcoin cgminer blog bitcoin bitcoin сша cryptocurrency charts ethereum платформа bitcoin установка pay bitcoin bitcoin click bitcoin оборот search bitcoin uk bitcoin обновление ethereum bitcoin roll опционы bitcoin bitcoin development bitcoin кошелек bitcoin nachrichten bounty bitcoin se*****256k1 ethereum google bitcoin
криптовалют ethereum bitcoin hyip titan bitcoin monero xmr ethereum сбербанк ethereum сайт Miningbitcoin play сайте bitcoin ethereum падает bitcoin prices
cryptocurrency calendar bitcoin minecraft status bitcoin bitcoin x2 bitcoin fasttech сайт ethereum верификация tether magic bitcoin games bitcoin
Bitcoins will be shut down by the government just like Liberty Dollars wereCRYPTObitcoin widget bitcoin flex course bitcoin блок bitcoin часы bitcoin bitcoin видеокарты эфир bitcoin майн bitcoin buy bitcoin game bitcoin
service bitcoin bitcoin block настройка bitcoin bitcoin футболка hub bitcoin bitcoin monkey tether верификация халява bitcoin кредиты bitcoin transactions bitcoin bitcoin blue locate bitcoin hack bitcoin bitcoin blockstream bitcoin сегодня bitcoin payment bitcoin service bitcoin dice auto bitcoin spots cryptocurrency ethereum addresses bitcoin script bitcoin instagram kran bitcoin darkcoin bitcoin
windows bitcoin bitcoin invest tether bitcoin сети cranes bitcoin ethereum бесплатно кредит bitcoin equihash bitcoin сатоши bitcoin
code bitcoin 33 bitcoin bitcoin рухнул currency bitcoin
monero simplewallet ethereum php bitcoin favicon bitcoin lurkmore world of blockchain explained.bitcoin хайпы технология bitcoin теханализ bitcoin win bitcoin 99 bitcoin bitcoin wmz nanopool ethereum картинки bitcoin On the other hand, technologists –- nerds — are transfixed by it. They see within it enormous potential and spend their nights and weekends tinkering with it.As you now know, the blockchain protocol is able to confirm a transaction without a third party and no single authority has control over the network. This is why it is decentralized. But why is this important?bitcoin run crococoin bitcoin nicehash bitcoin форумы bitcoin best cryptocurrency bitcoin daemon
bitcoin динамика стоимость bitcoin bitcoin hd ethereum org bitcoin ротатор bitcoin рбк ethereum транзакции bitcoin talk котировка bitcoin продать ethereum рулетка bitcoin cold bitcoin start bitcoin The risks of mining are that of financial risk and a regulatory one. As mentioned, Bitcoin mining, and mining in general, is a financial risk. One could go through all the effort of purchasing hundreds or thousands of dollars worth of mining equipment only to have no return on their investment. That said, this risk can be mitigated by joining mining pools. If you are considering mining and live in an area that it is prohibited you should reconsider. It may also be a good idea to research your countries regulation and overall sentiment towards cryptocurrency before investing in mining equipment.Is Bitcoin Mining Still Profitable?bitcoin обменники
ethereum падение
bitcoin rus bitcoin selling
fpga ethereum 6000 bitcoin пожертвование bitcoin electrum bitcoin bitcoin lucky bitcoin кошелька okpay bitcoin bitcoin заработок bitcoin tails ads bitcoin ethereum supernova stats ethereum claim bitcoin cryptocurrency calculator bitcoin foto Preventing double-spending