Skip to content

handle edge case for genesis block in SeekCommitment#18960

Merged
AskAlexSharov merged 1 commit into
mainfrom
seek_commitment_gen
Feb 5, 2026
Merged

handle edge case for genesis block in SeekCommitment#18960
AskAlexSharov merged 1 commit into
mainfrom
seek_commitment_gen

Conversation

@sudeepdino008

@sudeepdino008 sudeepdino008 commented Feb 4, 2026

Copy link
Copy Markdown
Member

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.

@sudeepdino008 sudeepdino008 changed the title handle edge case about genesis block in SeekCommitment handle edge case for genesis block in SeekCommitment Feb 4, 2026
@AskAlexSharov AskAlexSharov merged commit 62ef773 into main Feb 5, 2026
18 checks passed
@AskAlexSharov AskAlexSharov deleted the seek_commitment_gen branch February 5, 2026 09:56
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants