aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Falbesoner <sebastian.falbesoner@gmail.com>2021-12-26 02:31:11 +0100
committerSebastian Falbesoner <sebastian.falbesoner@gmail.com>2021-12-26 12:10:56 +0100
commit983ca0456c0fd32dc6ce166cb1e9aeb925e81161 (patch)
tree6023a3a813967a243d9b8ffc0e70c3e6825e329d
parente704d4d26f62f83068dc7d4082ab9b57bc33d1fb (diff)
downloadbitcoin-983ca0456c0fd32dc6ce166cb1e9aeb925e81161.tar.xz
test: introduce `address_to_scriptpubkey` helper
Works only with legacy addresses (Base58Check) right now.
-rw-r--r--test/functional/test_framework/wallet.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/functional/test_framework/wallet.py b/test/functional/test_framework/wallet.py
index d7c78bdeb6..9158dd0942 100644
--- a/test/functional/test_framework/wallet.py
+++ b/test/functional/test_framework/wallet.py
@@ -10,6 +10,7 @@ from enum import Enum
from random import choice
from typing import Optional
from test_framework.address import (
+ base58_to_byte,
create_deterministic_address_bcrt1_p2tr_op_true,
key_to_p2pkh,
key_to_p2sh_p2wpkh,
@@ -39,6 +40,8 @@ from test_framework.script_util import (
key_to_p2pkh_script,
key_to_p2sh_p2wpkh_script,
key_to_p2wpkh_script,
+ keyhash_to_p2pkh_script,
+ scripthash_to_p2sh_script,
)
from test_framework.util import (
assert_equal,
@@ -240,6 +243,18 @@ def getnewdestination(address_type='bech32'):
return pubkey, scriptpubkey, address
+def address_to_scriptpubkey(address):
+ """Converts a given address to the corresponding output script (scriptPubKey)."""
+ payload, version = base58_to_byte(address)
+ if version == 111: # testnet pubkey hash
+ return keyhash_to_p2pkh_script(payload)
+ elif version == 196: # testnet script hash
+ return scripthash_to_p2sh_script(payload)
+ # TODO: also support other address formats
+ else:
+ assert False
+
+
def make_chain(node, address, privkeys, parent_txid, parent_value, n=0, parent_locking_script=None, fee=DEFAULT_FEE):
"""Build a transaction that spends parent_txid.vout[n] and produces one output with
amount = parent_value with a fee deducted.