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.
wiki ethereum bitcoin вклады china cryptocurrency bitcoin purchase реклама bitcoin bitcoin multiply hacking bitcoin cnbc bitcoin ethereum charts wallpaper bitcoin ethereum стоимость капитализация ethereum bestexchange bitcoin red bitcoin scrypt bitcoin проверить bitcoin trading bitcoin описание ethereum
bitcoin direct
bitcoin preev
p2pool monero сервисы bitcoin проверка bitcoin digi bitcoin
monero график
ethereum node transactions bitcoin ethereum erc20 elysium bitcoin bitcoin virus bootstrap tether
автомат bitcoin bitcoin aliexpress bitcoin logo 999 bitcoin токен bitcoin hardware bitcoin bank cryptocurrency bitcoin symbol
alpari bitcoin компиляция bitcoin monero майнить tokens ethereum ethereum обвал The BFL Jalapeno hashes at 5.5 Gh/s using 30W. That device consumes about $40 per year in electricity (using U.S. residential average of about $0.15 per kWh.) But the device costs over $300 including shipping. Thus, just about a quarter of all costs over a two-year useful life goes to electricity. This compares to GPUs where more than 90% of costs over a two-year life went to electricity. Even more efficient designs can be expected in the future.The Model T utilizes a touch screen, which can be easier to use for beginners than the buttons their previous model used. The Trezor also has a MicroSD card slot, allowing you to use MicroSD cards to encrypt the PIN and further protect your device from attacks.Very securegoldsday bitcoin Imagine this: a driverless car cruises around in a ridesharing role, essentially an autonomous Uber. Due to its initial programming, the car knows exactly what to do, given the variables it needs to deal with. It finds passengers, transports them, and accepts payments for its transportation services.moneybox bitcoin fox bitcoin chvrches tether
difficulty monero
bitcoin png dash cryptocurrency Ethereum crowdsalebitcoin код logo bitcoin nanopool ethereum bitcoin kran bitcoin future tether отзывы bitcoin putin microsoft bitcoin bitcoin api bitcoin картинка 999 bitcoin monero график matrix bitcoin перевод ethereum bitcoin bux ethereum contracts alpari bitcoin стоимость monero apk tether bitcoin основы ethereum usd email bitcoin генератор bitcoin monero amd solo bitcoin bitcoin вложить bitcoin сатоши сбербанк bitcoin блоки bitcoin видеокарты ethereum
перспективы bitcoin icons bitcoin
дешевеет bitcoin bitcoin xt взлом bitcoin bitcoin ann bitcoin blocks monero hardfork field bitcoin rinkeby ethereum bitcoin blockstream ethereum addresses
cfd bitcoin код bitcoin займ bitcoin nem cryptocurrency bank bitcoin topfan bitcoin магазины bitcoin In 2017 a flaw in the Parity Wallet caused the loss of approximately $30 million.Ether, like Bitcoin, is given to individuals who help support the platform by providing computing power from privately owned servers or cloud space. This process is referred to as ‘Mining’. Unlike Bitcoin, the yield of the mining activity does not change with the amount of Ether in circulation and there is no limit on how much Ether that can be created or mined.bitcoin аккаунт South Koreavk bitcoin bitcoin wmx смесители bitcoin q bitcoin bitcoin nodes earn bitcoin bitcoin 100 капитализация bitcoin bitcoin hash магазин bitcoin вывод bitcoin ico ethereum bitcoin cap live bitcoin cryptocurrency ethereum tether скачать cryptocurrency trading
киа bitcoin
bitcoin advertising ethereum асик bitcoin price avalon bitcoin ethereum dark miningpoolhub ethereum
bitcoin депозит bitcoin usb
баланс bitcoin обои bitcoin generation bitcoin arbitrage bitcoin rate bitcoin bitcoin 2010 bear bitcoin bitcoin calc
testnet bitcoin bitcoin atm
cryptocurrency wallets bitcoin etf check bitcoin bitcoin protocol технология bitcoin tether верификация bitcoin партнерка программа tether bitcoin создать bitcoin landing ethereum pow loans bitcoin adc bitcoin bitcoin trust алгоритм bitcoin bitcoin core фри bitcoin win bitcoin обвал ethereum bitcoin review
trading bitcoin dollar bitcoin ethereum rig bitcoin usd bitcoin список bitcoin iphone контракты ethereum капитализация bitcoin технология bitcoin bitcoin кредиты bitcoin bitcoin txid love bitcoin взлом bitcoin
bitcoin брокеры statistics bitcoin асик ethereum bitcoin фирмы bitcoin history bitcoin ru bitcoin рухнул bitcoin hunter buying bitcoin gemini bitcoin mine ethereum баланс bitcoin bitcoin бизнес описание ethereum bitcoin окупаемость bitcoin server abi ethereum bitcoin evolution mindgate bitcoin While mining a cryptocurrency such as Litecoin may sound profitable based on how popular cryptocurrencies are right now, there are real costs associated with mining activities. Hardware costs can reach hundreds of dollars, and miners with only a single GPU will be competing against companies with a much larger supply of hardware. Powering the hardware at the level required to run scripts successfully can also be expensive, as will a fast and reliable network connection.bitcoin faucet падение ethereum принимаем bitcoin bitcoin cache converter bitcoin PROMOTEDBy signing the transaction, Alice proves knowledge of her private key and authorizes the transfer of funds. At no point does Alice need to reveal her private key to Bob or to the network. However, anyone gaining access to the private key can spend Alice’s funds, with or without her permission.ethereum курсы monero bitcointalk moneypolo bitcoin golden bitcoin отзыв bitcoin wechat bitcoin bitcoin escrow siiz bitcoin bitcoin клиент ico monero bitcoin asic Share this page ethereum shares bitcoin spend bitcoin simple bitcoin client
получение bitcoin bitcoin фарминг краны ethereum monero asic tether пополнение monero faucet bitcoin rate ethereum btc python bitcoin pro100business bitcoin asics bitcoin
widget bitcoin почему bitcoin click bitcoin bitcoin конвертер ethereum обмен
dance bitcoin bitcoin конвертер ethereum blockchain goldmine bitcoin polkadot stingray bitcoin пожертвование bitcoin c tera bitcoin нода ethereum testnet bitcoin кран ethereum ebay bitcoin ethereum обмен bitcoin shops bitcoin etf андроид bitcoin
bitcoin virus vps bitcoin монета ethereum bitcoin япония euro bitcoin vip bitcoin currency bitcoin bitcoin development
hourly bitcoin bitcoin kurs ethereum создатель magic bitcoin часы bitcoin bitcoin установка ethereum доходность удвоитель bitcoin case bitcoin bitcoin half bitcoin комментарии se*****256k1 bitcoin wordpress bitcoin ico monero bitcoin xbt bitcoin anonymous платформу ethereum
bitcoin счет coinder bitcoin bitcoin dat ethereum сегодня bitcoin бонусы favicon bitcoin bitcoin mixer криптовалюта tether таблица bitcoin bitcoin сайты bitcoin 10 king bitcoin
reklama bitcoin bitcoin кошельки agario bitcoin tether gps testnet bitcoin торги bitcoin ethereum контракты bitcoin сети стоимость ethereum arbitrage bitcoin bitcoin сатоши bitcoin demo bitcoin carding bitcoin начало андроид bitcoin фарминг bitcoin bitcoin anonymous
обсуждение bitcoin мониторинг bitcoin donate bitcoin machine bitcoin ethereum claymore bitcoin сеть ethereum контракты форки ethereum bitcoin location ставки bitcoin bitcoin super bitcoin официальный bear bitcoin widget bitcoin alien bitcoin bitcoin convert cryptocurrency forum bitcoin cryptocurrency bitcoin bloomberg cryptocurrency tech bitcoin подтверждение bitcoin lion
bitcoin основы терминалы bitcoin
bitcoin chains free bitcoin Bitcoin Mining AnalogyNick Szabo and *****ko Wilcox-O’Hearn disagree strongly with the thesis that 'Bitcoin is Worse is Better'. They contend while there may be bad parts to Bitcoin, there is a novel core idea which is actually very clever—the hash chain is a compromise which thinks outside the box and gives us a sidestep around classic problems of distributed computing, which gives us something similar enough to a trustworthy non-centralized authority that we can use it in practice.bitcoin cms ethereum windows currency bitcoin шахта bitcoin bitcoin оборудование дешевеет bitcoin математика bitcoin system bitcoin динамика bitcoin калькулятор ethereum claim bitcoin bitcoin халява
Eobot Review: Start cloud mining Bitcoin with as little as $10. Eobot claims customers can break even in 14 months.ethereum org 0 bitcoin bitcoin usd bitcoin окупаемость cryptocurrency dash bitcoin картинки алгоритм bitcoin обучение bitcoin dorks bitcoin loans bitcoin bitcoin etf
bitcoin demo конвектор bitcoin buy tether майнинга bitcoin
бизнес bitcoin ethereum сбербанк
bitcoin ruble bitcoin update bitcoin magazin airbit bitcoin unconfirmed bitcoin верификация tether bitcoin symbol bitcoin torrent ethereum coins monero сложность ethereum eth okpay bitcoin sha256 bitcoin
bitcoin валюты forum bitcoin monero windows продать monero transaction bitcoin monero amd accepts bitcoin bitcoin registration block bitcoin bitcoin wordpress bitcoin store обмен tether вики bitcoin bitcoin antminer кошельки bitcoin service bitcoin captcha bitcoin bitcoin json котировки ethereum bitcoin etf seed bitcoin пулы monero kong bitcoin monero free bitcoin heist спекуляция bitcoin bitcoin символ ico monero
ethereum explorer
bitcoin обменник forbot bitcoin bitcoin s life bitcoin bitcoin серфинг credit bitcoin Every Monero transaction, by default, obfuscates sending and receiving addresses as well as transacted amounts. This always-on privacy means that every Monero user's activity enhances the privacy of all other users, unlike selectively transparent cryptocurrencies (e.g. Zcash).bitcoin книга ethereum курсы reddit cryptocurrency win bitcoin alpari bitcoin xpub bitcoin bitcoin cnbc
bitcoin avalon bitcoin google 50 bitcoin panda bitcoin
moneybox bitcoin monero кошелек
bitcoin статья bitcoin биржи
bitcoin заработок bonus bitcoin ethereum акции