|
|
|
@ -33,6 +33,7 @@
|
|
|
|
|
#include <script/script.h>
|
|
|
|
|
#include <script/sigcache.h>
|
|
|
|
|
#include <shutdown.h>
|
|
|
|
|
#include <signet.h>
|
|
|
|
|
#include <timedata.h>
|
|
|
|
|
#include <tinyformat.h>
|
|
|
|
|
#include <txdb.h>
|
|
|
|
@ -1163,6 +1164,11 @@ bool ReadBlockFromDisk(CBlock& block, const FlatFilePos& pos, const Consensus::P
|
|
|
|
|
if (!CheckProofOfWork(block.GetHash(), block.nBits, consensusParams))
|
|
|
|
|
return error("ReadBlockFromDisk: Errors in block header at %s", pos.ToString());
|
|
|
|
|
|
|
|
|
|
// Signet only: check block solution
|
|
|
|
|
if (consensusParams.signet_blocks && !CheckSignetBlockSolution(block, consensusParams)) {
|
|
|
|
|
return error("ReadBlockFromDisk: Errors in block solution at %s", pos.ToString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -3332,6 +3338,11 @@ bool CheckBlock(const CBlock& block, BlockValidationState& state, const Consensu
|
|
|
|
|
if (!CheckBlockHeader(block, state, consensusParams, fCheckPOW))
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
// Signet only: check block solution
|
|
|
|
|
if (consensusParams.signet_blocks && fCheckPOW && !CheckSignetBlockSolution(block, consensusParams)) {
|
|
|
|
|
return state.Invalid(BlockValidationResult::BLOCK_CONSENSUS, "bad-signet-blksig", "signet block signature validation failure");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Check the merkle root.
|
|
|
|
|
if (fCheckMerkleRoot) {
|
|
|
|
|
bool mutated;
|
|
|
|
|