Repository navigation
feat(l1): schedule Amsterdam on Hoodi - #7391
Conversation
(2026-10-26 17:42:48 UTC), as proposed in ethereum/pm#2263 and configured by eth-clients/hoodi#31 (`amsterdamTime` in metadata/genesis.json). 1742213400 + 132352 * 32 * 12 = 1793036568. The Hoodi fork-ID rows after BPO2 now advertise next = 1793036568, and a head at or past Amsterdam gets fork hash 0x3d068b59 (CRC32 continued from BPO2's 0x23aa1351 over the big-endian timestamp; the same method reproduces 0x23aa1351 from BPO1's hash). A test pins the activation timestamp on the parsed preset. The eth_config test reads the Hoodi preset, so its `last` entry is now Amsterdam: new activation time and fork ID, the BPO2 blob schedule carried over, and the EIP-8282 builder deposit and exit predeploys, matching what reth serves on Sepolia after its Amsterdam fork. No blob-schedule change, same as Sepolia. The forks roadmap now lists the Hoodi schedule and leaves only mainnet TBD.
|
🤖 Kimi Code ReviewI'll review this PR which adds Amsterdam fork activation for the Hoodi testnet. Let me analyze each changed file. Overall AssessmentThis is a straightforward network configuration PR adding the Amsterdam fork activation time for Hoodi testnet. The changes are consistent across genesis config, tests, and documentation. However, I found one issue in the fork ID test expectations. Issues Found1. Critical: Fork ID test case at line 369 has incorrect
|
| Aspect | Assessment |
|---|---|
| Code correctness | ✓ Correct |
| Security | ✓ No vulnerabilities introduced |
| Fork ID calculations | ✓ Consistent with test expectations |
| Test coverage | ✓ Added activation test and fork ID boundary tests |
| Documentation | ✓ Updated |
One question for the author: Please confirm the BUILDER_DEPOSIT_CONTRACT_ADDRESS and BUILDER_EXIT_CONTRACT_ADDRESS values in the RPC test are from the canonical specification (EIP-7773 or related).
Otherwise, this PR looks good to merge.
Automated review by Kimi (Moonshot AI) · kimi-k2.6 · custom prompt
🤖 Claude Code ReviewReview of PR 7391: schedule Amsterdam on Hoodi The change is small and looks correct. I couldn't run the fork-hash check, because the sandbox blocked my Python call. The arithmetic and the other checks below were done by reading the diff.
Minor notes
No blocking issues. LGTM once the upstream configuration is finalized. Automated review by Claude (Anthropic) · sonnet · custom prompt |
🤖 Codex Code ReviewLooks good overall. This is a narrow config update plus test fixture refresh, and I don’t see a correctness, security, or performance regression in the touched code.
One small maintainability nit:
No EVM, gas-accounting, trie, RLP, or transaction-validation concerns are introduced by this diff. Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
Lines of code reportTotal lines added: Detailed view |
eth-clients/hoodi#33 removed `amsterdamTime` from Hoodi's genesis.json, unscheduling the Glamsterdam fork planned for 2026-10-26 (epoch 132352). Keeping the timestamp would make ethrex advertise a fork ID with `next = 1793036568` that no other client announces, and activate Amsterdam on its own on the 26th, splitting it off the network. This reverts #7391, restoring the Hoodi preset, fork-ID rows and eth_config expectations to their BPO2-last state.
**Motivation** [eth-clients/hoodi#33](eth-clients/hoodi#33), merged 2026-10-22, unschedules the Hoodi Glamsterdam fork planned for **2026-10-26 17:42:48 UTC** (epoch 132352, `amsterdamTime` 1793036568). It removes `amsterdamTime` from `metadata/genesis.json`, restoring the files to their state before eth-clients/hoodi#31. If ethrex keeps the timestamp, it advertises an EIP-2124 fork ID with `next = 1793036568` that other clients no longer announce, and on the 26th it activates Amsterdam alone and forks itself off Hoodi. **Description** Reverts lambdaclass#7391: | File | Change | |---|---| | `cmd/ethrex/networks/hoodi/genesis.json` | drop `amsterdamTime` | | `crates/common/config/networks.rs` | drop `test_hoodi_amsterdam_activation` | | `crates/common/types/fork_id.rs` | Hoodi rows after BPO2 go back to `0x23aa1351`, `next = 0` | | `crates/networking/rpc/rpc.rs` | `eth_config` test: `last` is BPO2 again (no builder predeploys) | | `docs/roadmaps/forks-roadmap.md` | note that Hoodi was unscheduled; mainnet still TBD | The automatic revert merged `rpc.rs` by also moving an unrelated `handle_get_heap` stub. I reapplied only the test hunk, so the diff touches nothing outside the test. **How to Test** ```sh cargo test -p ethrex-config cargo test -p ethrex-common --lib fork_id cargo test -p ethrex-rpc --lib eth_config ``` All pass locally: 9 config tests (including `test_hoodi_genesis_block_hash`), 8 `fork_id` tests, and the `eth_config` test. **Checklist** - [ ] Updated `STORE_SCHEMA_VERSION` (crates/storage/lib.rs) if the PR includes breaking changes to the `Store` requiring a re-sync. (Not needed: no schema change.) Co-authored-by: Ivan Litteri <67517699+ilitteri@users.noreply.github.com>
Motivation
Glamsterdam (Gloas on the consensus layer, Amsterdam on the execution layer) is proposed for Hoodi at epoch 132352, timestamp 1793036568, 2026-10-26 17:42:48 UTC, after the Sepolia fork. The date is proposed in ethereum/pm#2263, which was on the ACDE #247 agenda on 2026-10-08. The client configuration is eth-clients/hoodi#31, merged 2026-10-09;
metadata/genesis.jsonon its main branch now carriesamsterdamTime: 1793036568. pm#2263 is still open at the time of writing, and EIP-7773 has no Hoodi activation time yet. pm#2263's table gives1793134872as the Unix time for epoch 132352, but that is the start of epoch 132608 (its second option). eth-clients/hoodi#31 has the correct value:1742213400 + 132352 * 384 = 1793036568.Description
amsterdamTime: 1793036568added to the Hoodi preset, after the Osaka and BPO times, exactly as feat: schedule Hoodi Glamsterdam activation eth-clients/hoodi#31 does inmetadata/genesis.json.next = 1793036568, and a head at or past Amsterdam gets fork hash0x3d068b59. That is CRC32 continued from BPO2's0x23aa1351over the big-endian timestamp; the same method reproduces0x23aa1351from BPO1's hash. The usual just-before/at pair was added for the new fork.eth_configRPC test reads the Hoodi preset, so itslastentry is now Amsterdam: the new activation time and fork ID, the BPO2 blob schedule carried over, and the EIP-8282BUILDER_DEPOSIT_CONTRACT_ADDRESS/BUILDER_EXIT_CONTRACT_ADDRESSpredeploys. These names, addresses and the precompile set match what a public Sepolia RPC serves now that Sepolia is past its Amsterdam fork.GAS_LIMIT_SCHEDULEentry in feat: schedule Hoodi Glamsterdam activation eth-clients/hoodi#31 is consensus-layer configuration. The CL passes the gas limit throughtargetGasLimitin the payload attributes, so there is nothing to add on the execution side, same as Sepolia.How to Test
Ten preset tests pass, including
test_hoodi_amsterdam_activationand the unchangedtest_hoodi_genesis_block_hash.fork_idpasses 8/8 andethrex-rpc188/188. RemovingamsterdamTimefrom the preset failstest_hoodi_amsterdam_activationandhoodi_test_cases.Checklist
STORE_SCHEMA_VERSION(crates/storage/lib.rs) if the PR includes breaking changes to theStorerequiring a re-sync. (Not needed: no schema change.)