|
|
|
@ -1174,7 +1174,7 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState& state, const C
|
|
|
|
|
// nSequence >= maxint-1 on all inputs.
|
|
|
|
|
//
|
|
|
|
|
// 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
|
|
|
|
|
// 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,
|
|
|
|
|
// 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
|
|
|
|
|
// this optimisation would allow an invalid chain to be accepted.
|
|
|
|
|
// this optimization would allow an invalid chain to be accepted.
|
|
|
|
|
if (fScriptChecks) {
|
|
|
|
|
for (unsigned int i = 0; i < tx.vin.size(); i++) {
|
|
|
|
|
const COutPoint &prevout = tx.vin[i].prevout;
|
|
|
|
@ -4795,7 +4795,7 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
|
|
|
|
|
{
|
|
|
|
|
// If a peer is asking for old blocks, we're almost guaranteed
|
|
|
|
|
// 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.
|
|
|
|
|
if (mi->second->nHeight >= chainActive.Height() - 10) {
|
|
|
|
|
CBlockHeaderAndShortTxIDs cmpctblock(block);
|
|
|
|
|