|
|
|
@ -407,23 +407,27 @@ bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex, const Consensus
@@ -407,23 +407,27 @@ bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex, const Consensus
|
|
|
|
|
|
|
|
|
|
/** Functions for validating blocks and updating the block tree */ |
|
|
|
|
|
|
|
|
|
/** Undo the effects of this block (with given index) on the UTXO set represented by coins.
|
|
|
|
|
* In case pfClean is provided, operation will try to be tolerant about errors, and *pfClean |
|
|
|
|
* will be true if no problems were found. Otherwise, the return value will be false in case |
|
|
|
|
* of problems. Note that in any case, coins may be modified. */ |
|
|
|
|
bool DisconnectBlock(const CBlock& block, CValidationState& state, const CBlockIndex* pindex, CCoinsViewCache& coins, bool* pfClean = NULL); |
|
|
|
|
|
|
|
|
|
/** Apply the effects of this block (with given index) on the UTXO set represented by coins */ |
|
|
|
|
bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pindex, CCoinsViewCache& coins, bool fJustCheck = false); |
|
|
|
|
|
|
|
|
|
/** Context-independent validity checks */ |
|
|
|
|
bool CheckBlockHeader(const CBlockHeader& block, CValidationState& state, bool fCheckPOW = true); |
|
|
|
|
bool CheckBlock(const CBlock& block, CValidationState& state, bool fCheckPOW = true, bool fCheckMerkleRoot = true); |
|
|
|
|
|
|
|
|
|
/** Context-dependent validity checks */ |
|
|
|
|
/** Context-dependent validity checks.
|
|
|
|
|
* By "context", we mean only the previous block headers, but not the UTXO |
|
|
|
|
* set; UTXO-related validity checks are done in ConnectBlock(). */ |
|
|
|
|
bool ContextualCheckBlockHeader(const CBlockHeader& block, CValidationState& state, CBlockIndex *pindexPrev); |
|
|
|
|
bool ContextualCheckBlock(const CBlock& block, CValidationState& state, CBlockIndex *pindexPrev); |
|
|
|
|
|
|
|
|
|
/** Apply the effects of this block (with given index) on the UTXO set represented by coins.
|
|
|
|
|
* Validity checks that depend on the UTXO set are also done; ConnectBlock() |
|
|
|
|
* can fail if those validity checks fail (among other reasons). */ |
|
|
|
|
bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pindex, CCoinsViewCache& coins, bool fJustCheck = false); |
|
|
|
|
|
|
|
|
|
/** Undo the effects of this block (with given index) on the UTXO set represented by coins.
|
|
|
|
|
* In case pfClean is provided, operation will try to be tolerant about errors, and *pfClean |
|
|
|
|
* will be true if no problems were found. Otherwise, the return value will be false in case |
|
|
|
|
* of problems. Note that in any case, coins may be modified. */ |
|
|
|
|
bool DisconnectBlock(const CBlock& block, CValidationState& state, const CBlockIndex* pindex, CCoinsViewCache& coins, bool* pfClean = NULL); |
|
|
|
|
|
|
|
|
|
/** Check a block is completely valid from start to finish (only works on top of our current best block, with cs_main held) */ |
|
|
|
|
bool TestBlockValidity(CValidationState& state, const CChainParams& chainparams, const CBlock& block, CBlockIndex* pindexPrev, bool fCheckPOW = true, bool fCheckMerkleRoot = true); |
|
|
|
|
|
|
|
|
|