mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-09-11 21:20:39 +02:00
Merge bitcoin/bitcoin#36044: test: cover OP_SUCCESSx bypassing the initial stack element size limit
558e26e66etest: cover OP_SUCCESSx bypassing the initial stack element size limit (ViniciusCestarii) Pull request description: BIP-342 specifies that the initial stack resource checks happen after OP_SUCCESSx processing, and explicitly notes the checks "can be bypassed using OP_SUCCESSx". Core implements this correctly, but there are currently no tests covering this behavior. This means a consensus-breaking change to the ordering could pass the test suite undetected. Verified this on local commit68d24d7430, which mutates to incorrectly implement the order and CI still turns green. Add a new test at feature_taproot.py to cover OP_SUCCESSx bypassing the initial stack element size limit. Verified that the new test catches the mutant:f8f42a13a8. ACKs for top commit: instagibbs: ACK558e26e66eTree-SHA512: 66d7bbbf286bf7e5c5762704e8c0f835c6a8026d7d604263e9debcd7e71df80506c0238b8a15cda3d4ba245d9c2bc46e79a1986d66583e571e208c8dfbe66156
This commit is contained in:
@@ -1206,6 +1206,7 @@ def spenders_taproot_active():
|
||||
add_spender(spenders, "opsuccess/bigpush", standard=False, tap=tap, leaf="bigpush_success", failure={"leaf": "bigpush_nop"}, **ERR_PUSH_SIZE)
|
||||
add_spender(spenders, "opsuccess/1001push", standard=False, tap=tap, leaf="1001push_success", failure={"leaf": "1001push_nop"}, **ERR_STACK_SIZE)
|
||||
add_spender(spenders, "opsuccess/1001inputs", standard=False, tap=tap, leaf="bare_success", inputs=[b'']*1001, failure={"leaf": "bare_nop"}, **ERR_STACK_SIZE)
|
||||
add_spender(spenders, "opsuccess/bigstackelem", standard=False, tap=tap, leaf="bare_success", inputs=[random.randbytes(MAX_SCRIPT_ELEMENT_SIZE+1)], failure={"leaf": "bare_nop"}, **ERR_PUSH_SIZE)
|
||||
|
||||
# Non-OP_SUCCESSx (verify that those aren't accidentally treated as OP_SUCCESSx)
|
||||
for opval in range(0, 0x100):
|
||||
|
||||
Reference in New Issue
Block a user