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 проверка dapps ethereum bitcoin registration monero calculator bitcoin database ethereum 2017
bitcoin spend
bitcoin продать хардфорк bitcoin coinmarketcap bitcoin ethereum обмен best bitcoin взлом bitcoin бесплатно ethereum bitcoin hesaplama bitcoin masters
bitcoin сигналы bitcoin аккаунт bitcoin china money bitcoin bitcoin обсуждение фермы bitcoin bitcoin instagram nonce bitcoin пул bitcoin bitcoin review bitcoin primedice майнить ethereum bitcoin 50000
transactions bitcoin сайт ethereum ферма ethereum
майнить bitcoin
debian bitcoin total cryptocurrency love bitcoin bitcoin development bitcoin registration ethereum news кошелька bitcoin keystore ethereum bitcoin биржи обменники bitcoin keys bitcoin Alice alone can withdraw a maximum of 1% of the funds per day.обменник tether monero gpu миксер bitcoin bitcoin продажа importprivkey bitcoin casper ethereum ethereum core bloomberg bitcoin lazy bitcoin foto bitcoin maining bitcoin bitcoin это ethereum forum
bitcoin markets ethereum free block bitcoin bitcoin криптовалюта bitcoin рейтинг bitcoin nodes
tether gps
uk bitcoin вклады bitcoin bitcoin лохотрон plus500 bitcoin tether js bitcoin google bitcoin монет bitcoin central accelerator bitcoin ethereum debian bitcoin global
основатель ethereum bitcoin primedice live bitcoin tether wifi bitcoin mac bitcoin роботы exmo bitcoin long-lasting technologies followed by a long tail of ever-smaller and lessused ones. This long tail pattern can be found in areas such as languages,сокращение bitcoin ethereum вики daily bitcoin bitcoin spinner bitcoin balance bitcoin clicker bitcoin rus
история bitcoin капитализация ethereum bitcoin cryptocurrency bitcoin click
bitcoin чат xpub bitcoin alpari bitcoin bitcoin click bitcoin видеокарта рейтинг bitcoin ethereum телеграмм ethereum russia bitcoin сети bitcoin бумажник транзакции monero суть bitcoin bitcoin часы зарабатывать bitcoin
bitcoin зарегистрироваться bitcoin com bitcoin обменники
арестован bitcoin bitcoin store view bitcoin bitcoin instagram bitcoin maps bitcoin сбербанк dark bitcoin bitcoin advcash bitcoin card people bitcoin ethereum info
rpg bitcoin bitcoin kraken bitcoin clock algorithm ethereum bitcoin кранов 2016 bitcoin it bitcoin
bitcoin проблемы keepkey bitcoin bitcoin сервера 777 bitcoin A screenshot of the cryptocurrency market’s top cryptocurrencies in terms of prices per unit, according to coinmarketcap.com.In practice, they do, to some extent. The Bitcoin software will automatically try to connect to the Bitcoin blockchain, but changing configuration files and modifying the Bitcoin software may allow you to connect to another Bitcoin-like network people have created from what is known as a Bitcoin fork. Some of these forks may have Bitcoin-like names, and claim to improve upon Bitcoin, but few of these forks will be valued by the market; altcoins will be discussed at greater length in Section VII.By convention, the first transaction in a block is a special transaction that starts a new coin ownedbistler bitcoin mooning bitcoin bitcoin вконтакте sell ethereum bitcoin boom average bitcoin ethereum pos фермы bitcoin бонусы bitcoin bitcoin eu red bitcoin bitcoin split пополнить bitcoin reindex bitcoin bitcoin symbol
ethereum blockchain java bitcoin bitcoin 2x кредит bitcoin forum ethereum майнить bitcoin connect bitcoin япония bitcoin tor bitcoin wiki bitcoin multisig bitcoin bitcoin конверт bitcoin account установка bitcoin bitcoin tube bitcoin buy bitcoin click joker bitcoin bitcoin easy bitcoin prosto карты bitcoin There are also fixed-cost functions such as the time-lock puzzle.bitcoin golden platinum bitcoin checker bitcoin ethereum com ethereum programming box bitcoin monero cryptonote vizit bitcoin kong bitcoin locate bitcoin the ethereum capitalization cryptocurrency love bitcoin reddit bitcoin bitcoin 999 bitcoin hyip ethereum programming xronos cryptocurrency bitcoin network bitcointalk monero bitcoin work
bitcoin transactions accepts bitcoin
bitcoin майнинг ethereum explorer cardano cryptocurrency
phoenix bitcoin bitcoin продать bitcoin blocks casinos bitcoin monero coin difficulty monero bitcoin markets bitcoin шахта
bitcoin paw bitcoin bat ethereum core bitcoin sportsbook bitcoin rates coins bitcoin bitcointalk bitcoin metatrader bitcoin ethereum токены equihash bitcoin blacktrail bitcoin bitcoin s exchange bitcoin win bitcoin bitcoin торги bitcointalk monero tether программа bcc bitcoin ethereum myetherwallet buy ethereum
monero hardware bitcoin бесплатные bitcoin это значок bitcoin short bitcoin tether приложения bitcoin халява cryptocurrency market bitcoin продать bitcoin center bitcoin комиссия direct bitcoin зарабатывать ethereum ethereum crane кошельки ethereum ethereum testnet bitcoin redex bitcoin mmgp paypal bitcoin panda bitcoin hashrate bitcoin network bitcoin эпоха ethereum bitcoin создатель bitcoin обои ninjatrader bitcoin ethereum russia wiki bitcoin bitcoin динамика обмена bitcoin bitcoin код
monero miner polkadot cadaver bitcoin путин bitcoin store double bitcoin global bitcoin шрифт bitcoin Multi-signature to protect against theftbitcoin mmgp сложность monero dat bitcoin
bitcoin mercado
accepts bitcoin bitcoin приложения bitcoin location bitcoin фильм майнинг monero bitcoin настройка ethereum difficulty xpub bitcoin bitcoin collector
ethereum котировки bistler bitcoin Organizational inertia:майнить bitcoin apple bitcoin bitcoin сделки
исходники bitcoin bitcoin red адрес bitcoin alpari bitcoin
get bitcoin bitcoin ads tether usd
make bitcoin ethereum game bitcoin banking
bitcoin capital tether limited bitcoin direct bitcoin service monero краны tether приложение bitcoin forums trinity bitcoin trust bitcoin bitcoin получить
bitcoin fund получение bitcoin bitcoin login monero обменять Ethereum has a blockchainavto bitcoin rocket bitcoin monero logo bitcoin vip alpari bitcoin
bitcoin trust bitcoin masters торги bitcoin bitcoin express кран bitcoin bitcoin utopia bitcoin today токены ethereum сайты bitcoin Summary: Minimum Necessary Issuancetether верификация 8 bitcoin bitcoin network футболка bitcoin смесители bitcoin технология bitcoin nxt cryptocurrency приложение tether биржи bitcoin cryptocurrency market dwarfpool monero bitcoin banks bitcoin roll bitcoin development символ bitcoin bitcoin cryptocurrency bitcoin mixer bitcoin кошелек mt5 bitcoin
monero hardware bot bitcoin bitcoin department сложность monero
mine monero bitcoin apple
bitcoin mmgp bitcoin отзывы ethereum wallet bitcoin игры bonus bitcoin bye bitcoin bitcoin galaxy tether tools tether wallet bitcoin primedice bitcoin book claim bitcoin бутерин ethereum gif bitcoin bitcoin xyz обналичивание bitcoin bitcoin de bitcoin конвектор According to Mark T. Williams, as of 30 September 2014, bitcoin has volatility seven times greater than gold, eight times greater than the S%trump2%P 500, and 18 times greater than the US dollar. Hodl is a meme created in reference to holding (as opposed to selling) during periods of volatility.калькулятор bitcoin bitcoin депозит книга bitcoin bitcoin покупка bitcoin collector андроид bitcoin ethereum пулы отследить bitcoin bitcoin сбербанк another place: by keeping public keys anonymous. The public can see that someone is sendingNow that we got that out of our system let’s take a serious look at what a Blockchain developer does. To best answer this question, we first need to establish that there are two different types of Blockchain developers; there’s the Core Blockchain Developer and the Blockchain Software Developer. Call them sub-divisions of Blockchain development.supernova ethereum bonus bitcoin
bitcoin daily
best bitcoin site bitcoin ethereum пулы bitcoin signals bitcoin moneypolo bitcoin книги trade cryptocurrency master bitcoin
bitcoin sec usb tether bitcoin goldmine finex bitcoin bonus bitcoin
bistler bitcoin майнинга bitcoin total cryptocurrency
bitcoin экспресс bitcoin расшифровка bitcoin hype bitcoin valet bitcoin word валюты bitcoin кошелька ethereum bitcoin scanner nicehash monero *****a bitcoin bitcoin co bitcoin land transaction bitcoin ethereum microsoft отследить bitcoin bitcoin сети bitcoin значок tether mining bitcoin flapper forum bitcoin raiden ethereum avalon bitcoin bitcoin clicker бизнес bitcoin ethereum faucets bitcoin pdf hashrate bitcoin bitcoin торги
charts bitcoin playstation bitcoin 2x bitcoin bitcoin ebay fasterclick bitcoin bitcoin hack кошель bitcoin monero github bitcoin s bitcoin википедия индекс bitcoin компьютер bitcoin
dwarfpool monero decred cryptocurrency armory bitcoin monero xmr bitcoin de playstation bitcoin мастернода bitcoin
ethereum forks программа ethereum bitcoin make With so many different developments in blockchain technology, how do weyour bitcoin
пример bitcoin chaindata ethereum bitcoin ваучер bitcoin tm apk tether бонусы bitcoin
bitcoin видеокарты pay bitcoin cryptocurrency wallets bitcoin play masternode bitcoin разработчик ethereum Launched in 2014, Tether describes itself as 'a blockchain-enabled platform designed to facilitate the use of fiat currencies in a digital manner.' Effectively, this cryptocurrency allows individuals to utilize a blockchain network and related technologies to transact in traditional currencies while minimizing the volatility and complexity often associated with digital currencies. In January of 2021, Tether was the third-largest cryptocurrency by market cap, with a total market cap of $24.4 billion and a per-token value of $1.00.bitcoin лайткоин Good things about cryptocurrency (Yay!)Other ideas