mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-18 22:35:39 +01:00
Reapply: Reject transactions with excessive numbers of sigops
Reverting was based on a misunderstanding, it appears. Github-Pull: #4150
This commit is contained in:
committed by
Wladimir J. van der Laan
parent
ce094d83ce
commit
9ee09dc64f
15
src/main.cpp
15
src/main.cpp
@@ -956,9 +956,18 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa
|
||||
if (Params().RequireStandard() && !AreInputsStandard(tx, view))
|
||||
return error("AcceptToMemoryPool: : nonstandard transaction input");
|
||||
|
||||
// Note: if you modify this code to accept non-standard transactions, then
|
||||
// you should add code here to check that the transaction does a
|
||||
// reasonable number of ECDSA signature verifications.
|
||||
// Check that the transaction doesn't have an excessive number of
|
||||
// sigops, making it impossible to mine. Since the coinbase transaction
|
||||
// itself can contain sigops MAX_TX_SIGOPS is less than
|
||||
// MAX_BLOCK_SIGOPS; we still consider this an invalid rather than
|
||||
// merely non-standard transaction.
|
||||
unsigned int nSigOps = GetLegacySigOpCount(tx);
|
||||
nSigOps += GetP2SHSigOpCount(tx, view);
|
||||
if (nSigOps > MAX_TX_SIGOPS)
|
||||
return state.DoS(0,
|
||||
error("AcceptToMemoryPool : too many sigops %s, %d > %d",
|
||||
hash.ToString(), nSigOps, MAX_TX_SIGOPS),
|
||||
REJECT_NONSTANDARD, "bad-txns-too-many-sigops");
|
||||
|
||||
int64_t nValueOut = tx.GetValueOut();
|
||||
int64_t nFees = nValueIn-nValueOut;
|
||||
|
||||
Reference in New Issue
Block a user