@@ -2057,8 +2057,8 @@ bool CChainState::ConnectBlock(const CBlock& block, BlockValidationState& state,
2057
2057
for (const auto & tx : block.vtx ) {
2058
2058
for (size_t o = 0 ; o < tx->vout .size (); o++) {
2059
2059
if (view.HaveCoin (COutPoint (tx->GetHash (), o))) {
2060
- return state. Invalid (BlockValidationResult::BLOCK_CONSENSUS, error ( " ConnectBlock(): tried to overwrite transaction" ),
2061
- " bad-txns-BIP30" );
2060
+ LogPrintf ( " ERROR: ConnectBlock(): tried to overwrite transaction\n " );
2061
+ return state. Invalid (BlockValidationResult::BLOCK_CONSENSUS, false , " bad-txns-BIP30" );
2062
2062
}
2063
2063
}
2064
2064
}
@@ -2105,8 +2105,8 @@ bool CChainState::ConnectBlock(const CBlock& block, BlockValidationState& state,
2105
2105
}
2106
2106
nFees += txfee;
2107
2107
if (!MoneyRange (nFees)) {
2108
- return state. Invalid (BlockValidationResult::BLOCK_CONSENSUS, error ( " %s: accumulated fee in the block out of range." , __func__),
2109
- " bad-txns-accumulated-fee-outofrange" );
2108
+ LogPrintf ( " ERROR: %s: accumulated fee in the block out of range.\n " , __func__);
2109
+ return state. Invalid (BlockValidationResult::BLOCK_CONSENSUS, false , " bad-txns-accumulated-fee-outofrange" );
2110
2110
}
2111
2111
2112
2112
// Check that transaction is BIP68 final
@@ -2118,8 +2118,8 @@ bool CChainState::ConnectBlock(const CBlock& block, BlockValidationState& state,
2118
2118
}
2119
2119
2120
2120
if (!SequenceLocks (tx, nLockTimeFlags, &prevheights, *pindex)) {
2121
- return state. Invalid (BlockValidationResult::BLOCK_CONSENSUS, error ( " %s: contains a non-BIP68-final transaction" , __func__),
2122
- " bad-txns-nonfinal" );
2121
+ LogPrintf ( " ERROR: %s: contains a non-BIP68-final transaction\n " , __func__);
2122
+ return state. Invalid (BlockValidationResult::BLOCK_CONSENSUS, false , " bad-txns-nonfinal" );
2123
2123
}
2124
2124
}
2125
2125
@@ -2128,9 +2128,10 @@ bool CChainState::ConnectBlock(const CBlock& block, BlockValidationState& state,
2128
2128
// * p2sh (when P2SH enabled in flags and excludes coinbase)
2129
2129
// * witness (when witness enabled in flags and excludes coinbase)
2130
2130
nSigOpsCost += GetTransactionSigOpCost (tx, view, flags);
2131
- if (nSigOpsCost > MAX_BLOCK_SIGOPS_COST)
2132
- return state.Invalid (BlockValidationResult::BLOCK_CONSENSUS, error (" ConnectBlock(): too many sigops" ),
2133
- " bad-blk-sigops" );
2131
+ if (nSigOpsCost > MAX_BLOCK_SIGOPS_COST) {
2132
+ LogPrintf (" ERROR: ConnectBlock(): too many sigops\n " );
2133
+ return state.Invalid (BlockValidationResult::BLOCK_CONSENSUS, false , " bad-blk-sigops" );
2134
+ }
2134
2135
2135
2136
txdata.emplace_back (tx);
2136
2137
if (!tx.IsCoinBase ())
@@ -2158,14 +2159,15 @@ bool CChainState::ConnectBlock(const CBlock& block, BlockValidationState& state,
2158
2159
LogPrint (BCLog::BENCH, " - Connect %u transactions: %.2fms (%.3fms/tx, %.3fms/txin) [%.2fs (%.2fms/blk)]\n " , (unsigned )block.vtx .size (), MILLI * (nTime3 - nTime2), MILLI * (nTime3 - nTime2) / block.vtx .size (), nInputs <= 1 ? 0 : MILLI * (nTime3 - nTime2) / (nInputs-1 ), nTimeConnect * MICRO, nTimeConnect * MILLI / nBlocksTotal);
2159
2160
2160
2161
CAmount blockReward = nFees + GetBlockSubsidy (pindex->nHeight , chainparams.GetConsensus ());
2161
- if (block.vtx [0 ]->GetValueOut () > blockReward)
2162
- return state.Invalid (BlockValidationResult::BLOCK_CONSENSUS,
2163
- error (" ConnectBlock(): coinbase pays too much (actual=%d vs limit=%d)" ,
2164
- block.vtx [0 ]->GetValueOut (), blockReward),
2165
- " bad-cb-amount" );
2166
-
2167
- if (!control.Wait ())
2168
- return state.Invalid (BlockValidationResult::BLOCK_CONSENSUS, error (" %s: CheckQueue failed" , __func__), " block-validation-failed" );
2162
+ if (block.vtx [0 ]->GetValueOut () > blockReward) {
2163
+ LogPrintf (" ERROR: ConnectBlock(): coinbase pays too much (actual=%d vs limit=%d)\n " , block.vtx [0 ]->GetValueOut (), blockReward);
2164
+ return state.Invalid (BlockValidationResult::BLOCK_CONSENSUS, false , " bad-cb-amount" );
2165
+ }
2166
+
2167
+ if (!control.Wait ()) {
2168
+ LogPrintf (" ERROR: %s: CheckQueue failed\n " , __func__);
2169
+ return state.Invalid (BlockValidationResult::BLOCK_CONSENSUS, false , " block-validation-failed" );
2170
+ }
2169
2171
int64_t nTime4 = GetTimeMicros (); nTimeVerify += nTime4 - nTime2;
2170
2172
LogPrint (BCLog::BENCH, " - Verify %u txins: %.2fms (%.3fms/txin) [%.2fs (%.2fms/blk)]\n " , nInputs - 1 , MILLI * (nTime4 - nTime2), nInputs <= 1 ? 0 : MILLI * (nTime4 - nTime2) / (nInputs-1 ), nTimeVerify * MICRO, nTimeVerify * MILLI / nBlocksTotal);
2171
2173
@@ -3417,8 +3419,10 @@ static bool ContextualCheckBlockHeader(const CBlockHeader& block, BlockValidatio
3417
3419
// GetLastCheckpoint finds the last checkpoint in MapCheckpoints that's in our
3418
3420
// g_blockman.m_block_index.
3419
3421
CBlockIndex* pcheckpoint = GetLastCheckpoint (params.Checkpoints ());
3420
- if (pcheckpoint && nHeight < pcheckpoint->nHeight )
3421
- return state.Invalid (BlockValidationResult::BLOCK_CHECKPOINT, error (" %s: forked chain older than last checkpoint (height %d)" , __func__, nHeight), " bad-fork-prior-to-checkpoint" );
3422
+ if (pcheckpoint && nHeight < pcheckpoint->nHeight ) {
3423
+ LogPrintf (" ERROR: %s: forked chain older than last checkpoint (height %d)\n " , __func__, nHeight);
3424
+ return state.Invalid (BlockValidationResult::BLOCK_CHECKPOINT, false , " bad-fork-prior-to-checkpoint" );
3425
+ }
3422
3426
}
3423
3427
3424
3428
// Check timestamp against prev
@@ -3541,8 +3545,10 @@ bool BlockManager::AcceptBlockHeader(const CBlockHeader& block, BlockValidationS
3541
3545
pindex = miSelf->second ;
3542
3546
if (ppindex)
3543
3547
*ppindex = pindex;
3544
- if (pindex->nStatus & BLOCK_FAILED_MASK)
3545
- return state.Invalid (BlockValidationResult::BLOCK_CACHED_INVALID, error (" %s: block %s is marked invalid" , __func__, hash.ToString ()), " duplicate" );
3548
+ if (pindex->nStatus & BLOCK_FAILED_MASK) {
3549
+ LogPrintf (" ERROR: %s: block %s is marked invalid\n " , __func__, hash.ToString ());
3550
+ return state.Invalid (BlockValidationResult::BLOCK_CACHED_INVALID, false , " duplicate" );
3551
+ }
3546
3552
return true ;
3547
3553
}
3548
3554
@@ -3552,11 +3558,15 @@ bool BlockManager::AcceptBlockHeader(const CBlockHeader& block, BlockValidationS
3552
3558
// Get prev block index
3553
3559
CBlockIndex* pindexPrev = nullptr ;
3554
3560
BlockMap::iterator mi = m_block_index.find (block.hashPrevBlock );
3555
- if (mi == m_block_index.end ())
3556
- return state.Invalid (BlockValidationResult::BLOCK_MISSING_PREV, error (" %s: prev block not found" , __func__), " prev-blk-not-found" );
3561
+ if (mi == m_block_index.end ()) {
3562
+ LogPrintf (" ERROR: %s: prev block not found\n " , __func__);
3563
+ return state.Invalid (BlockValidationResult::BLOCK_MISSING_PREV, false , " prev-blk-not-found" );
3564
+ }
3557
3565
pindexPrev = (*mi).second ;
3558
- if (pindexPrev->nStatus & BLOCK_FAILED_MASK)
3559
- return state.Invalid (BlockValidationResult::BLOCK_INVALID_PREV, error (" %s: prev block invalid" , __func__), " bad-prevblk" );
3566
+ if (pindexPrev->nStatus & BLOCK_FAILED_MASK) {
3567
+ LogPrintf (" ERROR: %s: prev block invalid\n " , __func__);
3568
+ return state.Invalid (BlockValidationResult::BLOCK_INVALID_PREV, false , " bad-prevblk" );
3569
+ }
3560
3570
if (!ContextualCheckBlockHeader (block, state, chainparams, pindexPrev, GetAdjustedTime ()))
3561
3571
return error (" %s: Consensus::ContextualCheckBlockHeader: %s, %s" , __func__, hash.ToString (), FormatStateMessage (state));
3562
3572
@@ -3593,7 +3603,8 @@ bool BlockManager::AcceptBlockHeader(const CBlockHeader& block, BlockValidationS
3593
3603
setDirtyBlockIndex.insert (invalid_walk);
3594
3604
invalid_walk = invalid_walk->pprev ;
3595
3605
}
3596
- return state.Invalid (BlockValidationResult::BLOCK_INVALID_PREV, error (" %s: prev block invalid" , __func__), " bad-prevblk" );
3606
+ LogPrintf (" ERROR: %s: prev block invalid\n " , __func__);
3607
+ return state.Invalid (BlockValidationResult::BLOCK_INVALID_PREV, false , " bad-prevblk" );
3597
3608
}
3598
3609
}
3599
3610
}
0 commit comments