Parity implements a really useful trace module for deep diving into blocks and transactions.
One particular method trace_transaction allows you to investigate the EVM execution paths of a transaction.
It is not however clear in the documentation what the various response values represent.
Most of the values are (I believe) fairly obvious.
The ones that are confusing me are gas
within the action
property of the result, and gasUsed
within the result
property.
I assume that they represent the maximum gas available at that given step, and the amount of gas used by that step respectively BUT a the initial gas
value does not equal that sent with the transaction and a summation of the gasUsed
values does not equal the value for gasUsed returned by a call to getTransactionReceipt
.
An example.
This (random) transaction on the Ropsten testnet.
The first call has a gas value of 576552 whereas the transaction was submitted with a gas limit of 600000.
The summation of gasUsed
values is 102979 whereas a call to getTransactionReceipt
returns a total gas used of 93518.
The Geth debug modules also shown a difference of 93518 between the first and last EVM commands.
Can anyone clear up what these values actually represent?