@ -395,23 +395,27 @@ bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex, const Consensus
/** Functions for validating blocks and updating the block tree */
/** 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 */
/** Context-independent validity checks */
bool CheckBlockHeader ( const CBlockHeader & block , CValidationState & state , bool fCheckPOW = true ) ;
bool CheckBlockHeader ( const CBlockHeader & block , CValidationState & state , bool fCheckPOW = true ) ;
bool CheckBlock ( const CBlock & block , CValidationState & state , bool fCheckPOW = true , bool fCheckMerkleRoot = 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 ContextualCheckBlockHeader ( const CBlockHeader & block , CValidationState & state , CBlockIndex * pindexPrev ) ;
bool ContextualCheckBlock ( const CBlock & 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) */
/** 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 ) ;
bool TestBlockValidity ( CValidationState & state , const CChainParams & chainparams , const CBlock & block , CBlockIndex * pindexPrev , bool fCheckPOW = true , bool fCheckMerkleRoot = true ) ;