aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorismaelsadeeq <ask4ismailsadiq@gmail.com>2023-03-28 16:54:28 +0100
committerismaelsadeeq <ask4ismailsadiq@gmail.com>2023-03-28 16:54:28 +0100
commit4142d19d741d6432ba95f3452f0d949941d89d5c (patch)
tree6163bd5beea2e5c49530177d4aa08b3b532ac847 /test
parentb759cefe936ed3991633acff215ea1dcec5ece28 (diff)
downloadbitcoin-4142d19d741d6432ba95f3452f0d949941d89d5c.tar.xz
refactor: move address_to_scriptpubkey to address.py
The COINBASE_MATURITY constant in blocktools.py is imported in wallet.py. However, importing address_to_scriptpubkey to blocktools.py will generate a circular import error. Since the method is related to addresses, it is best to move it to address.py, which will also fix the circular import error. Update imports of address_to_scriptpubkey accordingly.
Diffstat (limited to 'test')
-rwxr-xr-xtest/functional/rpc_scantxoutset.py2
-rw-r--r--test/functional/test_framework/address.py21
-rw-r--r--test/functional/test_framework/wallet.py20
3 files changed, 22 insertions, 21 deletions
diff --git a/test/functional/rpc_scantxoutset.py b/test/functional/rpc_scantxoutset.py
index 507a4f48e5..dca965aacb 100755
--- a/test/functional/rpc_scantxoutset.py
+++ b/test/functional/rpc_scantxoutset.py
@@ -3,12 +3,12 @@
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test the scantxoutset rpc call."""
+from test_framework.address import address_to_scriptpubkey
from test_framework.messages import COIN
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal, assert_raises_rpc_error
from test_framework.wallet import (
MiniWallet,
- address_to_scriptpubkey,
getnewdestination,
)
diff --git a/test/functional/test_framework/address.py b/test/functional/test_framework/address.py
index d1bf186b9d..5b2e3289a9 100644
--- a/test/functional/test_framework/address.py
+++ b/test/functional/test_framework/address.py
@@ -21,11 +21,17 @@ from .script import (
taproot_construct,
)
from .util import assert_equal
+from test_framework.script_util import (
+ keyhash_to_p2pkh_script,
+ program_to_witness_script,
+ scripthash_to_p2sh_script,
+)
from test_framework.segwit_addr import (
decode_segwit_address,
encode_segwit_address,
)
+
ADDRESS_BCRT1_UNSPENDABLE = 'bcrt1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq3xueyj'
ADDRESS_BCRT1_UNSPENDABLE_DESCRIPTOR = 'addr(bcrt1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq3xueyj)#juyq9d97'
# Coins sent to this address can be spent with a witness stack of just OP_TRUE
@@ -172,6 +178,21 @@ def bech32_to_bytes(address):
return version, bytearray(payload)
+def address_to_scriptpubkey(address):
+ """Converts a given address to the corresponding output script (scriptPubKey)."""
+ version, payload = bech32_to_bytes(address)
+ if version is not None:
+ return program_to_witness_script(version, payload) # testnet segwit 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
+
+
class TestFrameworkScript(unittest.TestCase):
def test_base58encodedecode(self):
def check_base58(data, version):
diff --git a/test/functional/test_framework/wallet.py b/test/functional/test_framework/wallet.py
index eab8fbda47..616acfe119 100644
--- a/test/functional/test_framework/wallet.py
+++ b/test/functional/test_framework/wallet.py
@@ -13,8 +13,6 @@ from typing import (
Optional,
)
from test_framework.address import (
- base58_to_byte,
- bech32_to_bytes,
create_deterministic_address_bcrt1_p2tr_op_true,
key_to_p2pkh,
key_to_p2sh_p2wpkh,
@@ -49,9 +47,6 @@ from test_framework.script_util import (
key_to_p2pkh_script,
key_to_p2sh_p2wpkh_script,
key_to_p2wpkh_script,
- keyhash_to_p2pkh_script,
- program_to_witness_script,
- scripthash_to_p2sh_script,
)
from test_framework.util import (
assert_equal,
@@ -412,18 +407,3 @@ def getnewdestination(address_type='bech32m'):
else:
assert False
return pubkey, scriptpubkey, address
-
-
-def address_to_scriptpubkey(address):
- """Converts a given address to the corresponding output script (scriptPubKey)."""
- version, payload = bech32_to_bytes(address)
- if version is not None:
- return program_to_witness_script(version, payload) # testnet segwit 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