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

Function FinalizeBlockInternal

src/validation.cpp:2471–2501  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2469};
2470
2471static bool FinalizeBlockInternal(CValidationState &state, const CBlockIndex *pindex)
2472// EXCLUSIVE_LOCKS_REQUIRED(cs_main)
2473{
2474 AssertLockHeld(cs_main);
2475 if (pindex->nStatus & BLOCK_FAILED_MASK) {
2476 // We try to finalize an invalid block.
2477 return state.Invalid(error("%s: Trying to finalize invalid block %s",
2478 __func__, pindex->GetBlockHash().ToString()),
2479 REJECT_INVALID, "finalize-invalid-block",
2480 "", ValidationInvalidReason::CACHED_INVALID);
2481 }
2482
2483 // Check that the request is consistent with current finalization.
2484 if (pindexFinalized && !AreOnTheSameFork(pindex, pindexFinalized)) {
2485 return state.Invalid(
2486 error("%s: Trying to finalize block %s which conflicts "
2487 "with already finalized block",
2488 __func__, pindex->GetBlockHash().ToString()),
2489 REJECT_AGAINST_FINALIZED, "bad-fork-prior-finalized",
2490 "", ValidationInvalidReason::BLOCK_FINALIZATION);
2491 }
2492
2493 if (IsBlockFinalized(pindex)) {
2494 // The block is already finalized.
2495 return true;
2496 }
2497
2498 // We have a new block to finalize.
2499 pindexFinalized = pindex;
2500 return true;
2501}
2502
2503static const CBlockIndex *FindBlockToFinalize(CBlockIndex *pindexNew)
2504// EXCLUSIVE_LOCKS_REQUIRED(cs_main)

Callers 2

ConnectTipMethod · 0.85

Calls 6

errorFunction · 0.85
AreOnTheSameForkFunction · 0.85
IsBlockFinalizedFunction · 0.85
InvalidMethod · 0.80
ToStringMethod · 0.45
GetBlockHashMethod · 0.45

Tested by

no test coverage detected