Conversation
🤖 Kimi Code ReviewReview SummaryThis PR updates the Amsterdam test fixtures branch from Issues FoundNone - the changes are consistent across all files and the update appears intentional. VerificationThe changes are:
SuggestionConsider adding a comment in the CI workflow file ( Automated review by Kimi (Moonshot AI) · custom prompt |
🤖 Claude Code ReviewThis is a simple maintenance PR bumping the Amsterdam EIP-7928 BAL fixtures branch reference from ReviewSummary: Straightforward version bump — all five occurrences of Consistency check:
Observation: The fixtures URL ( No bugs, no security concerns, no logic issues. The change is correct and complete. Automated review by Claude (Anthropic) · custom prompt |
🤖 Codex Code ReviewNo blocking findings.
Given scope, there are no direct code correctness, consensus, gas-accounting, memory-safety, or Rust-idiom concerns in this PR. Automated review by OpenAI Codex · custom prompt |
Greptile SummaryThis PR updates all Amsterdam fixtures branch references from
All changes are consistent and correctly synchronized across configuration, CI, and documentation files. Confidence Score: 5/5
|
| Filename | Overview |
|---|---|
| Makefile | Updated AMSTERDAM_FIXTURES_BRANCH from devnets/bal/2 to devnets/bal/3 |
| .github/workflows/daily_hive_report.yaml | Updated Amsterdam fixtures branch argument from devnets/bal/2 to devnets/bal/3 |
| docs/developers/l1/testing/hive.md | Updated documentation examples and notes from devnets/bal/2 to devnets/bal/3 |
Last reviewed commit: 0cbb3c6
0cbb3c6 to
27d2542
Compare
fd2b5d6 to
cd22ef3
Compare
Lines of code reportTotal lines added: Detailed view |
Benchmark Results ComparisonNo significant difference was registered for any benchmark run. Detailed ResultsBenchmark Results: BubbleSort
Benchmark Results: ERC20Approval
Benchmark Results: ERC20Mint
Benchmark Results: ERC20Transfer
Benchmark Results: Factorial
Benchmark Results: FactorialRecursive
Benchmark Results: Fibonacci
Benchmark Results: FibonacciRecursive
Benchmark Results: ManyHashes
Benchmark Results: MstoreBench
Benchmark Results: Push
Benchmark Results: SstoreBench_no_opt
|
Align DUPN, SWAPN, and EXCHANGE decoding with the updated EIP-8024 spec (ethereum/EIPs#11306). decode_single now uses (x + 145) % 256 instead of branching, and decode_pair uses XOR 0x8F instead of conditional subtraction. EXCHANGE valid range extended from 0x00-0x4F to 0x00-0x51, adding two new swappable pairs (14,15) and (14,16).
- Subtract remaining state_gas_reservoir from gas_used in finalize_execution (unused reservoir is returned, not consumed) - EIP-7702 auth refund returns to state gas reservoir for Amsterdam+ instead of regular refund counter - Skip Osaka TX_MAX_GAS_LIMIT cap for Amsterdam+ (EIP-8037 reservoir model removes the per-tx gas limit restriction)
EIP-8037 state gas for new account creation must be consumed even if CREATE fails due to insufficient balance, depth limit, or max nonce. Only initcode revert refunds the state gas via the snapshot mechanism.
…tion When an SSTORE restores a slot to zero (0→x→0), the state gas refund must go through the normal refund counter (subject to the 1/5 cap), not directly reduce state_gas_used. The state_gas_used must reflect peak consumption for block-level max(regular, state) accounting per EIP-7778/EIP-8037.
Three related fixes for state gas accounting in Amsterdam fork: 1. increase_state_gas must not mutate on OOG: Reorder to charge gas first, then decrement reservoir, then increment state_gas_used. On OOG the early return leaves all counters unmodified (matches EELS). 2. Track orphaned state gas spill in reverted children: When child frames consume spilled state gas then revert, state_gas_used is restored but the spill remains in gas_used. Track this via reverted_child_state_spill counter and exclude from regular gas derivation in refund_sender. 3. CREATE account state gas survives initcode revert: Move state_gas_used/reservoir snapshots to AFTER the account state gas charge. Per EELS, CREATE's account charge is in the parent frame and persists even when initcode reverts.
Two fixes for Amsterdam EIP-8037 state gas accounting: 1. CREATE collision gas excluded from regular dimension: On CREATE2 address collision, reserved child gas is consumed but per EELS escrow mechanism it should not count as regular gas. Add the consumed gas_limit to the exclusion counter so derived regular gas is not inflated. 2. Amsterdam intrinsic regular gas cap validation: Add missing EELS check that rejects TXs where max(intrinsic_regular, calldata_floor) exceeds TX_MAX_GAS_LIMIT. Regular gas is capped at TX_MAX_GAS_LIMIT in Amsterdam (excess becomes state gas reservoir), so intrinsic regular cost must fit within the cap.
execution-spec-tests reorganized fixtures into per-fork subdirectories (e.g., fixtures/state_tests/for_amsterdam/ instead of fixtures/state_tests/amsterdam/).
Matches EELS where charge_state_gas() is called in create()/create2() before generic_create() computes the child gas limit. Previously the state gas was charged inside generic_create() after the 63/64 reservation, leaving the parent with ~2,796 gas remaining; when the reservoir is 0 (gas_limit < TX_MAX_GAS_LIMIT) the 131,488-gas spill would OOG. Moving the charge to op_create/op_create2 ensures child gas is 63/64 of the gas remaining after state gas is accounted for. Fixes test_selfdestruct_to_self_same_tx (all 4 variants).
- EIP-8037 implemented (#6271 merged, #6293 open with all tests passing) - BAL optimizations shipped: parallel execution (#6233), batched reads + parallel state root (#6227) - EF tests and all hive suites passing (including Amsterdam consume tests) - Updated devnet-3 changes: BAL size cap, 7708 rename, 8024 branchless normalization
## Summary - Updated forks-roadmap.md with current bal-devnet-3 status - EIP-8037 State Creation Gas Cost implemented (#6271 merged, #6293 open — EF tests + all hive suites passing) - BAL optimizations shipped: parallel execution (#6233), batched reads + parallel state root (#6227) - Devnet-3 spec changes: BAL size cap, EIP-7708 Burn rename, EIP-8024 branchless normalization - Updated tables, priority note, and technical debt section to reflect current state [Rendered markdown](https://github.com/lambdaclass/ethrex/blob/docs/update-forks-roadmap-march-4/docs/roadmaps/forks-roadmap.md) ## Test plan - [ ] Verify markdown renders correctly
Motivation
bal-devnet-3 alignment: bump fixtures, implement EIP-8037 state creation gas cost increase, and fix EIP-8024 encoding.
Changes
Infrastructure
devnets/bal/2todevnets/bal/3bal@v5.2.0EIP-8024: Branchless normalization
EIP-8037: State Creation Gas Cost Increase (spec)
block.gas_used = max(sum(regular), sum(state))per EIP-7778cumulative_gas_used= post-refund total (what user pays)increase_state_gasreordered: charge first, mutate counters only on success (matches EELS)reverted_child_state_spillcounter)max(intrinsic_regular, calldata_floor) > TX_MAX_GAS_LIMIT)Test results
EIP-8037: 114/114 bal@v5.2.0 fixture tests passing via
engine_newPayloadV5Checklist
STORE_SCHEMA_VERSION(crates/storage/lib.rs) if the PR includes breaking changes to theStorerequiring a re-sync.