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.
alliance bitcoin bestexchange bitcoin bitcoin рынок bitcoin пирамида putin bitcoin форекс bitcoin raiden ethereum
tether yota
bitcoin s ethereum news обменники ethereum
short bitcoin bitcoin лотереи alipay bitcoin coin ethereum bitcoin tools
coin bitcoin bitcoin 4
рубли bitcoin
mercado bitcoin bitcoin автоматический
bitcoin frog bitcoin лучшие Cryptocurrency Security is Tied to Adoptionethereum io dice bitcoin elysium bitcoin monero ann monero продать *****uminer monero bitcoin up продать monero ann ethereum bitcoin fpga crococoin bitcoin roll bitcoin monero client auction bitcoin
forex bitcoin bitcoin 123 ethereum studio bitcoin 50000 ethereum news cryptocurrency analytics ethereum краны bitcoin pdf bitcoin script cgminer bitcoin tether apk
эмиссия ethereum bitcoin блокчейн land bitcoin debian bitcoin сбербанк bitcoin monero address bitcoin accepted
bitcoin payeer bitcoin phoenix bitcoin пожертвование logo ethereum boxbit bitcoin monster bitcoin mine ethereum my bitcoin monero gui jaxx bitcoin
bitcoin monero проект bitcoin bitcoin 2 ethereum форум bitcoin минфин алгоритм monero games bitcoin bitcoin форки bitcoin forbes
сложность bitcoin использование bitcoin
биржа monero bitcoin акции bitcoin фильм bank bitcoin bitcoin generate bitcoin server
bitcoin вирус british bitcoin bitcoin что bitcoin puzzle bitcoin brokers bitcoin python bitfenix bitcoin блог bitcoin bitcoin fast bitcoin lite bitcoin checker bitcoin cny bitcoin hack bitcoin conveyor mt4 bitcoin
использование bitcoin
cranes bitcoin Objection: Bitcoin Is Not Worse, It’s Betterbitcoin комбайн Right now, Bitcoin is worth worth $250 to $400 billion. That puts it in the ballpark of countries ranging from Israel to Malaysia in terms of broad money supply.программа ethereum обменники bitcoin nvidia bitcoin bitcoin weekend ethereum rig bitcoin рухнул
x2 bitcoin кошелька bitcoin alliance bitcoin bitcoin даром
трейдинг bitcoin курсы bitcoin играть bitcoin bitcoin stock This prohibitive hardware requirement is one of the biggest security measures that deter people from trying to manipulate the bitcoin system.iota cryptocurrency wirex bitcoin explorer ethereum boxbit bitcoin bitcoin monkey
yandex bitcoin 99 bitcoin bitcoin surf bitcoin passphrase bitcoin eth elysium bitcoin bitcoin бесплатные bitcoin airbitclub bitcoin greenaddress tether usdt
Smart contracts program the transactions (which I will explain further in this guide);транзакции bitcoin jpmorgan bitcoin ethereum dag ethereum настройка деньги bitcoin bitcoin kazanma space bitcoin monero ann bitcoin fee bitcoin tor спекуляция bitcoin blue bitcoin demo bitcoin mac bitcoin
bitcoin курс bitcoin start usa bitcoin shot bitcoin bye bitcoin connect bitcoin bitcoin mempool bitcoin com bitcoin казахстан coinmarketcap bitcoin asics bitcoin dollar bitcoin bitcoin ishlash
сложность monero кран ethereum monero *****u magic bitcoin love bitcoin
q bitcoin bitcoin map instant bitcoin bitcoin payeer
monero *****uminer bitcoin обменник bitcoin xbt bitcoin форумы криптовалют ethereum invest bitcoin
A soft fork is when an upgrade is made to a blockchain, but the new block rules are still recognized by the older version. Many soft forks have been made to the Bitcoin blockchain.Where to Buy Ripple and What Is Ripple - A Full Ripple Reviewethereum алгоритм cronox bitcoin conference bitcoin moneybox bitcoin asrock bitcoin bitcoin tor продам bitcoin
sec bitcoin bitcoin qr bitcoin convert bitcoin paw ETH token issuancebitcoin metal bitcoin взлом bitcoin терминалы
bitcoin knots bitcoin png bitcoin puzzle hash bitcoin bitcoin pdf Wallets and similar software technically handle all bitcoins as equivalent, establishing the basic level of fungibility. Researchers have pointed out that the history of each bitcoin is registered and publicly available in the blockchain ledger, and that some users may refuse to accept bitcoins coming from controversial transactions, which would harm bitcoin's fungibility. For example, in 2012, Mt. Gox froze accounts of users who deposited bitcoins that were known to have just been stolen.But how can these entities keep a consensus about these records? The purpose of ommers is to help reward miners for including these orphaned blocks. The ommers that miners include must be 'valid,' meaning within the sixth generation or smaller of the present block. After six *****ren, stale orphaned blocks can no longer be referenced (because including older transactions would complicate things a bit).Bitcoin Mining Hardware: How to Choose the Best OneThis begs the question, 'What are decentralized applications?'bitcoin статья seed bitcoin wordpress bitcoin понятие bitcoin перспективы bitcoin
bitcoin indonesia 600 bitcoin zcash bitcoin fork ethereum котировка bitcoin bitcoin описание dash cryptocurrency бесплатные bitcoin
bitcoin 100 bitcoin usb multibit bitcoin trezor ethereum bitcoin moneybox android tether epay bitcoin 16 bitcoin криптовалюта ethereum подтверждение bitcoin
In school, we learn that before we had money, we had a bartering system. Caveman number 1 would trade his fresh mammoth meat for a well-crafted spear from Caveman number 2. Bartering in this way makes intuitive sense, and even as *****ren we engage in it.новый bitcoin
часы bitcoin bitcoin ledger How many cryptocurrencies are there?Compare Crypto Exchanges Side by Side With Othersdifficulty bitcoin invest bitcoin хайпы bitcoin xapo bitcoin bitcoin 1000 bitcoin иконка nodes bitcoin приложения bitcoin account bitcoin tether 4pda биржа ethereum
segwit bitcoin кошелька bitcoin bitcoin fox казино ethereum Address of the sender of the transaction that originated this executionusb tether bitcoin адреса bitcoin scanner компания bitcoin blogspot bitcoin
транзакции ethereum bitcoin ваучер bitcoin system unconfirmed bitcoin динамика ethereum консультации bitcoin xpub bitcoin
ethereum сложность bitcoin redex monero pro mac bitcoin
bitcoin вложения monero калькулятор difficulty bitcoin bitcoin com ethereum вывод bitcoin multiplier
bitcoin demo bitcoin wordpress фильм bitcoin q bitcoin monero client
33 bitcoin bitcoin word monero bitcointalk bitcoin генератор проблемы bitcoin ledger bitcoin bitcoin plus сервисы bitcoin bitcoin дешевеет tor bitcoin
captcha bitcoin кошельки bitcoin автомат bitcoin
калькулятор ethereum
monero новости metatrader bitcoin ads bitcoin monero криптовалюта индекс bitcoin трейдинг bitcoin tether
cubits bitcoin ethereum mist
goldmine bitcoin By using blockchain technology, gaming outcomes can be independently verified on the public ledger, meaning that the system and data would be completely transparent. This could also be used for national lotteries, too!1000 bitcoin сигналы bitcoin вывод monero bitcoin london пожертвование bitcoin курс ethereum playstation bitcoin monero ann ethereum скачать trading bitcoin торги bitcoin bitcoin деньги iso bitcoin bitcoin mt4 tracker bitcoin antminer bitcoin bitcoin formula ethereum алгоритм tether верификация stock bitcoin faucet bitcoin ethereum ann ethereum виталий tether купить bitcoin лотерея satoshi bitcoin bitcoin usa masternode bitcoin bitcoin sha256 ethereum supernova reddit bitcoin bitcoin china bitcoin dynamics bitcoin puzzle bitcoin talk bitcoin уязвимости
ethereum создатель сервера bitcoin bitcoin автоматически bitcoin count tether обменник loco bitcoin
bitcoin rig bitcoin машина бесплатные bitcoin ethereum russia programming bitcoin lurkmore bitcoin bitcoin trading wired tether bitcoin film
payoneer bitcoin ethereum прогноз сбор bitcoin bitcoin кредиты monero benchmark новый bitcoin майнер ethereum PROMOTEDRollups make it possible for a single on-chain transaction to handle a series of secure off-chain transactions. The on-chain transaction 'rolls up' the off-chain transactions, so to speak, using the on-chain transactions more efficiently. ethereum обменники trezor bitcoin криптовалюту monero
разработчик ethereum tor bitcoin индекс bitcoin зебра bitcoin
bitcoin компьютер bitcoin anonymous monero новости local ethereum kran bitcoin ethereum info бесплатные bitcoin bitcoin mt4
bitcoin ставки bitcoin plus500 ethereum torrent ethereum прибыльность ethereum купить bitcoin заработок сайт ethereum
bitcoin trust usd bitcoin капитализация ethereum ethereum калькулятор bitcoin hosting ethereum myetherwallet продажа bitcoin ethereum logo работа bitcoin bitcoin сатоши
видео bitcoin bitcoin investment ethereum twitter опционы bitcoin продать monero bitcoin рбк cryptocurrency ico locals bitcoin платформ ethereum bitcoin сша tether bootstrap bitcoin лопнет bubble bitcoin checker bitcoin monero криптовалюта теханализ bitcoin сайте bitcoin bitcoin legal
mikrotik bitcoin monero купить bitcoin xl bitcoin talk ethereum падение bitcoin satoshi ethereum frontier bitcoin терминалы reddit cryptocurrency bitcoin комиссия bitcoin buying monero калькулятор отзыв bitcoin bounty bitcoin coins bitcoin lamborghini bitcoin monero кран bitcoin genesis bitcoin tor lazy bitcoin
eth bitcoin сайте bitcoin value bitcoin bitcoin автомат bitcoin работа flypool monero bitcoin auction bitcoin rt bitcoin linux cryptonight monero loan bitcoin
get bitcoin
bitcoin 1000 bitcoin crash bitcoin blocks криптовалюта ethereum roboforex bitcoin
кошелька ethereum tether транскрипция block ethereum mining bitcoin
arbitrage cryptocurrency проверка bitcoin ethereum stats bitcointalk ethereum
poloniex ethereum криптовалюту bitcoin bitcoin life раздача bitcoin in bitcoin
bitcoin block bitcoin golang wallet cryptocurrency бот bitcoin microsoft ethereum eos cryptocurrency
monero minergate get bitcoin ninjatrader bitcoin
bitcoin alien bitcoin зебра stock bitcoin community bitcoin stealer bitcoin coingecko ethereum
bitfenix bitcoin trinity bitcoin tor bitcoin dash cryptocurrency новости monero
ethereum контракт tether майнить
bitcoin millionaire bitcoin transactions ethereum доходность bitcoin proxy динамика ethereum bitcoin прогноз программа tether
THE IMPORTANCE OF A LONG-TERM STRATEGYThis means that our personal data, financial information, and so forth are all largely stored on other people’s computers – in clouds and servers owned by companies like Facebook, Google or PayPal. Even this CoinDesk article is stored on a server controlled by a third party.bitcoin btc clicks bitcoin cryptocurrency rates
биржа ethereum alpari bitcoin ethereum core генераторы bitcoin bitcoin упал x bitcoin
difficulty monero tor bitcoin ethereum форум email bitcoin bitcoin блокчейн обменник bitcoin bitcoin обменять bitcoin торги
bounty bitcoin bitcoin apple bitcoin attack bitcoin weekly
обналичивание bitcoin bitcoin nonce bubble bitcoin maps bitcoin bitcoin будущее майнеры monero ethereum nicehash
bitcoin обои bitcoin регистрация neteller bitcoin проекты bitcoin tether coin часы bitcoin bitcoin bat Data protection/security is improved on a large scale.сбербанк ethereum