katana-mainnet genesis: add isthmusTime + jovianTime (unblock op-reth) [issue-501] #25

Merged
rob merged 1 commits from issue-501-katana-jovian into main 2026-07-02 14:05:25 +00:00
Collaborator

Why

katana-mainnet op-reth (just migrated from op-geth) restored from snapshot at block 33,738,880 but is stuck — op-node throws MinBaseFeeNotAllowedBeforeJovian on every forkchoice update.

Root cause (diagnosed live on de-10): op-reth reads its OP-stack fork schedule solely from op/katana/mainnet/genesis.json, and that genesis was missing isthmusTime and jovianTime (config stopped at holoceneTime: 0). So op-reth never activates Jovian and rejects op-node's post-Jovian (1 gwei min-base-fee) payloads. op-node and op-geth were fine because they get these from env overrides (OP_NODE_OVERRIDE_JOVIAN / GETH_OVERRIDE_JOVIAN = 1773066601); op-reth has no override mechanism wired, so genesis is its only source.

Block 33,738,880's timestamp (2026-06-03) is 86 days past Jovian activation — the chain is unambiguously post-Jovian.

Change (asset-only)

op/katana/mainnet/genesis.json config — add two fields (exact values match the working op-geth/op-node overrides):

"isthmusTime": 1746806401,
"jovianTime": 1773066601

Only these two lines added; no alloc/genesis-state change. Fork timestamps are not part of the genesis block hash, so op-reth keeps its restored 33.7M datadir and simply activates the forks going forward — no resync.

Deploy note

After merge + deploy-compose-repo, the op-reth container needs a force-recreate to pick up the updated bind-mounted genesis.json. Then op-reth accepts op-node's payloads and syncs the ~2.5M tail to head (~36.2M).

branch SHA: 58d45c85764c1bd3bc310dac471b8ab4e2d772ca

## Why katana-mainnet op-reth (just migrated from op-geth) restored from snapshot at block 33,738,880 but is **stuck** — op-node throws `MinBaseFeeNotAllowedBeforeJovian` on every forkchoice update. **Root cause (diagnosed live on de-10):** op-reth reads its OP-stack fork schedule **solely** from `op/katana/mainnet/genesis.json`, and that genesis was **missing `isthmusTime` and `jovianTime`** (config stopped at `holoceneTime: 0`). So op-reth never activates Jovian and rejects op-node's post-Jovian (1 gwei min-base-fee) payloads. op-node and op-geth were fine because they get these from env overrides (`OP_NODE_OVERRIDE_JOVIAN` / `GETH_OVERRIDE_JOVIAN` = `1773066601`); op-reth has **no override mechanism** wired, so genesis is its only source. Block 33,738,880's timestamp (2026-06-03) is 86 days past Jovian activation — the chain is unambiguously post-Jovian. ## Change (asset-only) `op/katana/mainnet/genesis.json` `config` — add two fields (exact values match the working op-geth/op-node overrides): ```json "isthmusTime": 1746806401, "jovianTime": 1773066601 ``` Only these two lines added; no alloc/genesis-state change. **Fork timestamps are not part of the genesis block hash**, so op-reth keeps its restored 33.7M datadir and simply activates the forks going forward — no resync. ## Deploy note After merge + `deploy-compose-repo`, the op-reth container needs a **`force-recreate`** to pick up the updated bind-mounted `genesis.json`. Then op-reth accepts op-node's payloads and syncs the ~2.5M tail to head (~36.2M). branch SHA: `58d45c85764c1bd3bc310dac471b8ab4e2d772ca`
claude added 1 commit 2026-07-02 14:04:41 +00:00
op-reth reads OP-stack fork schedule from genesis.json; without
isthmusTime/jovianTime it rejects post-Jovian payloads (MinBaseFeeNotAllowedBeforeJovian).
rob merged commit 4d5d8f4be1 into main 2026-07-02 14:05:25 +00:00
rob deleted branch issue-501-katana-jovian 2026-07-02 14:05:26 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: StakeSquid/ethereum-rpc-docker#25