You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`--l1.portal-address`| (from zone.json) | ZonePortal contract on L1 |
494
494
|`--l1.genesis-block-number`| (from zone.json) | L1 block when the zone was created |
495
-
|`--zone.id`| 0 | Zone ID from ZoneFactory (for private RPC auth). The zone's chain ID is derived as `4217000000 + zone_id`. |
495
+
|`--zone.id`| 0 | Zone ID from ZoneFactory (for private RPC auth). The zone's chain ID is derived as `421700000 + (zone_id % 1002610000)` (mainnet) or `1424310000 + (zone_id % 723173648)` (testnet). |
496
496
|`--sequencer-key`| (optional) | Sequencer private key for block production |
497
497
|`--block.interval-ms`| 250 | Block building interval |
498
498
|`--zone.batch-interval-secs`| 60 | Max seconds to accumulate zone blocks before submitting a batch to L1 |
Copy file name to clipboardExpand all lines: docs/specs/privacy/overview.md
+10-2Lines changed: 10 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,10 +62,18 @@ The factory deploys a `ZonePortal` that escrows enabled tokens on Tempo and a `Z
62
62
Each zone has a unique EIP-155 chain ID derived deterministically from its on-chain zone ID:
63
63
64
64
```
65
-
chain_id = 4217000000 + zone_id
65
+
# Mainnet zones (range: 421,700,000 – 1,424,309,999)
66
+
chain_id = 421700000 + (zone_id % 1002610000)
67
+
68
+
# Testnet / Moderato zones (range: 1,424,310,000 – 2,147,483,647)
69
+
chain_id = 1424310000 + (zone_id % 723173648)
66
70
```
67
71
68
-
The prefix `4217` corresponds to the Tempo L1 chain ID. This ensures replay protection between zones — a transaction signed for one zone cannot be replayed on another. The chain ID is set in the zone's genesis configuration during creation and validated by the zone node at startup.
72
+
Both ranges stay below `2^31 − 1` (2,147,483,647), which is the safe ceiling defined by EIP-2294 and ENSIP-11. Chain IDs above this limit can break ENS multi-chain address resolution and JavaScript tooling that uses 32-bit integers. Zone IDs wrap via modular arithmetic so that the derived chain ID always stays within the designated range.
73
+
74
+
Because wrapping can reuse a chain ID that was previously assigned to a different zone, it is the responsibility of the sequencer to ensure — after deploying a zone — that the derived chain ID does not correspond to any active chain, including any zone that has previously used that chain ID.
75
+
76
+
This ensures replay protection between zones — a transaction signed for one zone cannot be replayed on another. The chain ID is set in the zone's genesis configuration during creation and validated by the zone node at startup.
0 commit comments