Skip to content

fix: add slot_number support to t8n and testing_buildBlockV1#1

Open
qu0b wants to merge 3 commits intofselmo:feat/update-t8n-for-amsterdamfrom
qu0b:qu0b/fix/t8n-slot-number-and-testing-buildblock
Open

fix: add slot_number support to t8n and testing_buildBlockV1#1
qu0b wants to merge 3 commits intofselmo:feat/update-t8n-for-amsterdamfrom
qu0b:qu0b/fix/t8n-slot-number-and-testing-buildblock

Conversation

@qu0b
Copy link
Copy Markdown

@qu0b qu0b commented Mar 17, 2026

Summary

Three fixes for Amsterdam/EIP-7843 compatibility needed to run BAL benchmarks via benchmarkoor.

1. t8n: output currentSlotNumber in execution result

The EELS fill framework reads the t8n output JSON to construct fixture headers. Without currentSlotNumber in the output, Amsterdam fixtures lack slotNumber in block payloads, and geth rejects them with "nil slotnumber post-amsterdam".

  • Adds SlotNumber field to ExecutionResult struct
  • Defaults slotNumber = blockNumber for Amsterdam blocks when not provided in env
  • Outputs currentSlotNumber in the JSON result

2. testing_buildBlockV1: pass slotNumber through to block builder

The BuildBlockV1 RPC handler doesn't forward PayloadAttributes.SlotNumber to BuildPayloadArgs.SlotNum, so BuildTestingPayload creates generateParams without slotNum. This causes "no slot number set post-amsterdam" on any Amsterdam-active chain.

Files:

  • eth/catalyst/api_testing.go — Extract SlotNumber from payload attributes
  • miner/payload_building.go — Add slotNum: args.SlotNum to generateParams in BuildTestingPayload

3. Updated gen_execresult.go marshaling

Added SlotNumber to both marshal and unmarshal structs in the gencodec-generated file.

Testing

With these fixes + corresponding EELS changes (jochem-brouwer/execution-specs#3):

  • 44/44 BAL scenario benchmarks pass in benchmarkoor with geth
  • All 3 geth BAL execution modes tested (full, sequential, nobatchio)
  • testing_buildBlockV1 works on frozen snapshots for stateful benchmark payload generation

Related

🤖 Generated with Claude Code

fselmo and others added 3 commits March 16, 2026 22:38
Three fixes for Amsterdam/EIP-7843 compatibility:

1. t8n: output currentSlotNumber in execution result
   - Add SlotNumber field to ExecutionResult
   - Default to block number for Amsterdam when not provided in env
   - Output in JSON result so EELS fill framework can include it in fixtures

2. t8n: update gen_execresult.go marshaling for SlotNumber

3. testing_buildBlockV1: pass slotNumber through to block builder
   - api_testing.go: Extract SlotNumber from PayloadAttributes
   - payload_building.go: Forward slotNum in BuildTestingPayload's generateParams

Without fix MariusVanDerWijden#3, testing_buildBlockV1 fails with "no slot number set
post-amsterdam" on any Amsterdam-active chain.

Without fixes #1-2, EELS-generated Amsterdam fixtures lack slotNumber
in block payloads, causing geth to reject them with "nil slotnumber
post-amsterdam".

Tested: 44/44 BAL scenario benchmarks pass in benchmarkoor with geth
across all 3 BAL execution modes (full, sequential, nobatchio).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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