backport: assumeutxo M2 — EvoDB isolation and chainstate roles (bitcoin#25494, partial #27596)#7457
Closed
thepastaclaw wants to merge 10 commits into
Closed
backport: assumeutxo M2 — EvoDB isolation and chainstate roles (bitcoin#25494, partial #27596)#7457thepastaclaw wants to merge 10 commits into
thepastaclaw wants to merge 10 commits into
Conversation
This backports the first commit of bitcoin#25494, which introduces kernel/chain.{h,cpp}, interfaces::BlockInfo, and kernel::MakeBlockInfo. The remaining index refactoring commits are intentionally excluded. Upstream commit: a0b5b4a
This is an early partial pick of bitcoin#27596; the remainder will be backported later. Upstream commit: c6af23c
Author
CI diagnosisThese failures are unrelated to this PR's EvoDB/chainstate-role changes, so the branch is proper as-is and has not been modified:
Filed #7458 with the baseline reproduction and CI evidence. No commit, push, rebase, empty retrigger commit, or CI rerun was made for these unrelated failures. |
thepastaclaw
force-pushed
the
assumeutxo/m2-evodb-roles
branch
from
July 14, 2026 00:52
a616e17 to
a181f51
Compare
Pass the validating chainstate through special transaction and quorum commitment processing instead of borrowing the active chainstate. Interpret mined-commitment records and quorum resolution relative to the caller's chain. The cached values remain reusable, but chain membership is reevaluated across reorgs and chainstates while public non-validation callers retain active-chain semantics. This prevents snapshot-seeded records from suppressing commitments or satisfying MNHF and asset-unlock quorum lookups during background validation. Add dual-chainstate coverage for a commitment seeded at a block not yet contained by the background chain, including HasQuorum and GetQuorum cache-order checks.
Emit block, tip, deterministic masternode-list, UI, and flush notifications only for the active chainstate. In particular, suppressing background ChainStateFlushed prevents a background locator from regressing wallet best-block state. Keep BlockChecked ungated because its subscribers are mining/block-submit and peer validation/relay accounting; it does not reach CMNAuth. Document all 21 B3 call-site dispositions and extend the dual-chainstate test with validation-interface and UI counters.
Check local block-data availability before building masternode-list diffs and quorum rotation info. Treat failures caused by pruning or an unvalidated snapshot base like pruned getdata: log and silently drop the plausible request without increasing the peer's misbehavior score. Malformed and implausible requests retain the pre-existing penalties.
Disable DKG participation and quorum signing until snapshot background validation completes. Enforce the refusal at CreateSigShare, the actual share-production boundary, so direct RPC, async, and queued signing paths cannot bypass it. The quorum sign RPC now returns a clear JSON-RPC error for both submit modes, and masternode status exposes the disabled participation state. Add unit coverage for the shared production-gate predicate across snapshot activation.
thepastaclaw
force-pushed
the
assumeutxo/m2-evodb-roles
branch
from
July 14, 2026 02:50
a181f51 to
47dac03
Compare
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Issue being fixed or feature implemented
This is milestone 2 of 7 in the stacked assumeutxo backport series, building on the snapshot-initialization groundwork merged in #7451. It introduces the chainstate roles and Dash-specific state separation needed for active snapshot and background validation chainstates to coexist safely.
What was done?
bitcoin#25494by addinginterfaces::BlockInfo,kernel::MakeBlockInfo, and the associated block-notification plumbing. The remaining index refactoring commits are intentionally excluded.bitcoin#27596by addingChainstateRole. The remainder of that upstream assumeutxo PR stays in later milestones.-reindexand-reindex-chainstate, restoring the normal chainstate before block import while continuing to require the snapshot EvoDB marker on normal startup.BlockCheckedbehavior.The temporary M1 manager-rebuild workaround is not present. M2's structural
ChainstateManagerownership makes that workaround, its test-only accessor, and its M1-specific regression test unnecessary.How Has This Been Tested?
make -C src test/test_dash.validation_chainstatemanager_tests,evo_db_tests,llmq_commitment_tests,llmq_snapshot_tests,evo_cbtx_tests, andminer_tests.git diff --checkvalidation.Breaking Changes
None. This remains unreleased assumeutxo groundwork; snapshot loading is introduced by a later milestone.
Checklist: