diff options
author | ismaelsadeeq <ask4ismailsadiq@gmail.com> | 2023-03-28 16:54:28 +0100 |
---|---|---|
committer | ismaelsadeeq <ask4ismailsadiq@gmail.com> | 2023-03-28 16:54:28 +0100 |
commit | 4142d19d741d6432ba95f3452f0d949941d89d5c (patch) | |
tree | 6163bd5beea2e5c49530177d4aa08b3b532ac847 /test | |
parent | b759cefe936ed3991633acff215ea1dcec5ece28 (diff) | |
download | bitcoin-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-x | test/functional/rpc_scantxoutset.py | 2 | ||||
-rw-r--r-- | test/functional/test_framework/address.py | 21 | ||||
-rw-r--r-- | test/functional/test_framework/wallet.py | 20 |
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 |