mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-05 02:05:10 +01:00
Make post-p2sh consensus rules mandatory for tx relay
This commit is contained in:
@@ -512,10 +512,10 @@ class SegWitTest(BitcoinTestFramework):
|
||||
# without a witness is invalid).
|
||||
# Note: The reject reason for this failure could be
|
||||
# 'block-validation-failed' (if script check threads > 1) or
|
||||
# 'non-mandatory-script-verify-flag (Witness program was passed an
|
||||
# 'mandatory-script-verify-flag-failed (Witness program was passed an
|
||||
# empty witness)' (otherwise).
|
||||
test_witness_block(self.nodes[0], self.test_node, block, accepted=False, with_witness=False,
|
||||
reason='non-mandatory-script-verify-flag (Witness program was passed an empty witness)')
|
||||
reason='mandatory-script-verify-flag-failed (Witness program was passed an empty witness)')
|
||||
|
||||
self.utxo.pop(0)
|
||||
self.utxo.append(UTXO(txid, 2, value))
|
||||
@@ -708,7 +708,7 @@ class SegWitTest(BitcoinTestFramework):
|
||||
# segwit activation. Note that older bitcoind's that are not
|
||||
# segwit-aware would also reject this for failing CLEANSTACK.
|
||||
with self.nodes[0].assert_debug_log(
|
||||
expected_msgs=(spend_tx.hash, 'was not accepted: non-mandatory-script-verify-flag (Witness program was passed an empty witness)')):
|
||||
expected_msgs=(spend_tx.hash, 'was not accepted: mandatory-script-verify-flag-failed (Witness program was passed an empty witness)')):
|
||||
test_transaction_acceptance(self.nodes[0], self.test_node, spend_tx, with_witness=False, accepted=False)
|
||||
|
||||
# Try to put the witness script in the scriptSig, should also fail.
|
||||
@@ -999,7 +999,7 @@ class SegWitTest(BitcoinTestFramework):
|
||||
|
||||
# Extra witness data should not be allowed.
|
||||
test_witness_block(self.nodes[0], self.test_node, block, accepted=False,
|
||||
reason='non-mandatory-script-verify-flag (Witness provided for non-witness script)')
|
||||
reason='mandatory-script-verify-flag-failed (Witness provided for non-witness script)')
|
||||
|
||||
# Try extra signature data. Ok if we're not spending a witness output.
|
||||
block.vtx[1].wit.vtxinwit = []
|
||||
@@ -1025,7 +1025,7 @@ class SegWitTest(BitcoinTestFramework):
|
||||
|
||||
# This has extra witness data, so it should fail.
|
||||
test_witness_block(self.nodes[0], self.test_node, block, accepted=False,
|
||||
reason='non-mandatory-script-verify-flag (Stack size must be exactly one after execution)')
|
||||
reason='mandatory-script-verify-flag-failed (Stack size must be exactly one after execution)')
|
||||
|
||||
# Now get rid of the extra witness, but add extra scriptSig data
|
||||
tx2.vin[0].scriptSig = CScript([OP_TRUE])
|
||||
@@ -1038,7 +1038,7 @@ class SegWitTest(BitcoinTestFramework):
|
||||
|
||||
# This has extra signature data for a witness input, so it should fail.
|
||||
test_witness_block(self.nodes[0], self.test_node, block, accepted=False,
|
||||
reason='non-mandatory-script-verify-flag (Witness requires empty scriptSig)')
|
||||
reason='mandatory-script-verify-flag-failed (Witness requires empty scriptSig)')
|
||||
|
||||
# Now get rid of the extra scriptsig on the witness input, and verify
|
||||
# success (even with extra scriptsig data in the non-witness input)
|
||||
@@ -1077,7 +1077,7 @@ class SegWitTest(BitcoinTestFramework):
|
||||
|
||||
self.update_witness_block_with_transactions(block, [tx, tx2])
|
||||
test_witness_block(self.nodes[0], self.test_node, block, accepted=False,
|
||||
reason='non-mandatory-script-verify-flag (Push value size limit exceeded)')
|
||||
reason='mandatory-script-verify-flag-failed (Push value size limit exceeded)')
|
||||
|
||||
# Now reduce the length of the stack element
|
||||
tx2.wit.vtxinwit[0].scriptWitness.stack[0] = b'a' * (MAX_SCRIPT_ELEMENT_SIZE)
|
||||
@@ -1118,7 +1118,7 @@ class SegWitTest(BitcoinTestFramework):
|
||||
self.update_witness_block_with_transactions(block, [tx, tx2])
|
||||
|
||||
test_witness_block(self.nodes[0], self.test_node, block, accepted=False,
|
||||
reason='non-mandatory-script-verify-flag (Script is too big)')
|
||||
reason='mandatory-script-verify-flag-failed (Script is too big)')
|
||||
|
||||
# Try again with one less byte in the witness script
|
||||
witness_script = CScript([b'a' * MAX_SCRIPT_ELEMENT_SIZE] * 19 + [OP_DROP] * 62 + [OP_TRUE])
|
||||
@@ -1210,7 +1210,7 @@ class SegWitTest(BitcoinTestFramework):
|
||||
block.vtx = [block.vtx[0]]
|
||||
self.update_witness_block_with_transactions(block, [tx2])
|
||||
test_witness_block(self.nodes[0], self.test_node, block, accepted=False,
|
||||
reason='non-mandatory-script-verify-flag (Operation not valid with the current stack size)')
|
||||
reason='mandatory-script-verify-flag-failed (Operation not valid with the current stack size)')
|
||||
|
||||
# Fix the broken witness and the block should be accepted.
|
||||
tx2.wit.vtxinwit[5].scriptWitness.stack = [b'a', witness_script]
|
||||
@@ -1572,7 +1572,7 @@ class SegWitTest(BitcoinTestFramework):
|
||||
sign_p2pk_witness_input(witness_script, tx, 0, hashtype, prev_utxo.nValue + 1, key)
|
||||
self.update_witness_block_with_transactions(block, [tx])
|
||||
test_witness_block(self.nodes[0], self.test_node, block, accepted=False,
|
||||
reason='non-mandatory-script-verify-flag (Script evaluated without error '
|
||||
reason='mandatory-script-verify-flag-failed (Script evaluated without error '
|
||||
'but finished with a false/empty top stack element')
|
||||
|
||||
# Too-small input value
|
||||
@@ -1580,7 +1580,7 @@ class SegWitTest(BitcoinTestFramework):
|
||||
block.vtx.pop() # remove last tx
|
||||
self.update_witness_block_with_transactions(block, [tx])
|
||||
test_witness_block(self.nodes[0], self.test_node, block, accepted=False,
|
||||
reason='non-mandatory-script-verify-flag (Script evaluated without error '
|
||||
reason='mandatory-script-verify-flag-failed (Script evaluated without error '
|
||||
'but finished with a false/empty top stack element')
|
||||
|
||||
# Now try correct value
|
||||
@@ -1684,7 +1684,7 @@ class SegWitTest(BitcoinTestFramework):
|
||||
block = self.build_next_block()
|
||||
self.update_witness_block_with_transactions(block, [tx, tx2])
|
||||
test_witness_block(self.nodes[0], self.test_node, block, accepted=False,
|
||||
reason='non-mandatory-script-verify-flag (Witness requires empty scriptSig)')
|
||||
reason='mandatory-script-verify-flag-failed (Witness requires empty scriptSig)')
|
||||
|
||||
# Move the signature to the witness.
|
||||
block.vtx.pop()
|
||||
|
||||
Reference in New Issue
Block a user