Skip to content

Commit 3489b71

Browse files
author
MarcoFalke
committed
Merge #16464: [qa] Ensure we don't generate a too-big block in p2sh sigops test
bf3be52 [qa] Ensure we don't generate a too-big block in p2sh sigops test (Suhas Daftuar) Pull request description: There's a bug in the loop that is calculating the block size in the p2sh sigops test -- we start with the size of the block when it has no transactions, and then increment by the size of each transaction we add, without regard to the changing size of the encoding for the number of transactions in the block. This might be fine if the block construction were deterministic, but the first transaction in the block has an ECDSA signature which can be variable length, so we see intermittent failures of this test when the initial transaction has a 70-byte signature and the block ends up being one byte too big. Fix this by double-checking the block size after construction. ACKs for top commit: jonasschnelli: utACK bf3be52 jnewbery: tested ACK bf3be52 Tree-SHA512: f86385b96f7a6feafa4183727f5f2c9aae8ad70060b574aad13b150f174a17ce9a0040bc51ae7a04bd08f2a5298b983a84b0aed5e86a8440189ebc63b99e64dc
2 parents 94df084 + bf3be52 commit 3489b71

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

test/functional/feature_block.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,14 @@ def run_test(self):
486486
tx_last = tx_new
487487
b39_outputs += 1
488488

489+
# The accounting in the loop above can be off, because it misses the
490+
# compact size encoding of the number of transactions in the block.
491+
# Make sure we didn't accidentally make too big a block. Note that the
492+
# size of the block has non-determinism due to the ECDSA signature in
493+
# the first transaction.
494+
while (len(b39.serialize()) >= MAX_BLOCK_BASE_SIZE):
495+
del b39.vtx[-1]
496+
489497
b39 = self.update_block(39, [])
490498
self.send_blocks([b39], True)
491499
self.save_spendable_output()

0 commit comments

Comments
 (0)