fix(params): accept legacy foudationwalletaddr in chain config, fix #2063#2141
Conversation
…inFinOrg#2063 Add backward-compatible XDPoSConfig JSON decoding for the legacy key "foudationWalletAddr" introduced before PR XinFinOrg#2063 renamed it to "foundationWalletAddr". Without this compatibility layer, old on-disk chain configs are decoded with a zero FoundationWalletAddr, causing XDPoSConfigEqual mismatch and startup rewind ("mismatching XDPoS not equal in database"). This patch: - Implements custom UnmarshalJSON for XDPoSConfig that reads both keys. - Prefers foundationWalletAddr when both keys are present. - Keeps existing behavior for all other fields. - Adds regression tests for legacy-key decoding and precedence. Validation: - go test ./params/...
|
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 adds backward-compatible JSON unmarshaling for XDPoSConfig to handle the legacy misspelled key "foudationWalletAddr" that existed in on-disk chain configurations prior to PR #2063 (which renamed it to "foundationWalletAddr"). Without this fix, nodes with old databases would decode FoundationWalletAddr as a zero address, causing an XDPoSConfigEqual mismatch and a forced chain rewind at startup.
Changes:
- Implements a custom
UnmarshalJSONmethod onXDPoSConfigthat reads both"foundationWalletAddr"and the legacy"foudationWalletAddr", preferring the correctly-spelled key when both are present. - Adds two regression tests: one for legacy-key-only decoding and one verifying that the correctly-spelled key takes precedence when both keys are present.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| params/config.go | Adds custom UnmarshalJSON for XDPoSConfig with legacy key fallback logic |
| params/config_test.go | Adds two test cases for legacy key decoding and key precedence |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Proposed changes
Add backward-compatible XDPoSConfig JSON decoding for the legacy key "foudationWalletAddr" introduced in PR #2063 renamed it to "foundationWalletAddr".
Without this compatibility layer, old on-disk chain configs are decoded with a zero FoundationWalletAddr, causing XDPoSConfigEqual mismatch and startup rewind ("mismatching XDPoS not equal in database").
This patch:
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