82be652e40doc: Improve ChainstateManager documentation, use consistent terms (Ryan Ofsky)af455dcb39refactor: Simplify pruning functions (TheCharlatan)ae85c495f1refactor: Delete ChainstateManager::GetAll() method (Ryan Ofsky)6a572dbda9refactor: Add ChainstateManager::ActivateBestChains() method (Ryan Ofsky)491d827d52refactor: Add ChainstateManager::m_chainstates member (Ryan Ofsky)e514fe6116refactor: Delete ChainstateManager::SnapshotBlockhash() method (Ryan Ofsky)ee35250683refactor: Delete ChainstateManager::IsSnapshotValidated() method (Ryan Ofsky)d9e82299fcrefactor: Delete ChainstateManager::IsSnapshotActive() method (Ryan Ofsky)4dfe383912refactor: Convert ChainstateRole enum to struct (Ryan Ofsky)352ad27fc1refactor: Add ChainstateManager::ValidatedChainstate() method (Ryan Ofsky)a229cb9477refactor: Add ChainstateManager::CurrentChainstate() method (Ryan Ofsky)a9b7f5614crefactor: Add Chainstate::StoragePath() method (Ryan Ofsky)840bd2ef23refactor: Pass chainstate parameters to MaybeCompleteSnapshotValidation (Ryan Ofsky)1598a15aedrefactor: Deduplicate Chainstate activation code (Ryan Ofsky)9fe927b6d6refactor: Add Chainstate m_assumeutxo and m_target_utxohash members (Ryan Ofsky)6082c84713refactor: Add Chainstate::m_target_blockhash member (Ryan Ofsky)de00e87548test: Fix broken chainstatemanager_snapshot_init check (Ryan Ofsky) Pull request description: This PR contains the first part of #28608, which tries to make assumeutxo code more maintainable, and improve it by not locking `cs_main` for a long time when the snapshot block is connected, and by deleting the snapshot validation chainstate when it is no longer used, instead of waiting until the next restart. The changes in this PR are just refactoring. They make `Chainstate` objects self-contained, so for example, it is possible to determine what blocks to connect to a chainstate without querying `ChainstateManager`, and to determine whether a Chainstate is validated without basing it on inferences like `&cs != &ActiveChainstate()` or `GetAll().size() == 1`. The PR also tries to make assumeutxo terminology less confusing, using "current chainstate" to refer to the chainstate targeting the current network tip, and "historical chainstate" to refer to the chainstate downloading old blocks and validating the assumeutxo snapshot. It removes uses of the terms "active chainstate," "usable chainstate," "disabled chainstate," "ibd chainstate," and "snapshot chainstate" which are confusing for various reasons. ACKs for top commit: maflcko: re-review ACK82be652e40🕍 fjahr: re-ACK82be652e40sedited: Re-ACK82be652e40Tree-SHA512: 81c67abba9fc5bb170e32b7bf8a1e4f7b5592315b4ef720be916d5f1f5a7088c0c59cfb697744dd385552f58aa31ee36176bae6a6e465723e65861089a1252e5
src/node/
The src/node/ directory contains code that needs to access node state
(state in CChain, CBlockIndex, CCoinsView, CTxMemPool, and similar
classes).
Code in src/node/ is meant to be segregated from code in
src/wallet/ and src/qt/, to ensure wallet and GUI
code changes don't interfere with node operation, to allow wallet and GUI code
to run in separate processes, and to perhaps eventually allow wallet and GUI
code to be maintained in separate source repositories.
As a rule of thumb, code in one of the src/node/,
src/wallet/, or src/qt/ directories should avoid
calling code in the other directories directly, and only invoke it indirectly
through the more limited src/interfaces/ classes.
This directory is at the moment
sparsely populated. Eventually more substantial files like
src/validation.cpp and
src/txmempool.cpp might be moved there.