Repository navigation
feat(l1): schedule Amsterdam on Sepolia - #7287
Conversation
Glamsterdam (Gloas + Amsterdam) activates on Sepolia at epoch 353024, timestamp 1791294816, 2026-10-06 13:53:36 UTC. The date was decided in ethereum/pm#2205 and recorded in EIP-7773 by ethereum/EIPs#12355; the client configuration is eth-clients/sepolia#126, which sets `amsterdamTime` in the Geth-style genesis alongside the existing Osaka and BPO times. 1655733600 + 353024 * 32 * 12 = 1791294816. The blob schedule is unchanged, as upstream: Amsterdam inherits the BPO2 parameters, and the preset carries no Amsterdam blob entry, the same shape as the Plataberget preset. A test pins the activation timestamp so it cannot drift silently. The forks roadmap is corrected: it claimed Amsterdam timestamps were already wired into the Sepolia and Hoodi presets, and Hoodi's date is still TBD upstream.
|
🤖 Kimi Code ReviewI'll review this PR which adds Amsterdam fork activation time for Sepolia testnet. ReviewOverall AssessmentThis is a straightforward configuration update adding the Amsterdam hardfork activation timestamp for Sepolia. The implementation appears correct, but I have a few observations. Specific Findings1. Genesis JSON Configuration — Correct
The 2. Test Verification — Good Practice
The test correctly verifies the genesis configuration loads properly. The extensive comment with cross-references to consensus decisions ( 3. Documentation Update — Minor Inconsistency
The documentation states:
However, the earlier paragraph still says:
This is now incorrect — only Sepolia has the timestamp wired. Holesky and Hoodi are explicitly noted as "TBD upstream." Suggest updating line 110 to match the new reality: defined for the BPOs and Hegotá. Amsterdam timestamps are wired into the Sepolia
genesis file under `cmd/ethrex/networks/`. Hoodi, Holesky and mainnet dates are
still TBD upstream, so their presets carry no `amsterdamTime` yet.4. Missing: Holesky Configuration?No file shown for
5. Test Coverage — SuggestionThe test only verifies Sepolia. Consider adding a negative test for networks without Amsterdam activation: #[test]
fn test_hoodi_no_amsterdam_yet() {
let genesis = Network::PublicNetwork(PublicNetwork::Hoodi)
.get_genesis()
.unwrap();
assert_eq!(genesis.config.amsterdam_time, None);
}This prevents accidental premature activation on other networks. Security ConsiderationHardfork timestamps are consensus-critical. The cross-referenced sources check out:
Timestamp corresponds to ConclusionThe PR is correct and safe to merge with minor documentation fix (Point 3). The test addition (Point 5) is optional but recommended for robustness. Automated review by Kimi (Moonshot AI) · kimi-k2.6 · custom prompt |
🤖 Claude Code ReviewAll verified — the PR is accurate and consistent with existing conventions. Ready to write the review. Review:
|
🤖 Codex Code ReviewNo correctness, security, or performance findings in this patch.
Minor doc nit: docs/roadmaps/forks-roadmap.md:109 says the fork enum “ends at I could not run Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
Lines of code reportTotal lines added: Detailed view |
Setting `amsterdamTime` changes the EIP-2124 fork ID on Sepolia: the post-BPO2 rows now advertise 1791294816 as the next fork, and a head at or past Amsterdam gets fork hash 0x6c1d9423 (CRC32 continued from 0x268956b6 over the big-endian timestamp) with no next fork. Adds the usual just-before/at pair for the new fork, matching the other rows.
Motivation
Glamsterdam (Gloas on the consensus layer, Amsterdam on the execution layer) has a date on Sepolia: epoch 353024, timestamp 1791294816, 2026-10-06 13:53:36 UTC. Decided in ethereum/pm#2205 (merged 2026-09-15) and recorded in the EIP-7773 activation table by ethereum/EIPs#12355 (merged 2026-09-17). The client configuration is eth-clients/sepolia#126, still open at the time of writing but reflecting the merged decision.
Description
amsterdamTime: 1791294816added to the Sepolia preset, after the Osaka and BPO times, exactly as Schedule Sepolia Glamsterdam activation eth-clients/sepolia#126 does inmetadata/genesis.json.1655733600 + 353024 * 32 * 12 = 1791294816.next = 1791294816, and a head at or past Amsterdam gets fork hash0x6c1d9423(CRC32 continued from BPO2's0x268956b6over the big-endian timestamp; the same method reproduces0x268956b6from BPO1's hash). The usual just-before/at pair was added for the new fork.Hoodi is not scheduled here because pm#2205 leaves its date TBD.
How to Test
cargo test -p ethrex-configNine preset tests pass;
cargo test -p ethrex-common --lib fork_idpasses 8/8, includingtest_sepolia_amsterdam_activationand the unchangedtest_sepolia_genesis_block_hash.Checklist
STORE_SCHEMA_VERSION(crates/storage/lib.rs) if the PR includes breaking changes to theStorerequiring a re-sync. (Not needed: no schema change.)