mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
refactor: use address_to_scriptpubkey to retrieve addresses scriptpubkey
This commit updates the code by replacing the RPC call used to decode an address and retrieve its corresponding scriptpubkey with the address_to_scriptpubkey function. address_to_scriptpubkey function can now decode all addresses formats, which makes it more efficient to use.
This commit is contained in:
parent
4142d19d74
commit
e47ce42f67
8 changed files with 16 additions and 8 deletions
|
@ -14,6 +14,7 @@ Generate COINBASE_MATURITY (CB) more blocks to ensure the coinbases are mature.
|
|||
"""
|
||||
import time
|
||||
|
||||
from test_framework.address import address_to_scriptpubkey
|
||||
from test_framework.blocktools import (
|
||||
COINBASE_MATURITY,
|
||||
NORMAL_GBT_REQUEST_PARAMS,
|
||||
|
@ -77,7 +78,7 @@ class NULLDUMMYTest(BitcoinTestFramework):
|
|||
cms = self.nodes[0].createmultisig(1, [self.pubkey])
|
||||
wms = self.nodes[0].createmultisig(1, [self.pubkey], 'p2sh-segwit')
|
||||
self.ms_address = cms["address"]
|
||||
ms_unlock_details = {"scriptPubKey": self.nodes[0].validateaddress(self.ms_address)["scriptPubKey"],
|
||||
ms_unlock_details = {"scriptPubKey": address_to_scriptpubkey(self.ms_address).hex(),
|
||||
"redeemScript": cms["redeemScript"]}
|
||||
self.wit_ms_address = wms['address']
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ import itertools
|
|||
import json
|
||||
import os
|
||||
|
||||
from test_framework.address import address_to_scriptpubkey
|
||||
from test_framework.blocktools import COINBASE_MATURITY
|
||||
from test_framework.authproxy import JSONRPCException
|
||||
from test_framework.descriptors import descsum_create, drop_origins
|
||||
|
@ -193,7 +194,7 @@ class RpcCreateMultiSigTest(BitcoinTestFramework):
|
|||
assert mredeemw == mredeem
|
||||
wmulti.unloadwallet()
|
||||
|
||||
spk = bytes.fromhex(node0.validateaddress(madd)["scriptPubKey"])
|
||||
spk = address_to_scriptpubkey(madd)
|
||||
txid, _ = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=spk, amount=1300)
|
||||
tx = node0.getrawtransaction(txid, True)
|
||||
vout = [v["n"] for v in tx["vout"] if madd == v["scriptPubKey"]["address"]]
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
"""Test the scanblocks RPC call."""
|
||||
from test_framework.address import address_to_scriptpubkey
|
||||
from test_framework.blockfilter import (
|
||||
bip158_basic_element_hash,
|
||||
bip158_relevant_scriptpubkeys,
|
||||
|
@ -36,7 +37,7 @@ class ScanblocksTest(BitcoinTestFramework):
|
|||
# send 1.0, mempool only
|
||||
# childkey 5 of `parent_key`
|
||||
wallet.send_to(from_node=node,
|
||||
scriptPubKey=bytes.fromhex(node.validateaddress("mkS4HXoTYWRTescLGaUTGbtTTYX5EjJyEE")['scriptPubKey']),
|
||||
scriptPubKey=address_to_scriptpubkey("mkS4HXoTYWRTescLGaUTGbtTTYX5EjJyEE"),
|
||||
amount=1 * COIN)
|
||||
|
||||
# mine a block and assure that the mined blockhash is in the filterresult
|
||||
|
|
|
@ -8,6 +8,7 @@ from test_framework.blocktools import (
|
|||
COINBASE_MATURITY,
|
||||
)
|
||||
from test_framework.address import (
|
||||
address_to_scriptpubkey,
|
||||
script_to_p2sh,
|
||||
)
|
||||
from test_framework.key import ECKey
|
||||
|
@ -118,7 +119,7 @@ class SignRawTransactionWithKeyTest(BitcoinTestFramework):
|
|||
}.get(tx_type, "Invalid tx_type")
|
||||
redeem_script = script_to_p2wsh_script(witness_script).hex()
|
||||
addr = script_to_p2sh(redeem_script)
|
||||
script_pub_key = self.nodes[1].validateaddress(addr)['scriptPubKey']
|
||||
script_pub_key = address_to_scriptpubkey(addr).hex()
|
||||
# Fund that address
|
||||
txid = self.send_to_address(addr, 10)
|
||||
vout = find_vout_for_address(self.nodes[0], txid, addr)
|
||||
|
|
|
@ -9,6 +9,7 @@ import time
|
|||
import unittest
|
||||
|
||||
from .address import (
|
||||
address_to_scriptpubkey,
|
||||
key_to_p2sh_p2wpkh,
|
||||
key_to_p2wpkh,
|
||||
script_to_p2sh_p2wsh,
|
||||
|
@ -205,7 +206,7 @@ def create_witness_tx(node, use_p2wsh, utxo, pubkey, encode_p2sh, amount):
|
|||
else:
|
||||
addr = key_to_p2sh_p2wpkh(pubkey) if encode_p2sh else key_to_p2wpkh(pubkey)
|
||||
if not encode_p2sh:
|
||||
assert_equal(node.getaddressinfo(addr)['scriptPubKey'], witness_script(use_p2wsh, pubkey))
|
||||
assert_equal(address_to_scriptpubkey(addr).hex(), witness_script(use_p2wsh, pubkey))
|
||||
return node.createrawtransaction([utxo], {addr: amount})
|
||||
|
||||
def send_to_witness(use_p2wsh, node, utxo, pubkey, encode_p2sh, amount, sign=True, insert_redeem_script=""):
|
||||
|
|
|
@ -13,6 +13,7 @@ from typing import (
|
|||
Optional,
|
||||
)
|
||||
from test_framework.address import (
|
||||
address_to_scriptpubkey,
|
||||
create_deterministic_address_bcrt1_p2tr_op_true,
|
||||
key_to_p2pkh,
|
||||
key_to_p2sh_p2wpkh,
|
||||
|
@ -96,7 +97,7 @@ class MiniWallet:
|
|||
self._scriptPubKey = key_to_p2pk_script(pub_key.get_bytes())
|
||||
elif mode == MiniWalletMode.ADDRESS_OP_TRUE:
|
||||
self._address, self._internal_key = create_deterministic_address_bcrt1_p2tr_op_true()
|
||||
self._scriptPubKey = bytes.fromhex(self._test_node.validateaddress(self._address)['scriptPubKey'])
|
||||
self._scriptPubKey = address_to_scriptpubkey(self._address)
|
||||
|
||||
# When the pre-mined test framework chain is used, it contains coinbase
|
||||
# outputs to the MiniWallet's default address in blocks 76-100
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
"""Test the avoid_reuse and setwalletflag features."""
|
||||
|
||||
from test_framework.address import address_to_scriptpubkey
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import (
|
||||
assert_approx,
|
||||
|
@ -257,7 +258,7 @@ class AvoidReuseTest(BitcoinTestFramework):
|
|||
if not self.options.descriptors:
|
||||
# For the second send, we transmute it to a related single-key address
|
||||
# to make sure it's also detected as re-use
|
||||
fund_spk = self.nodes[0].getaddressinfo(fundaddr)["scriptPubKey"]
|
||||
fund_spk = address_to_scriptpubkey(fundaddr).hex()
|
||||
fund_decoded = self.nodes[0].decodescript(fund_spk)
|
||||
if second_addr_type == "p2sh-segwit":
|
||||
new_fundaddr = fund_decoded["segwit"]["p2sh-segwit"]
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
import os
|
||||
from typing import List
|
||||
|
||||
from test_framework.address import address_to_scriptpubkey
|
||||
from test_framework.descriptors import descsum_create
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.test_node import TestNode
|
||||
|
@ -58,7 +59,7 @@ class WalletFastRescanTest(BitcoinTestFramework):
|
|||
if 'range' in desc_info:
|
||||
start_range, end_range = desc_info['range']
|
||||
addr = w.deriveaddresses(desc_info['desc'], [end_range, end_range])[0]
|
||||
spk = bytes.fromhex(w.getaddressinfo(addr)['scriptPubKey'])
|
||||
spk = address_to_scriptpubkey(addr)
|
||||
self.log.info(f"-> range [{start_range},{end_range}], last address {addr}")
|
||||
else:
|
||||
spk = bytes.fromhex(fixed_key.p2wpkh_script)
|
||||
|
|
Loading…
Add table
Reference in a new issue