Skip to content

fix: add missing hardfork timestamps to mainnet and hoodi genesis#53

Open
panos-xyz wants to merge 1 commit intomainfrom
fix/add-hardfork-timestamps
Open

fix: add missing hardfork timestamps to mainnet and hoodi genesis#53
panos-xyz wants to merge 1 commit intomainfrom
fix/add-hardfork-timestamps

Conversation

@panos-xyz
Copy link
Contributor

@panos-xyz panos-xyz commented Mar 2, 2026

Summary

  • Add morph203Time, viridianTime, emeraldTime to mainnet/geth-data/genesis.json
  • Add viridianTime, emeraldTime to hoodi/geth-data/genesis.json

Background

go-ethereum determines hardfork activation from hardcoded configs (MorphMainnetChainConfig / MorphHoodiChainConfig in params/config.go). When geth starts with --morph or --morph-hoodi, it always overwrites the stored chain config with these hardcoded values — so geth sync works regardless of what's in genesis.json.

However, other clients (e.g. morph-reth) rely purely on genesis.json to determine hardfork activation. Without these fields, timestamp-based hardforks (Morph203, Viridian, Emerald) are never activated.

Values (from go-ethereum params/config.go)

Mainnet (chain ID 2818):

Field Value Date
morph203Time 1747029600 2025-05-12
viridianTime 1762149600 2025-10-04
emeraldTime 1767765600 2026-01-07

Hoodi (chain ID 2910):

Field Value Date
viridianTime 1761544800 2025-10-27
emeraldTime 1766988000 2025-12-29

(morph203Time: 0 was already present in hoodi)

Test Plan

  • geth init mainnet/geth-data/genesis.json — exit 0, genesis hash unchanged (649c9b..cfa7a9)
  • geth init hoodi/geth-data/genesis.json — exit 0, genesis hash unchanged (2cbcff..bfc35c)

The genesis.json files were missing the timestamp-based hardfork
activation fields. When geth starts with --morph/--morph-hoodi flags,
it overrides the stored config with the hardcoded MorphMainnetChainConfig
/ MorphHoodiChainConfig, so sync still works for geth. However, other
clients (e.g. morph-reth) that rely purely on genesis.json to determine
hardfork activation would silently skip these hardforks.

Mainnet (chain ID 2818) - from go-ethereum MorphMainnetChainConfig:
  morph203Time: 1747029600  (2025-05-12)
  viridianTime: 1762149600  (2025-10-04)
  emeraldTime:  1767765600  (2026-01-07)

Hoodi (chain ID 2910) - from go-ethereum MorphHoodiChainConfig:
  viridianTime: 1761544800  (2025-10-27)
  emeraldTime:  1766988000  (2025-12-29)
  (morph203Time: 0 was already present)

Verified: geth init succeeds with unchanged genesis hashes.
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.

1 participant