|
|
|
@ -362,6 +362,14 @@ bool CTransaction::IsStandard() const
@@ -362,6 +362,14 @@ bool CTransaction::IsStandard() const
|
|
|
|
|
if (!IsFinal()) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
// Extremely large transactions with lots of inputs can cost the network
|
|
|
|
|
// almost as much to process as they cost the sender in fees, because
|
|
|
|
|
// computing signature hashes is O(ninputs*txsize). Limiting transactions
|
|
|
|
|
// to MAX_STANDARD_TX_SIZE mitigates CPU exhaustion attacks.
|
|
|
|
|
unsigned int sz = this->GetSerializeSize(SER_NETWORK, CTransaction::CURRENT_VERSION); |
|
|
|
|
if (sz >= MAX_STANDARD_TX_SIZE) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
BOOST_FOREACH(const CTxIn& txin, vin) |
|
|
|
|
{ |
|
|
|
|
// Biggest 'standard' txin is a 3-signature 3-of-3 CHECKMULTISIG
|
|
|
|
|