return DoS(10, error("CTransaction::CheckTransaction() : vin empty"));
if (vout.empty())
return DoS(10, error("CTransaction::CheckTransaction() : vout empty"));
- // Time (prevent mempool memory exhaustion attack)
- // Comes into force since 20 December 2015.
- if (nTime > 1450569600 && nTime > FutureDrift(GetAdjustedTime()))
- return DoS(10, error("CTransaction::CheckTransaction() : timestamp is too far into the future"));
// Size limits
if (::GetSerializeSize(*this, SER_NETWORK, PROTOCOL_VERSION) > MAX_BLOCK_SIZE)
return DoS(100, error("CTransaction::CheckTransaction() : size limits failed"));
if (pfMissingInputs)
*pfMissingInputs = false;
+ // Time (prevent mempool memory exhaustion attack)
+ if (tx.nTime > FutureDrift(GetAdjustedTime()))
+ return tx.DoS(10, error("CTxMemPool::accept() : transaction timestamp is too far in the future"));
+
if (!tx.CheckTransaction())
return error("CTxMemPool::accept() : CheckTransaction failed");
if (tx.nTime >= CHECKLOCKTIMEVERIFY_SWITCH_TIME) {
nFlags |= SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY;
- nFlags |= SCRIPT_VERIFY_CHECKSEQUENCEVERIFY;
+ // OP_CHECKSEQUENCEVERIFY is senseless without BIP68, so we're going disable it for now.
+ // nFlags |= SCRIPT_VERIFY_CHECKSEQUENCEVERIFY;
}
std::vector<CScriptCheck> vChecks;
int64_t nMedianTimePast = pindexPrev->GetMedianTimePast();
int nMaxOffset = 12 * 3600; // 12 hours
- if (pindexPrev->nTime < 1450569600)
- nMaxOffset = 7 * 86400; // One week until 20 Dec, 2015
+ if (fTestNet || pindexPrev->nTime < 1450569600)
+ nMaxOffset = 7 * 86400; // One week (permanently on testNet or until 20 Dec, 2015 on mainNet)
// Check timestamp against prev
if (GetBlockTime() <= nMedianTimePast || FutureDrift(GetBlockTime()) < pindexPrev->GetBlockTime())