|
|
@ -810,9 +810,9 @@ bool CTxMemPool::accept(CValidationState &state, CTransaction &tx, bool fLimitFr |
|
|
|
if ((int64)tx.nLockTime > std::numeric_limits<int>::max()) |
|
|
|
if ((int64)tx.nLockTime > std::numeric_limits<int>::max()) |
|
|
|
return error("CTxMemPool::accept() : not accepting nLockTime beyond 2038 yet"); |
|
|
|
return error("CTxMemPool::accept() : not accepting nLockTime beyond 2038 yet"); |
|
|
|
|
|
|
|
|
|
|
|
// Rather not work on nonstandard transactions (unless -testnet)
|
|
|
|
// Rather not work on nonstandard transactions (unless -testnet/-regtest)
|
|
|
|
string reason; |
|
|
|
string reason; |
|
|
|
if (!TestNet() && !IsStandardTx(tx, reason)) |
|
|
|
if (Params().NetworkID() == CChainParams::MAIN && !IsStandardTx(tx, reason)) |
|
|
|
return error("CTxMemPool::accept() : nonstandard transaction: %s", |
|
|
|
return error("CTxMemPool::accept() : nonstandard transaction: %s", |
|
|
|
reason.c_str()); |
|
|
|
reason.c_str()); |
|
|
|
|
|
|
|
|
|
|
@ -888,7 +888,7 @@ bool CTxMemPool::accept(CValidationState &state, CTransaction &tx, bool fLimitFr |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Check for non-standard pay-to-script-hash in inputs
|
|
|
|
// Check for non-standard pay-to-script-hash in inputs
|
|
|
|
if (!TestNet() && !AreInputsStandard(tx, view)) |
|
|
|
if (Params().NetworkID() == CChainParams::MAIN && !AreInputsStandard(tx, view)) |
|
|
|
return error("CTxMemPool::accept() : nonstandard transaction input"); |
|
|
|
return error("CTxMemPool::accept() : nonstandard transaction input"); |
|
|
|
|
|
|
|
|
|
|
|
// Note: if you modify this code to accept non-standard transactions, then
|
|
|
|
// Note: if you modify this code to accept non-standard transactions, then
|
|
|
@ -1938,7 +1938,7 @@ bool SetBestChain(CValidationState &state, CBlockIndex* pindexNew) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Disconnect shorter branch
|
|
|
|
// Disconnect shorter branch
|
|
|
|
vector<CTransaction> vResurrect; |
|
|
|
list<CTransaction> vResurrect; |
|
|
|
BOOST_FOREACH(CBlockIndex* pindex, vDisconnect) { |
|
|
|
BOOST_FOREACH(CBlockIndex* pindex, vDisconnect) { |
|
|
|
CBlock block; |
|
|
|
CBlock block; |
|
|
|
if (!ReadBlockFromDisk(block, pindex)) |
|
|
|
if (!ReadBlockFromDisk(block, pindex)) |
|
|
@ -1952,9 +1952,9 @@ bool SetBestChain(CValidationState &state, CBlockIndex* pindexNew) |
|
|
|
// Queue memory transactions to resurrect.
|
|
|
|
// Queue memory transactions to resurrect.
|
|
|
|
// We only do this for blocks after the last checkpoint (reorganisation before that
|
|
|
|
// We only do this for blocks after the last checkpoint (reorganisation before that
|
|
|
|
// point should only happen with -reindex/-loadblock, or a misbehaving peer.
|
|
|
|
// point should only happen with -reindex/-loadblock, or a misbehaving peer.
|
|
|
|
BOOST_FOREACH(const CTransaction& tx, block.vtx) |
|
|
|
BOOST_REVERSE_FOREACH(const CTransaction& tx, block.vtx) |
|
|
|
if (!tx.IsCoinBase() && pindex->nHeight > Checkpoints::GetTotalBlocksEstimate()) |
|
|
|
if (!tx.IsCoinBase() && pindex->nHeight > Checkpoints::GetTotalBlocksEstimate()) |
|
|
|
vResurrect.push_back(tx); |
|
|
|
vResurrect.push_front(tx); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Connect longer branch
|
|
|
|
// Connect longer branch
|
|
|
|