-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: gas and gasUsed in trace root only for ParityTrace #171
fix: gas and gasUsed in trace root only for ParityTrace #171
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tysm for looking into this.
it seems like this is still a wip and I'll take a closer look once cleaned up.
but very supportive, your write up made a lot of sense
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ty!
last question
// we set the spec id here because we only need to do this once and this condition is | ||
// hit exactly once | ||
self.spec_id = Some(context.spec_id()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this got lost, or do we no longer need this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused, we also have unused variables in the various constructors
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I double check the code. This is self.spec_id
for TracingInspector
is used to set the gas limit for the Parity trace root only once. For Geth Debug trace, this will be set in the newly constructed functions set_transaction_gas_limit()
and with_transaction_gas_limit()
. Therefore, we on longer need this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tysm!
doing a new release and we can finish the reth pr
Description
This pull request is Part 1/2 of fixing the bug where the
gas
andgasUsed
fields in Parity Trace root are incorrect.Part 2/2 paradigmxyz/reth#9761
Related Issues and Pull Requests
Problem
The
gas
andgasUsed
fields in Geth Debug Trace root should be the gas limit and gas used for the entire transaction.However, two fields in Parity Trace root should be the original ones.
Reproducible Example
With the latest version Reth v1.0.3, using
trace_transaction()
to tracethe transaction
0x03128677ee3a9623d20f3c677f423ccc592d126374bf32e331343dd1bdf38b61
From Reth
From Etherscan and QuickNode
Solution for
revm-inspectors
Not modify
gas_limit
andgas_used
in the trace rootThe modification in Step 1 will cause another problem
The
gas
field for Geth Debug Trace root will also be reset (not the gas limitation for the entire transaction).therefore, can define
set_transaction_gas_limit()
andwith_transaction_gas_limit()
for Geth Debug,which is similar to current
set_transaction_gas_used()
andwith_transaction_gas_used()
for Parity.Then, modify the Reth Part:
crates/rpc/rpc/src/trace.rs
andcrates/rpc/rpc/src/debug.rs
to completely fix the bug.Miscellaneous
Actually, I love the current design, but the results are inconsistent with those of others.
When I used
make pr
to test the Reth Part, the issue make pr failed of lockfile reth#9381 still exists for me.I should only skip tests for
lockfile
and test them seperately.