mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-11 12:22:39 -03:00
doc: Various validation doc fixups
* Rename RewindBlockIndex -> NeedsRedownload (follow-up to commit
d831e711ca
)
* Fix typos
* Inline comments about faking chain data to avoid duplicating them
This commit is contained in:
parent
a83bbf02c7
commit
fa4245d884
3 changed files with 12 additions and 15 deletions
|
@ -182,7 +182,7 @@ public:
|
||||||
//!
|
//!
|
||||||
//! Note: this value is modified to show BLOCK_OPT_WITNESS during UTXO snapshot
|
//! Note: this value is modified to show BLOCK_OPT_WITNESS during UTXO snapshot
|
||||||
//! load to avoid the block index being spuriously rewound.
|
//! load to avoid the block index being spuriously rewound.
|
||||||
//! @sa RewindBlockIndex
|
//! @sa NeedsRedownload
|
||||||
//! @sa ActivateSnapshot
|
//! @sa ActivateSnapshot
|
||||||
uint32_t nStatus{0};
|
uint32_t nStatus{0};
|
||||||
|
|
||||||
|
|
|
@ -1401,8 +1401,9 @@ void CChainState::InvalidChainFound(CBlockIndex* pindexNew)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Same as InvalidChainFound, above, except not called directly from InvalidateBlock,
|
// Same as InvalidChainFound, above, except not called directly from InvalidateBlock,
|
||||||
// which does its own setBlockIndexCandidates manageent.
|
// which does its own setBlockIndexCandidates management.
|
||||||
void CChainState::InvalidBlockFound(CBlockIndex *pindex, const BlockValidationState &state) {
|
void CChainState::InvalidBlockFound(CBlockIndex* pindex, const BlockValidationState& state)
|
||||||
|
{
|
||||||
if (state.GetResult() != BlockValidationResult::BLOCK_MUTATED) {
|
if (state.GetResult() != BlockValidationResult::BLOCK_MUTATED) {
|
||||||
pindex->nStatus |= BLOCK_FAILED_VALID;
|
pindex->nStatus |= BLOCK_FAILED_VALID;
|
||||||
m_blockman.m_failed_blocks.insert(pindex);
|
m_blockman.m_failed_blocks.insert(pindex);
|
||||||
|
@ -1819,8 +1820,8 @@ bool CChainState::ConnectBlock(const CBlock& block, BlockValidationState& state,
|
||||||
// may have let in a block that violates the rule prior to updating the
|
// may have let in a block that violates the rule prior to updating the
|
||||||
// software, and we would NOT be enforcing the rule here. Fully solving
|
// software, and we would NOT be enforcing the rule here. Fully solving
|
||||||
// upgrade from one software version to the next after a consensus rule
|
// upgrade from one software version to the next after a consensus rule
|
||||||
// change is potentially tricky and issue-specific (see RewindBlockIndex()
|
// change is potentially tricky and issue-specific (see NeedsRedownload()
|
||||||
// for one general approach that was used for BIP 141 deployment).
|
// for one approach that was used for BIP 141 deployment).
|
||||||
// Also, currently the rule against blocks more than 2 hours in the future
|
// Also, currently the rule against blocks more than 2 hours in the future
|
||||||
// is enforced in ContextualCheckBlockHeader(); we wouldn't want to
|
// is enforced in ContextualCheckBlockHeader(); we wouldn't want to
|
||||||
// re-enforce that rule here (at least until we make it impossible for
|
// re-enforce that rule here (at least until we make it impossible for
|
||||||
|
@ -5079,24 +5080,20 @@ bool ChainstateManager::PopulateAndValidateSnapshot(
|
||||||
LOCK(::cs_main);
|
LOCK(::cs_main);
|
||||||
|
|
||||||
// Fake various pieces of CBlockIndex state:
|
// Fake various pieces of CBlockIndex state:
|
||||||
//
|
|
||||||
// - nChainTx: so that we accurately report IBD-to-tip progress
|
|
||||||
// - nTx: so that LoadBlockIndex() loads assumed-valid CBlockIndex entries
|
|
||||||
// (among other things)
|
|
||||||
// - nStatus & BLOCK_OPT_WITNESS: so that RewindBlockIndex() doesn't zealously
|
|
||||||
// unwind the assumed-valid chain.
|
|
||||||
//
|
|
||||||
CBlockIndex* index = nullptr;
|
CBlockIndex* index = nullptr;
|
||||||
for (int i = 0; i <= snapshot_chainstate.m_chain.Height(); ++i) {
|
for (int i = 0; i <= snapshot_chainstate.m_chain.Height(); ++i) {
|
||||||
index = snapshot_chainstate.m_chain[i];
|
index = snapshot_chainstate.m_chain[i];
|
||||||
|
|
||||||
|
// Fake nTx so that LoadBlockIndex() loads assumed-valid CBlockIndex
|
||||||
|
// entries (among other things)
|
||||||
if (!index->nTx) {
|
if (!index->nTx) {
|
||||||
index->nTx = 1;
|
index->nTx = 1;
|
||||||
}
|
}
|
||||||
|
// Fake nChainTx so that GuessVerificationProgress reports accurately
|
||||||
index->nChainTx = index->pprev ? index->pprev->nChainTx + index->nTx : 1;
|
index->nChainTx = index->pprev ? index->pprev->nChainTx + index->nTx : 1;
|
||||||
|
|
||||||
// We need to fake this flag so that CChainState::RewindBlockIndex()
|
// Fake BLOCK_OPT_WITNESS so that CChainState::NeedsRedownload()
|
||||||
// won't try to rewind the entire assumed-valid chain on startup.
|
// won't ask to rewind the entire assumed-valid chain on startup.
|
||||||
if (index->pprev && ::IsWitnessEnabled(index->pprev, ::Params().GetConsensus())) {
|
if (index->pprev && ::IsWitnessEnabled(index->pprev, ::Params().GetConsensus())) {
|
||||||
index->nStatus |= BLOCK_OPT_WITNESS;
|
index->nStatus |= BLOCK_OPT_WITNESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -555,7 +555,7 @@ enum class CoinsCacheSizeState
|
||||||
*
|
*
|
||||||
* Anything that is contingent on the current tip of the chain is stored here,
|
* Anything that is contingent on the current tip of the chain is stored here,
|
||||||
* whereas block information and metadata independent of the current tip is
|
* whereas block information and metadata independent of the current tip is
|
||||||
* kept in `BlockMetadataManager`.
|
* kept in `BlockManager`.
|
||||||
*/
|
*/
|
||||||
class CChainState
|
class CChainState
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue