mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-07-12 19:32:35 +02:00
Make Taproot spends standard + policy limits
This adds a `TxoutType::WITNESS_V1_TAPROOT` for P2TR outputs, and permits spending them in standardness rules. No corresponding `CTxDestination` is added for it, as that isn't needed until we want wallet integration. The taproot validation flags are also enabled for mempool transactions, and standardness rules are added (stack item size limit, no annexes).
This commit is contained in:
@ -55,6 +55,7 @@ from test_framework.script import (
|
||||
MAX_SCRIPT_ELEMENT_SIZE,
|
||||
OP_0,
|
||||
OP_1,
|
||||
OP_2,
|
||||
OP_16,
|
||||
OP_2DROP,
|
||||
OP_CHECKMULTISIG,
|
||||
@ -1400,7 +1401,11 @@ class SegWitTest(BitcoinTestFramework):
|
||||
assert_equal(len(self.nodes[1].getrawmempool()), 0)
|
||||
for version in list(range(OP_1, OP_16 + 1)) + [OP_0]:
|
||||
# First try to spend to a future version segwit script_pubkey.
|
||||
script_pubkey = CScript([CScriptOp(version), witness_hash])
|
||||
if version == OP_1:
|
||||
# Don't use 32-byte v1 witness (used by Taproot; see BIP 341)
|
||||
script_pubkey = CScript([CScriptOp(version), witness_hash + b'\x00'])
|
||||
else:
|
||||
script_pubkey = CScript([CScriptOp(version), witness_hash])
|
||||
tx.vin = [CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b"")]
|
||||
tx.vout = [CTxOut(self.utxo[0].nValue - 1000, script_pubkey)]
|
||||
tx.rehash()
|
||||
@ -1413,9 +1418,9 @@ class SegWitTest(BitcoinTestFramework):
|
||||
self.sync_blocks()
|
||||
assert len(self.nodes[0].getrawmempool()) == 0
|
||||
|
||||
# Finally, verify that version 0 -> version 1 transactions
|
||||
# Finally, verify that version 0 -> version 2 transactions
|
||||
# are standard
|
||||
script_pubkey = CScript([CScriptOp(OP_1), witness_hash])
|
||||
script_pubkey = CScript([CScriptOp(OP_2), witness_hash])
|
||||
tx2 = CTransaction()
|
||||
tx2.vin = [CTxIn(COutPoint(tx.sha256, 0), b"")]
|
||||
tx2.vout = [CTxOut(tx.vout[0].nValue - 1000, script_pubkey)]
|
||||
|
Reference in New Issue
Block a user