fix(genesis): sync devnet alloc with DevnetAllocData to restore genesis hash#2439
fix(genesis): sync devnet alloc with DevnetAllocData to restore genesis hash#2439gzliudan wants to merge 1 commit into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
This PR fixes a devnet startup incompatibility where XDC init devnet (embedded genesis/devnet.json) produced a different genesis hash than XDC --devnet (params/Go-side genesis), preventing nodes initialized via the two paths from peering.
Changes:
- Add the three missing prefunded accounts to
genesis/devnet.jsonso its alloc matchesDevnetAllocData/params.DevnetGenesisHash. - Add a regression test ensuring embedded genesis JSON for mainnet/testnet/devnet produces the exact canonical genesis hash constants in
params.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| genesis/devnet.json | Adds three missing balance-only accounts to devnet alloc to restore genesis hash parity. |
| core/genesis_load_test.go | Adds a hash-parity regression test between embedded genesis JSON and params.*GenesisHash. |
…is hash The devnet genesis hash exposed by `XDC init devnet` diverged from params.DevnetGenesisHash (used by `XDC --devnet` / DefaultDevnetGenesisBlock). The two paths would have produced different block 0, making nodes initialized via each method unable to peer with one another. Root cause ---------- Commit 00be1f5 (chore(devnet): may 2026 devnet reset, XinFinOrg#2347, 2026-05-25) updated core/genesis_alloc_devnet.go and common/constants.devnet.go as part of a devnet network reset. It added three pre-funded accounts to DevnetAllocData: 4b1a14a10cb48e4cfddd17c379dfcaa358b011bc d16c20329d391104029d0a850dcdf9ed6e259b60 cc08002e7e4baec892785887a74d35557e8d2c15 params.DevnetGenesisHash was later updated to reflect the new state root in dfce638 (XinFinOrg#2329, 2026-05-28). genesis/devnet.json was NOT touched by either commit; its alloc still contained only the pre-May-2026 eight accounts. Commit 1c0923d (XinFinOrg#2354, 2026-07-06) then filled in the config section of devnet.json but again left the alloc unchanged, so the JSON-derived genesis hash remained 0x7dad95... while params.DevnetGenesisHash was 0xb8be00... Fix --- Add the three missing balance-only accounts to genesis/devnet.json alloc, bringing it into parity with DevnetAllocData. After this change: json.Unmarshal(DevnetGenesis).ToBlock().Hash() == params.DevnetGenesisHash == 0xb8be003946a9c268... Verified by running TestEmbeddedGenesisConfigMatchesParams (all three networks pass) and a targeted hash-equality check.
a9a9b8a to
87cb04e
Compare
Proposed changes
The devnet genesis hash exposed by
XDC init devnetdiverged from params.DevnetGenesisHash (used byXDC --devnet/ DefaultDevnetGenesisBlock). The two paths would have produced different block 0, making nodes initialized via each method unable to peer with one another.Root cause
Commit 00be1f5 (chore(devnet): may 2026 devnet reset, #2347, 2026-05-25) updated core/genesis_alloc_devnet.go and common/constants.devnet.go as part of a devnet network reset. It added three pre-funded accounts to DevnetAllocData:
4b1a14a10cb48e4cfddd17c379dfcaa358b011bc
d16c20329d391104029d0a850dcdf9ed6e259b60
cc08002e7e4baec892785887a74d35557e8d2c15
params.DevnetGenesisHash was later updated to reflect the new state root in dfce638 (#2329, 2026-05-28).
genesis/devnet.json was NOT touched by either commit; its alloc still contained only the pre-May-2026 eight accounts. Commit 1c0923d (#2354, 2026-07-06) then filled in the config section of devnet.json but again left the alloc unchanged, so the JSON-derived genesis hash remained 0x7dad95... while params.DevnetGenesisHash was 0xb8be00...
Fix
Add the three missing balance-only accounts to genesis/devnet.json alloc, bringing it into parity with DevnetAllocData. After this change:
json.Unmarshal(DevnetGenesis).ToBlock().Hash() == params.DevnetGenesisHash
== 0xb8be003946a9c268...
Verified by running TestEmbeddedGenesisConfigMatchesParams (all three networks pass) and a targeted hash-equality check.
Types of changes
What types of changes does your code introduce to XDC network?
Put an
✅in the boxes that applyImpacted Components
Which parts of the codebase does this PR touch?
Put an
✅in the boxes that applyChecklist
Put an
✅in the boxes once you have confirmed below actions (or provide reasons on not doing so) that