fix(consensus): fix error invalid merkle root on pre-tip-signing replay#2274
fix(consensus): fix error invalid merkle root on pre-tip-signing replay#2274gzliudan wants to merge 1 commit intoXinFinOrg:v2.6.x-betafrom
invalid merkle root on pre-tip-signing replay#2274Conversation
|
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
Fixes a restart-sync checkpoint validation failure (invalid merkle root) by ensuring non-TIP signing transactions can be recovered during replay even when using raw receipts that may not include TxHash.
Changes:
- Update non-TIP signing-tx caching to match receipts by transaction index when
TxHashmetadata is missing. - Preserve failed-receipt filtering when reconstructing signing transactions from receipts.
- Add unit/regression tests covering receipt matching behavior with raw receipts lacking
TxHash.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| consensus/XDPoS/XDPoS.go | Adds index-based receipt lookup fallback (findTransactionReceipt) to avoid dropping signing txs when raw receipts omit TxHash. |
| consensus/XDPoS/XDPoS_test.go | Adds tests validating signing-tx caching behavior with raw receipts and failed receipts. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
3fc06f4 to
d41ad33
Compare
invalid merkle root after restart syncinvalid merkle root on pre-tip-signing replay
…play Symptom: nodes that resumed syncing from local state could fail checkpoint validation with an invalid merkle root while replaying pre-TIPSigning blocks after restart. Cause: the non-TIP signing transaction replay path rebuilt signer data from raw receipts, but raw receipts may not carry TxHash metadata. As a result, signing transactions could be dropped and checkpoint rewards recalculated with totalSigner=0. Fix: match non-TIP signing transactions to receipts by transaction index when receipt metadata is unavailable, keep the failed-receipt filter intact, and add regression tests covering raw-receipt replay.
d41ad33 to
38d524c
Compare
Proposed changes
Symptom: nodes that resumed syncing from local state could fail checkpoint validation with an invalid merkle root while replaying pre-TIPSigning blocks after restart.
Cause: the non-TIP signing transaction replay path rebuilt signer data from raw receipts, but raw receipts may not carry TxHash metadata. As a result, signing transactions could be dropped and checkpoint rewards recalculated with totalSigner=0.
Fix: match non-TIP signing transactions to receipts by transaction index when receipt metadata is unavailable, keep the failed-receipt filter intact, and add regression tests covering both raw-receipt matching and end-to-end checkpoint reward replay through GetRewardForCheckpoint.
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