-
Notifications
You must be signed in to change notification settings - Fork 6
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: firehose fixes #12
Conversation
// Precompiled contracts are touched during a call. | ||
// Make sure we avoid emitting a new account event for them. | ||
if _, ok := s.precompiles[addr]; !ok { | ||
s.logger.OnNewAccount(addr) |
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.
@maoueh I think we need to push this change to extend-tracer PR.
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.
Nah not really. The thing here is that all this code is actually there to match Firehose legacy tracer which is the one that is wrong.
The code is ok. It sadden me that we need to tweak the Geth code so much to get back the old behavior. I'm trying to think of alternative implementations now. It seems that on a single occasion we set checkPrecompile
at true
and it's in the AddBalance
of a StaticCall
.
Tomorrow morning I'll work on adding to battlefield some test cases to cover those details and then we could try to come up with something "less" intrusive.
But yeah I do see why we need to tweak the StateDB
tracing code since the event is not emitted at all, we have little way to get notified. Something I'm thinking about, we remove the passing of the checkPrecompile
everywhere and we always emit in our version (with probably some kind of variable to enable this behavior, maybe at the EVM/StateDB level).
Then we deal with respecting the Firehose legacy behavior in OnNewAccount
itself since now we would always receive the event.
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.
Does this mean that this with PR, we are now on par with Firehose legacy? In which range have you completed the validation so far for Geth?
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.
@maoueh I wasn't referring to the checkPrecompile
logic here.
I meant s.logger.OnNewAccount(addr)
should be outside the prev == nil
condition.
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.
We have tested till 3.5M. I did find the same Topics: [""]
mismatch issues in this as well.
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 wasn't referring to the checkPrecompile
Ok sorry, misunderstood indeed. This is also something that was wrong in the old Firehose implementation, we discussed me and the Geth team member about this and the told me our old instrumentation point was incorrect.
I'll merge and work on your PR.
I did find the same Topics: [""]
Perfect, at least the Geth and Erigon are equivalent, which is a good news.
This commit squashes the op-geth fork history into a more maintainable diff for rebasing upon upstream geth. reference-optimistic-geth changes (origins of op-geth in early Bedrock development stage): - Deposit TX Type - Enable deposit tx in EVM/tx pool - Change deposit nonce to not be the max nonce - Extend PayloadAttributesV1 with a Transactions field - Force deposits at the start of each L2 block - Fix height check - noTxPool flag, reproduce block in verifier mode without tx pool interference - Fix RPC json marshalling (ref op-geth PR 4) - Deposit txs block height check in block body validation (ref op-geth PR 5) - core: do not try to reinject deposit txs into tx-pool (ref-op-geth PR 6) - deposit source hash field instead of L2 block height and tx index combination - Include invalid deposits, rewind state, but always persist mint (#10) - Provide gas to Call/Create in deposit transactions (#12) - Add docker builds (ref-op-geth PR 16, 17) - Don't panic on deposit transaction signature values or chain ID (ref-op-geth PR 18) - core: Add version to DepositTx (ref-op-geth PR 19) - Enable Geth build/lint/test in CircleCI (ref-op-geth PR 23) - core: Include guaranteed gas in the gas pool (ref-op-geth PR 21) - core: handle base fee, l1 availability fee, tx fee (ref-op-geth PR 27) - fix: deposit tx hash - fix l1 fee cache, rpc, tracing and tx pool - core: remove deposit-tx sub-type (a.k.a. deposit version byte) - eth/catalyst: allow engine user to reorg own chain - miner: restore ability to reorg deep as block builder - params: print Optimism consensus type in banner - core/types: remove unused protected() method, see upstream PR 23376 - core: do not mutate original balance value in tx pool l1 cost adjustment - core: subtract deposit gas from pool, so other txs do not use the same gas. And fail tx processing if deposits reach gas limit - core/types: deposits do not tip, avoid basefee subtraction - Unmeter the L1 Attributes Transaction - miner: handle force tx errors as critical, clean up diff - ci: Switch branch - eth,miner: return STATUS_INVALID when failing to process forced transactions in request (ref-op-geth PR 40) - verifier: forward tx to sequencer based on flag - txpool: add flag to disable tx gossip (ref-op-geth PR 42) - Add op-geth version in addition to geth version (ref-op-geth PR 43) - ci: CircleCI improvements (ref-op-geth PR 44) - Rename to op-geth - Build latest tag on optimism branch op-geth changes: - Expose cache config in simulated backend (#2) - Add EIP-1559 parameters - eth/catalyst: update payload id computation (#1) - make eip1559 configurable (#4) - post-merge network should not log warnings about missing transition information (#5) - Make the simulator more configurable (#6) - fix OPB-6 - IsDepositTx check instead of artificial nonce value check (#7) - Simulated backend - enable proof of stake consensus type and fix performance issue (#8) - accounts: simulated backend consensus engine option and immediate tx indexing - consensus/beacon: recognize all blocks as reached TTD with 0 TTD in chain config - Add --rollup.historicalhttp CLI flag and fix backend iface - Flags and interfaces for historical RPC requests (#12) - Redirect historical RPC requests (ethereum#13) - Use the pre-existing ethereum.NotFound error (ethereum#18) - Add historical endpoint to TraceBlockByNumber and TraceBlockByHash (ethereum#19) - Add historical endpoint to TraceTransaction (ethereum#20) - Add historical endpoint to TraceCall (ethereum#21) - optimism: fee params from info txi, update l1 cost func GPO params read (ethereum#15) - add hardcoded addresses for fee payouts (ethereum#23) - dynamic gas limit via engine API (ethereum#22) Co-authored-by: Matthew Slipper <[email protected]> Co-authored-by: Joshua Gutow <[email protected]> Co-authored-by: protolambda <[email protected]> Co-authored-by: Mark Tyneway <[email protected]> Co-authored-by: Maurelian <[email protected]>
This PR fixes following issues in firehose