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 blockchain bitcoin python аналоги bitcoin алгоритм bitcoin bitcoin de air bitcoin mine ethereum bitcoin 100 10000 bitcoin bitcoin миллионеры bitcoin открыть
bitcoin конвертер
uk bitcoin difficulty ethereum bitcoin подтверждение майнить bitcoin bitcoin продать ethereum ubuntu
скачать bitcoin bitcoin видеокарта bitcoin daemon web3 ethereum One example is Dash, designed by Evan Duffield and Daniel Diaz, which has a feature called 'Darksend' – an improved version of CoinJoin. The two major improvements are the value amounts used and frequency of mixing.ethereum clix forbes bitcoin новые bitcoin bitcoin half ethereum markets scrypt bitcoin
отзывы ethereum bitcoin virus avatrade bitcoin bitcoin adress bitcoin блоки grayscale bitcoin знак bitcoin добыча bitcoin
bitcoin information bitcoin bazar bitcoin tube bitcoin explorer
ethereum телеграмм bitcoin talk simple bitcoin grayscale bitcoin платформа bitcoin курс bitcoin wikileaks bitcoin oil bitcoin bitcoin fees скачать bitcoin casinos bitcoin bitcoin venezuela bitcoin nachrichten visa bitcoin email bitcoin bitcoin шахта bitcoin авито fire bitcoin bitcoin кредит bitcoin x bitcoin future
monero обменять ethereum complexity bitcoin xbt котировки ethereum bitmakler ethereum bitcoin аккаунт bitcoin реклама space bitcoin bitcoin 999 bitcoin баланс bitcoin like bitcoin сша bitcoin tools bitcoin mmm raspberry bitcoin инструмент bitcoin autobot bitcoin майнинга bitcoin сложность bitcoin эмиссия bitcoin bitcoin forecast tether coin reddit cryptocurrency
blender bitcoin bitcoin server bitcoin перевод legal bitcoin change bitcoin coffee bitcoin ethereum forks bitcoin solo ios bitcoin boom bitcoin 0 bitcoin uk bitcoin fpga bitcoin bitcoin motherboard cudaminer bitcoin
ethereum обмен список bitcoin
total cryptocurrency bitcoin конверт bitcoin pools ethereum pools карты bitcoin bitcoin frog
by bitcoin вклады bitcoin raiden ethereum bitcoin продать bitcoin cudaminer bitcoin zona будущее ethereum forum bitcoin fake bitcoin япония bitcoin лучшие bitcoin space bitcoin bitcoin q escrow bitcoin bitcoin land ethereum btc bitcoin настройка
fields bitcoin ethereum forks nanopool ethereum bitcoin traffic ethereum игра bitcoin data bitcoin pools настройка monero вики bitcoin форк bitcoin компания bitcoin bitcoin телефон ethereum аналитика addnode bitcoin bitcoin bear
lootool bitcoin bitcoin телефон bitcoin gpu кран ethereum bitcoin переводчик bitcoin минфин bitcoin бонусы
cryptocurrency analytics bitcoin bcn технология bitcoin эмиссия bitcoin bear bitcoin mac bitcoin bitcoin algorithm blue bitcoin monero btc nanopool monero
bitcoin plugin bitcoin artikel programming bitcoin фото bitcoin wmx bitcoin bitcoin today maps bitcoin c bitcoin
mine ethereum bonus bitcoin bitcoin neteller
bitcoin фермы
токены ethereum
bitcoin kaufen bitcoin sha256 bitcoin торговля bitcoin skrill cryptocurrency это скачать bitcoin bitcoin автоматически up bitcoin enterprise ethereum bitcoin poker ethereum обменять bitcoin alpari bitcoin testnet хайпы bitcoin vps bitcoin swiss bitcoin sun bitcoin monero minergate
ethereum russia rise cryptocurrency stealer bitcoin
mikrotik bitcoin tether транскрипция
gift bitcoin отзыв bitcoin ethereum биржа bitcoin 4000 ethereum pool mt4 bitcoin mikrotik bitcoin bitcoin block network effect and Bitcoin’s contenders don’t live up to their promises.charts bitcoin автосборщик bitcoin миллионер bitcoin работа bitcoin bitcoin s форк ethereum bitcoin вирус bitcoin market
bitcoin лотереи nicehash monero форки ethereum
monero обмен bitcoin информация cc bitcoin ethereum stats site bitcoin bitcoin cgminer bitcoin коды капитализация ethereum капитализация ethereum настройка bitcoin bitcoin pdf china cryptocurrency monero обменять bitcoin автоматически 60 bitcoin иконка bitcoin bitcoin sha256 краны ethereum ethereum логотип bitcoin анимация
вики bitcoin boxbit bitcoin андроид bitcoin
знак bitcoin cryptocurrency reddit ledger bitcoin bitcoin de bitcoin alpari bitcoin start bitcoin fees bitcoin япония котировки bitcoin plus bitcoin краны monero positive approach towards Bitcoin cryptocurrencyEthereum has quickly skyrocketed in value since its introduction in 2015, and it is now the 2nd most valuable cryptocurrency by market cap. It’s increased in value by 2,226% in just last year - a huge boon for early investors.IOTA is a pretty special cryptocurrency, it doesn’t have a blockchain! IOTA uses a DLT called the Tangle. Miners don’t confirm new transactions, users do...When a user wants to make a payment using the Tangle they have to verify and confirm two other user’s transactions first. Only then will their payment be processed. It’s like getting students to grade each other’s homework instead of the teacher doing it. The Tangle is thought to be a lot faster than Bitcoin, Litecoin and Ethereum! If you thought that was weird, check this out — IOTA isn’t even designed to be used by humans! It’s designed for the Internet of Things. That’s any machine with an internet connection. IOTA will help the IoT communicate with itself. IOTA actually means the Internet of Things Application. Imagine that! In the future, your driverless car will use IOTA to go to the gas station, fill up with gas and pay. All without any humans being involved.In 2008, the world economy crashed. Banks had used the money they had been trusted with very badly. The governments of the world were unable to stop millions of people from losing lots of money.2. Cyber Securitytalk bitcoin monero faucet bitcoin создатель bitcointalk ethereum forum ethereum бутерин ethereum
tether limited
выводить bitcoin monero продать byzantium ethereum bitcoin advcash bitcoin программа bitcoin реклама bitcoin token project ethereum bitcoin зарегистрироваться titan bitcoin bitcoin plugin bitcoin kurs видеокарты ethereum биржа monero bitcoin биржа пул bitcoin plasma ethereum top cryptocurrency bitcoin yen buy bitcoin bitcoin visa bitcoin demo bitcoin fpga polkadot cadaver bitcoin взлом bitcoin frog pos bitcoin заработок bitcoin продать bitcoin x2 bitcoin bitcoin работать Conclusionобменник bitcoin ethereum сбербанк
добыча monero
bitcoin token claim bitcoin bitcoin халява bitcoin сбербанк bitcoin биржи Cryptocurrency has a lot of critics. Some say that it’s all hype. Well, I have some bad news for those people. Cryptocurrency is here to stay and it’s going to make the world a better place.The network effect plays in Bitcoin’s favor, but quite a few developers argueAs well, few of the objections to cryptocurrencies seem to have been 'computers which can run it are fantastically expensive'18. In computing, applications and techniques are often invented many decades before Moore’s law makes them practically useful19, but this does not seem to have happened with Bitcoin. A similar objection obtains with patents or published papers; if Bitcoin was a known idea, where are they? I have yet to see anybody point out what patents might have deterred cryptography researchers %trump2% implementers; the answer is that there were none. Because there was no investor interest? Not that Satoshi needed investors, but there were a tremendous number of online payment services started in the ‘90s, each searching for the secret sauce that would let them win ’mindshare’ and ride ‘network effects’ to victory; DigiCash again comes to mind. Even in the ’90s, when the Internet seems embryonic to us of the 2010s, there were still many millions of people on the Internet who could have used a digital cash.ethereum проекты monero pro map bitcoin kurs bitcoin bitcoin easy и bitcoin cryptocurrency price dat bitcoin bitcoin bow bitcoin 0 bitcoin like fake bitcoin bitcoin регистрация cryptonator ethereum hashrate ethereum wordpress bitcoin bitcoin statistics world bitcoin ethereum картинки новый bitcoin bitcoin javascript консультации bitcoin kurs bitcoin вход bitcoin bitcoin 2020 monero minergate bitcoin expanse bitcoin автоматически bitcoin alien bitcoin joker ethereum фото bitcoin биткоин bitcoin падение cms bitcoin
bitcoin group rx560 monero bitcoin сколько cryptocurrency capitalisation bitcoin poloniex ethereum rig bitcoin segwit2x
зарегистрироваться bitcoin математика bitcoin bitcoin телефон обозначение bitcoin wiki bitcoin bitcoin virus bitcoin uk bitcoin plus bitcoin twitter bitcoin mining bitcoin динамика пул ethereum bitcoin demo tether 4pda
сбербанк bitcoin bitcoin rotator казино ethereum bitcoin видеокарты bitcoin anonymous bitcoin монета создатель ethereum
moneypolo bitcoin tether отзывы bitcoin loan bitcoin auto bitcoin symbol tether 2
mercado bitcoin bitcoin currency bitcoin go подтверждение bitcoin криптовалюта tether оплата bitcoin store bitcoin обменять bitcoin ethereum twitter эфириум ethereum
bitcoin продам monero buy tether login bitcoin прогнозы bitcoin виталик ethereum mining monero bitcoin compromised
bitcoin cc electrodynamic tether курс ethereum рост bitcoin *****a bitcoin bitcoin видеокарты bitcoin knots playstation bitcoin This power becomes even more noticeable when you consider the initial purchase price of the Pangolin. It’s currently on sale at the company’s official website at just $850. Compare that to the $2,700 that a DragonMint of Antminer S9 will cost and you can instantly see the appeal of the Pangolin M3X.bitcoin статистика Cryptocurrencies can be sent directly between two parties via the use of private and public keys. These transfers can be done with minimal processing fees, allowing users to avoid the steep fees charged by traditional financial institutions.bitcoin cost bitcoin apk key bitcoin bitcoin куплю анонимность bitcoin bitcoin конверт The use of bitcoin by criminals has attracted the attention of financial regulators, legislative bodies, law enforcement, and the media. The FBI prepared an intelligence assessment, the SEC has issued a pointed warning about investment schemes using virtual currencies, and the U.S. Senate held a hearing on virtual currencies in November 2013.bitcoin word bitcoin chain
bitcoin stealer
king bitcoin платформе ethereum bitcoin пулы bitcoin ферма bitcoin client bitcoin protocol
история ethereum script bitcoin bitcoin x2
bitcoin swiss bitcoin information bitcoin кликер
future bitcoin 2016 bitcoin ethereum история bitcoin биржи bitcoin авито
bitcoin daily games bitcoin – Gwern Branwen, Bitcoin is Worse Is Bettermonero benchmark word bitcoin bitcoin talk bitcoin server
currency bitcoin bitcoin multiplier arbitrage cryptocurrency bitcoin phoenix unconfirmed bitcoin bitcoin markets up bitcoin index bitcoin ethereum рост bitcoin passphrase stealer bitcoin mine bitcoin хардфорк bitcoin bitcoin friday mmm bitcoin mine ethereum fire bitcoin market bitcoin
bitcoin london blockstream bitcoin
ethereum валюта майнинг tether bitcoin reklama
bitcoin index instant bitcoin bitcoin майнить bitcoin flex ethereum вики кошель bitcoin ethereum платформа bitcoin котировка bitcoin expanse love bitcoin cryptocurrency dash
bitcoin weekly bitcoin today 01bitcoin landing удвоитель bitcoin обмен monero film bitcoin ethereum gas carding bitcoin система bitcoin market bitcoin прогнозы ethereum казино ethereum обмен monero bitcoin кликер trade cryptocurrency ubuntu ethereum ethereum википедия android tether скачать bitcoin
wmx bitcoin и bitcoin
bitcoin котировка
криптовалюту monero bitcoin bitcointalk monero криптовалюта bitcoin ocean bitcoin рубль tether chvrches
ethereum виталий
lamborghini bitcoin carding bitcoin bitcoin generation arbitrage bitcoin split bitcoin bitcoin monkey
monero windows обменники ethereum bitcoin yandex nicehash monero bitcoin блог цена ethereum bitcoin ether
bitcoin matrix bitcoin paper bitcoin change plus500 bitcoin bitcoin bear bitcoin автоматически ethereum ротаторы dog bitcoin blitz bitcoin mikrotik bitcoin
количество bitcoin bitcoin example
bitcoin checker bitcoin cost ann bitcoin bitcoin dark запросы bitcoin ethereum падение ethereum android bitcoin iso wikileaks bitcoin bitcoin source bitcoin уязвимости
fake bitcoin ethereum frontier cryptocurrency market monero coin bitcoin обналичить Source modelOpen sourceblock ethereum криптовалюта tether bitcoin apple bitcoin компьютер
alpari bitcoin hit bitcoin ropsten ethereum algorithm bitcoin кошель bitcoin bitcoin roulette ethereum telegram карты bitcoin hourly bitcoin кости bitcoin дешевеет bitcoin bitcoin приложение lamborghini bitcoin порт bitcoin bitcoin donate bitcoin магазины ethereum видеокарты blogspot bitcoin биржи bitcoin bitcoin аналоги bitcoin markets pps bitcoin battle bitcoin boom bitcoin bitcoin количество hacking bitcoin ethereum android
wordpress bitcoin bitcoin экспресс
apk tether mine monero обновление ethereum Permissionless