|
|
@ -1174,7 +1174,7 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState& state, const C |
|
|
|
// nSequence >= maxint-1 on all inputs.
|
|
|
|
// nSequence >= maxint-1 on all inputs.
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// maxint-1 is picked to still allow use of nLockTime by
|
|
|
|
// maxint-1 is picked to still allow use of nLockTime by
|
|
|
|
// non-replacable transactions. All inputs rather than just one
|
|
|
|
// non-replaceable transactions. All inputs rather than just one
|
|
|
|
// is for the sake of multi-party protocols, where we don't
|
|
|
|
// is for the sake of multi-party protocols, where we don't
|
|
|
|
// want a single party to be able to disable replacement.
|
|
|
|
// want a single party to be able to disable replacement.
|
|
|
|
//
|
|
|
|
//
|
|
|
@ -1988,7 +1988,7 @@ bool CheckInputs(const CTransaction& tx, CValidationState &state, const CCoinsVi |
|
|
|
// is safe because block merkle hashes are still computed and checked,
|
|
|
|
// is safe because block merkle hashes are still computed and checked,
|
|
|
|
// and any change will be caught at the next checkpoint. Of course, if
|
|
|
|
// and any change will be caught at the next checkpoint. Of course, if
|
|
|
|
// the checkpoint is for a chain that's invalid due to false scriptSigs
|
|
|
|
// the checkpoint is for a chain that's invalid due to false scriptSigs
|
|
|
|
// this optimisation would allow an invalid chain to be accepted.
|
|
|
|
// this optimization would allow an invalid chain to be accepted.
|
|
|
|
if (fScriptChecks) { |
|
|
|
if (fScriptChecks) { |
|
|
|
for (unsigned int i = 0; i < tx.vin.size(); i++) { |
|
|
|
for (unsigned int i = 0; i < tx.vin.size(); i++) { |
|
|
|
const COutPoint &prevout = tx.vin[i].prevout; |
|
|
|
const COutPoint &prevout = tx.vin[i].prevout; |
|
|
@ -4801,7 +4801,7 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam |
|
|
|
{ |
|
|
|
{ |
|
|
|
// If a peer is asking for old blocks, we're almost guaranteed
|
|
|
|
// If a peer is asking for old blocks, we're almost guaranteed
|
|
|
|
// they wont have a useful mempool to match against a compact block,
|
|
|
|
// they wont have a useful mempool to match against a compact block,
|
|
|
|
// and we dont feel like constructing the object for them, so
|
|
|
|
// and we don't feel like constructing the object for them, so
|
|
|
|
// instead we respond with the full, non-compact block.
|
|
|
|
// instead we respond with the full, non-compact block.
|
|
|
|
if (mi->second->nHeight >= chainActive.Height() - 10) { |
|
|
|
if (mi->second->nHeight >= chainActive.Height() - 10) { |
|
|
|
CBlockHeaderAndShortTxIDs cmpctblock(block); |
|
|
|
CBlockHeaderAndShortTxIDs cmpctblock(block); |
|
|
|