handle edge case for genesis block in SeekCommitment#18960
Merged
Conversation
AskAlexSharov
approved these changes
Feb 5, 2026
mattevans
added a commit
to ethpandaops/erigone-legacy
that referenced
this pull request
Feb 6, 2026
* upstream/main: (91 commits) perf(cl/block_collector): optimize encodeBlock buffer allocation (erigontech#18980) db/kv: fix code cache hash key computation (erigontech#18965) Fix hive tests 0302 (erigontech#18986) perf(execution/types): optimize EIP-7685 request encoding (erigontech#18985) refactor: replace interface{} with any for clarity and modernization (erigontech#18978) refactor: replace interface{} with any for clarity and modernization (erigontech#18977) Rework Dockerhub API call authorization mechanism. (erigontech#18989) claude: add erigon-network-ports skill (erigontech#18992) PersistentBlockCollector: assert on inserting gap (erigontech#18979) qa-tests: add Geth test to the RPC Historic Performance Tests (erigontech#18895) a bit less debug logs (erigontech#18974) ProcessFrozenBlocks: to support `isDomainAheadOfBlocks` (which we have in `fcu`) (erigontech#18981) qa-tests: fix summary in RPC Performance Tests Latest (erigontech#18984) handle edge case for genesis block in SeekCommitment (erigontech#18960) db/preverified: remove redundant assertSorted in Get (erigontech#18967) txnprovider/shutter: fix identity preimage DecodeSSZ error length (erigontech#18938) perf(cl/sentinel): use stack allocation for light_client response prefix (erigontech#18961) Add debug.SetupSimple, and improve torrent client status info log (erigontech#18953) Refactor worker count calculation to remove redundant bounds check (erigontech#18415) fix: remove duplicate TxPoolBlobPriceBumpFlag check in setTxPool (erigontech#18472) ...
Giulio2002
pushed a commit
that referenced
this pull request
Feb 6, 2026
**issue:** while doing stage_exec from scratch, `SeekCommitment` restores state with (block=0, txNum=1). This skips over the txNum=0 tx, whose processing populates the ibs with genesis information in `TxTask#Execute`. Downstream, this leads to state root mismatch. **context:** i was doing stage_exec from genesis in gnosis. **fix** - when SyncStageProgress is x, it typically means that block x is executed completely. Except when blockNum = 0, then it could either mean that block executed completely (so restored txnum = 1) or not (restored txnum=0) - for block=0, we should consider the latter (txnum=0), because if we're doing execution from scratch, it'll typically be with txnum=0. Half block execution of genesis block (i.e. txnum=0 state is processed/persisted, but txnum=1 not) is a hard to reach state.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
issue:
while doing stage_exec from scratch,
SeekCommitmentrestores state with (block=0, txNum=1). This skips over the txNum=0 tx, whose processing populates the ibs with genesis information inTxTask#Execute. Downstream, this leads to state root mismatch.context:
i was doing stage_exec from genesis in gnosis.
fix