mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-19 14:53:43 +01:00
7bc64a8859test: properly check for per-tx sigops limit (Sebastian Falbesoner) Pull request description: Currently the per-tx sigops limit standardness check (bounded by `MAX_STANDARD_TX_SIGOPS_COST`, throwing "bad-txns-too-many-sigops" if exceeded):3f83c744ac/src/validation.cpp (L925-L927)is only indirectly tested with the much higher per-block consensus limit (`MAX_BLOCK_SIGOPS_COST`):3f83c744ac/test/functional/data/invalid_txs.py (L236-L242)I.e. an increase in the per-tx limit up to the per-block one would still pass all of our tests. Refine that by splitting up the invalid tx template `TooManySigops` in a per-block and a per-tx template. The involved functional tests taking use of these templates are `feature_block.py` and `p2p_invalid_txs.py`. Can be tested by applying e.g. ```diff diff --git a/src/policy/policy.h b/src/policy/policy.h index 2151ec13dd..e5766d2a55 100644 --- a/src/policy/policy.h +++ b/src/policy/policy.h @@ -37,7 +37,7 @@ static constexpr unsigned int MIN_STANDARD_TX_NONWITNESS_SIZE{65}; /** Maximum number of signature check operations in an IsStandard() P2SH script */ static constexpr unsigned int MAX_P2SH_SIGOPS{15}; /** The maximum number of sigops we're willing to relay/mine in a single tx */ -static constexpr unsigned int MAX_STANDARD_TX_SIGOPS_COST{MAX_BLOCK_SIGOPS_COST/5}; +static constexpr unsigned int MAX_STANDARD_TX_SIGOPS_COST{MAX_BLOCK_SIGOPS_COST/5 + 4}; /** Default for -incrementalrelayfee, which sets the minimum feerate increase for mempool limiting or replacement **/ static constexpr unsigned int DEFAULT_INCREMENTAL_RELAY_FEE{1000}; /** Default for -bytespersigop */ diff --git a/test/functional/mempool_accept.py b/test/functional/mempool_accept.py ``` where the tests succeed on master, but fail on this PR. (Found by diving deeper into the jungle of current sig-ops limit, as preparation for reviewing the [BIP 54](https://github.com/bitcoin/bips/blob/master/bip-0054.md) draft and related preparatory PRs like #32521). ACKs for top commit: fjahr: tACK7bc64a8859tapcrafter: tACK7bc64a8859darosior: ACK7bc64a8859instagibbs: crACK7bc64a8859Tree-SHA512: 1365409349664a76a1d46b2fa358c0d0609fb17fffdd549423d22b61749481282c928be3c2fb428725735c82d319b4279f703bde01e94e4aec14bab206abb8cf