MCPcopy Create free account
hub / github.com/BTCGPU/BTCGPU / CheckBlockHeader

Function CheckBlockHeader

src/validation.cpp:3276–3301  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3274}
3275
3276static bool CheckBlockHeader(const CBlockHeader& block, CValidationState& state, const Consensus::Params& consensusParams, bool fCheckPOW = true)
3277{
3278 // Check Equihash solution is valid
3279 bool postfork = block.nHeight >= (uint32_t)consensusParams.BTGHeight;
3280 if (fCheckPOW && postfork) {
3281 const CChainParams& chainparams = Params();
3282 const size_t sol_size = chainparams.EquihashSolutionWidth(block.nHeight);
3283 if(block.nSolution.size() != sol_size) {
3284 return state.DoS(
3285 100, error("CheckBlockHeader(): Equihash solution has invalid size have %d need %d",
3286 block.nSolution.size(), sol_size),
3287 REJECT_INVALID, "invalid-solution-size");
3288 }
3289 if (!CheckEquihashSolution(&block, Params())) {
3290 LogPrintf("CheckBlockHeader(): Equihash solution invalid at height %d\n", block.nHeight);
3291 return state.DoS(100, error("CheckBlockHeader(): Equihash solution invalid"),
3292 REJECT_INVALID, "invalid-solution");
3293 }
3294 }
3295
3296 // Check proof of work matches claimed amount
3297 if (fCheckPOW && !CheckProofOfWork(block.GetHash(), block.nBits, postfork, consensusParams))
3298 return state.DoS(50, false, REJECT_INVALID, "high-hash", false, "proof of work failed");
3299
3300 return true;
3301}
3302
3303bool CheckBlock(const CBlock& block, CValidationState& state, const Consensus::Params& consensusParams, bool fCheckPOW, bool fCheckMerkleRoot)
3304{

Callers 2

CheckBlockFunction · 0.85
AcceptBlockHeaderMethod · 0.85

Calls 8

errorFunction · 0.85
CheckEquihashSolutionFunction · 0.85
CheckProofOfWorkFunction · 0.85
EquihashSolutionWidthMethod · 0.80
DoSMethod · 0.80
ParamsClass · 0.70
sizeMethod · 0.45
GetHashMethod · 0.45

Tested by

no test coverage detected