forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
backport: assumeutxo M3 — background validation completion and snapshot promotion #7553
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
PastaPastaPasta
merged 14 commits into
dashpay:develop
from
PastaPastaPasta:assumeutxo/m3-background-completion
Aug 12, 2026
Merged
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
483b3d7
Merge bitcoin/bitcoin#25740: assumeutxo: background validation comple…
PastaPastaPasta 9cfc65a
backport: adapt Dash EvoDB completion path for bitcoin#25740
PastaPastaPasta 3da9105
Merge bitcoin/bitcoin#27862: validation: Stricter assumeutxo error ha…
PastaPastaPasta d1ffdd6
Merge bitcoin/bitcoin#28050: test: make assumeUTXO test capture the e…
PastaPastaPasta 43efc47
Merge bitcoin/bitcoin#27746: Rework validation logic for assumeutxo
ryanofsky 2ef1222
backport: adapt bitcoin#27746 for Dash
PastaPastaPasta 44bd797
refactor: share the block-data-unavailable sentinel as a named constant
PastaPastaPasta ab3b671
validation: move the mempool to the snapshot chainstate on activation
PastaPastaPasta cedba66
docs: note the cross-chainstate duplicate-commitment corner
PastaPastaPasta 4b1294c
test: assert cold snapshot activation captures no base MN-list marker
PastaPastaPasta 413afb1
fix: report a missing snapshot base block as a startup error, not an …
PastaPastaPasta d16440b
refactor: centralize durable rename/remove for the snapshot lifecycle
PastaPastaPasta a8b6790
docs: fix stale check_block_index reference and explain deferred cand…
PastaPastaPasta c28ddc8
test: cover background MN-hash erase and the promote/discard recovery…
PastaPastaPasta File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🟡 Suggestion: Document that the base MN-list comparison is skipped after cold-start activation
This paragraph states that completion always compares the background-derived deterministic-masternode-list hash against a hash recorded at snapshot activation. That's not what the code does:
PopulateAndValidateSnapshot()only captures/writesEVODB_SNAPSHOT_MNLIST_HASHwhen the background/IBD chainstate's tip is already at the base block (src/validation.cpp:5904-5913) — on the primary cold-start bootstrap path (fresh node loading a snapshot before any background sync), no marker is written.MaybeCompleteSnapshotValidation()correctly treats the absent marker as 'nothing to compare' and falls back to the UTXO-set-hash criterion alone (src/validation.cpp:6114-6122), logging a skip message. The design doc should describe this conditional behavior so readers don't assume the deterministic-MN-list check is always enforced.source: ['codex']