mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-07 06:07:32 +02:00
test: clean up tx resurrection (re-org) test in feature_block.py
This comment about ECDSA signatures created with the test framework not passing mempool policy has been obsolete for a long time (at least since 2019, see PR #15826), so remove it. While at it, change the resurrected txs to be indeed standard valid, so the `-acceptnonstdtxn=1` parameter can also be removed.
This commit is contained in:
@@ -48,6 +48,7 @@ from test_framework.script import (
|
|||||||
sign_input_legacy,
|
sign_input_legacy,
|
||||||
)
|
)
|
||||||
from test_framework.script_util import (
|
from test_framework.script_util import (
|
||||||
|
key_to_p2pk_script,
|
||||||
script_to_p2sh_script,
|
script_to_p2sh_script,
|
||||||
)
|
)
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
@@ -90,7 +91,6 @@ class FullBlockTest(BitcoinTestFramework):
|
|||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.extra_args = [[
|
self.extra_args = [[
|
||||||
'-acceptnonstdtxn=1', # This is a consensus block test, we don't care about tx policy
|
|
||||||
'-testactivationheight=bip34@2',
|
'-testactivationheight=bip34@2',
|
||||||
]]
|
]]
|
||||||
|
|
||||||
@@ -1164,31 +1164,24 @@ class FullBlockTest(BitcoinTestFramework):
|
|||||||
#
|
#
|
||||||
# b78 creates a tx, which is spent in b79. After b82, both should be in mempool
|
# b78 creates a tx, which is spent in b79. After b82, both should be in mempool
|
||||||
#
|
#
|
||||||
# The tx'es must be unsigned and pass the node's mempool policy. It is unsigned for the
|
# The resurrected transactions must pass the node's mempool policy, so create
|
||||||
# rather obscure reason that the Python signature code does not distinguish between
|
# and spend standard outputs (P2PK using the coinbase pubkey to keep it simple).
|
||||||
# Low-S and High-S values (whereas the bitcoin code has custom code which does so);
|
|
||||||
# as a result of which, the odds are 50% that the python code will use the right
|
|
||||||
# value and the transaction will be accepted into the mempool. Until we modify the
|
|
||||||
# test framework to support low-S signing, we are out of luck.
|
|
||||||
#
|
|
||||||
# To get around this issue, we construct transactions which are not signed and which
|
|
||||||
# spend to OP_TRUE. If the standard-ness rules change, this test would need to be
|
|
||||||
# updated. (Perhaps to spend to a P2SH OP_TRUE script)
|
|
||||||
self.log.info("Test transaction resurrection during a re-org")
|
self.log.info("Test transaction resurrection during a re-org")
|
||||||
|
standard_output_script = key_to_p2pk_script(self.coinbase_pubkey)
|
||||||
self.move_tip(76)
|
self.move_tip(76)
|
||||||
self.next_block(77)
|
self.next_block(77)
|
||||||
tx77 = self.create_and_sign_transaction(out[24], 10 * COIN)
|
tx77 = self.create_and_sign_transaction(out[24], 10 * COIN, standard_output_script)
|
||||||
b77 = self.update_block(77, [tx77])
|
b77 = self.update_block(77, [tx77])
|
||||||
self.send_blocks([b77], True)
|
self.send_blocks([b77], True)
|
||||||
self.save_spendable_output()
|
self.save_spendable_output()
|
||||||
|
|
||||||
self.next_block(78)
|
self.next_block(78)
|
||||||
tx78 = self.create_tx(tx77, 0, 9 * COIN)
|
tx78 = self.create_and_sign_transaction(tx77, 9 * COIN, standard_output_script)
|
||||||
b78 = self.update_block(78, [tx78])
|
b78 = self.update_block(78, [tx78])
|
||||||
self.send_blocks([b78], True)
|
self.send_blocks([b78], True)
|
||||||
|
|
||||||
self.next_block(79)
|
self.next_block(79)
|
||||||
tx79 = self.create_tx(tx78, 0, 8 * COIN)
|
tx79 = self.create_and_sign_transaction(tx78, 8 * COIN, standard_output_script)
|
||||||
b79 = self.update_block(79, [tx79])
|
b79 = self.update_block(79, [tx79])
|
||||||
self.send_blocks([b79], True)
|
self.send_blocks([b79], True)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user