mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 23:09:44 -04:00
test: add rescan_utxos
in MiniWallet's initialization
this simplifies usage when MiniWallet is used with a pre-mined chain.
This commit is contained in:
parent
599e941c19
commit
0377d6bb42
25 changed files with 7 additions and 29 deletions
|
@ -202,7 +202,6 @@ class ChainstateWriteCrashTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[3])
|
self.wallet = MiniWallet(self.nodes[3])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
initial_height = self.nodes[3].getblockcount()
|
initial_height = self.nodes[3].getblockcount()
|
||||||
self.generate(self.nodes[3], COINBASE_MATURITY, sync_fun=self.no_op)
|
self.generate(self.nodes[3], COINBASE_MATURITY, sync_fun=self.no_op)
|
||||||
|
|
||||||
|
|
|
@ -297,7 +297,6 @@ class EstimateFeeTest(BitcoinTestFramework):
|
||||||
# Split two coinbases into many small utxos
|
# Split two coinbases into many small utxos
|
||||||
self.start_node(0)
|
self.start_node(0)
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
self.initial_split(self.nodes[0])
|
self.initial_split(self.nodes[0])
|
||||||
self.log.info("Finished splitting")
|
self.log.info("Finished splitting")
|
||||||
|
|
||||||
|
|
|
@ -42,10 +42,6 @@ class ReplaceByFeeTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
# the pre-mined test framework chain contains coinbase outputs to the
|
|
||||||
# MiniWallet's default address in blocks 76-100 (see method
|
|
||||||
# BitcoinTestFramework._initialize_chain())
|
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
self.log.info("Running test simple doublespend...")
|
self.log.info("Running test simple doublespend...")
|
||||||
self.test_simple_doublespend()
|
self.test_simple_doublespend()
|
||||||
|
@ -398,7 +394,6 @@ class ReplaceByFeeTest(BitcoinTestFramework):
|
||||||
"""
|
"""
|
||||||
normal_node = self.nodes[1]
|
normal_node = self.nodes[1]
|
||||||
wallet = MiniWallet(normal_node)
|
wallet = MiniWallet(normal_node)
|
||||||
wallet.rescan_utxos()
|
|
||||||
# Clear mempools to avoid cross-node sync failure.
|
# Clear mempools to avoid cross-node sync failure.
|
||||||
for node in self.nodes:
|
for node in self.nodes:
|
||||||
self.generate(node, 1)
|
self.generate(node, 1)
|
||||||
|
|
|
@ -42,7 +42,6 @@ class TxindexCompatibilityTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
mini_wallet = MiniWallet(self.nodes[1])
|
mini_wallet = MiniWallet(self.nodes[1])
|
||||||
mini_wallet.rescan_utxos()
|
|
||||||
spend_utxo = mini_wallet.get_utxo()
|
spend_utxo = mini_wallet.get_utxo()
|
||||||
mini_wallet.send_self_transfer(from_node=self.nodes[1], utxo_to_spend=spend_utxo)
|
mini_wallet.send_self_transfer(from_node=self.nodes[1], utxo_to_spend=spend_utxo)
|
||||||
self.generate(self.nodes[1], 1)
|
self.generate(self.nodes[1], 1)
|
||||||
|
|
|
@ -96,7 +96,6 @@ class RESTTest (BitcoinTestFramework):
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.url = urllib.parse.urlparse(self.nodes[0].url)
|
self.url = urllib.parse.urlparse(self.nodes[0].url)
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
self.log.info("Broadcast test transaction and sync nodes")
|
self.log.info("Broadcast test transaction and sync nodes")
|
||||||
txid, _ = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=getnewdestination()[1], amount=int(0.1 * COIN))
|
txid, _ = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=getnewdestination()[1], amount=int(0.1 * COIN))
|
||||||
|
|
|
@ -215,7 +215,6 @@ class ZMQTest (BitcoinTestFramework):
|
||||||
assert_equal([txid.hex()], self.nodes[1].getblock(hash)["tx"])
|
assert_equal([txid.hex()], self.nodes[1].getblock(hash)["tx"])
|
||||||
|
|
||||||
|
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
self.log.info("Wait for tx from second node")
|
self.log.info("Wait for tx from second node")
|
||||||
payment_tx = self.wallet.send_self_transfer(from_node=self.nodes[1])
|
payment_tx = self.wallet.send_self_transfer(from_node=self.nodes[1])
|
||||||
payment_txid = payment_tx['txid']
|
payment_txid = payment_tx['txid']
|
||||||
|
|
|
@ -69,7 +69,6 @@ class MempoolAcceptanceTest(BitcoinTestFramework):
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node = self.nodes[0]
|
node = self.nodes[0]
|
||||||
self.wallet = MiniWallet(node)
|
self.wallet = MiniWallet(node)
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
self.log.info('Start with empty mempool, and 200 blocks')
|
self.log.info('Start with empty mempool, and 200 blocks')
|
||||||
self.mempool_size = 0
|
self.mempool_size = 0
|
||||||
|
|
|
@ -44,7 +44,6 @@ class DataCarrierTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
# By default, only 80 bytes are used for data (+1 for OP_RETURN, +2 for the pushdata opcodes).
|
# By default, only 80 bytes are used for data (+1 for OP_RETURN, +2 for the pushdata opcodes).
|
||||||
default_size_data = random_bytes(MAX_OP_RETURN_RELAY - 3)
|
default_size_data = random_bytes(MAX_OP_RETURN_RELAY - 3)
|
||||||
|
|
|
@ -72,7 +72,6 @@ class DustRelayFeeTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
# prepare output scripts of each standard type
|
# prepare output scripts of each standard type
|
||||||
key = ECKey()
|
key = ECKey()
|
||||||
|
|
|
@ -31,7 +31,6 @@ class MempoolPackagesTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
# DEFAULT_ANCESTOR_LIMIT transactions off a confirmed tx should be fine
|
# DEFAULT_ANCESTOR_LIMIT transactions off a confirmed tx should be fine
|
||||||
chain = []
|
chain = []
|
||||||
|
|
|
@ -59,7 +59,6 @@ class MempoolPersistTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.mini_wallet = MiniWallet(self.nodes[2])
|
self.mini_wallet = MiniWallet(self.nodes[2])
|
||||||
self.mini_wallet.rescan_utxos()
|
|
||||||
if self.is_sqlite_compiled():
|
if self.is_sqlite_compiled():
|
||||||
self.nodes[2].createwallet(
|
self.nodes[2].createwallet(
|
||||||
wallet_name="watch",
|
wallet_name="watch",
|
||||||
|
|
|
@ -31,7 +31,6 @@ class MempoolCoinbaseTest(BitcoinTestFramework):
|
||||||
self.log.info("Add 4 coinbase utxos to the miniwallet")
|
self.log.info("Add 4 coinbase utxos to the miniwallet")
|
||||||
# Block 76 contains the first spendable coinbase txs.
|
# Block 76 contains the first spendable coinbase txs.
|
||||||
first_block = 76
|
first_block = 76
|
||||||
wallet.rescan_utxos()
|
|
||||||
|
|
||||||
# Three scenarios for re-orging coinbase spends in the memory pool:
|
# Three scenarios for re-orging coinbase spends in the memory pool:
|
||||||
# 1. Direct coinbase spend : spend_1
|
# 1. Direct coinbase spend : spend_1
|
||||||
|
|
|
@ -28,7 +28,6 @@ class MempoolSpendCoinbaseTest(BitcoinTestFramework):
|
||||||
chain_height = 198
|
chain_height = 198
|
||||||
self.nodes[0].invalidateblock(self.nodes[0].getblockhash(chain_height + 1))
|
self.nodes[0].invalidateblock(self.nodes[0].getblockhash(chain_height + 1))
|
||||||
assert_equal(chain_height, self.nodes[0].getblockcount())
|
assert_equal(chain_height, self.nodes[0].getblockcount())
|
||||||
wallet.rescan_utxos()
|
|
||||||
|
|
||||||
# Coinbase at height chain_height-100+1 ok in mempool, should
|
# Coinbase at height chain_height-100+1 ok in mempool, should
|
||||||
# get mined. Coinbase at height chain_height-100+2 is
|
# get mined. Coinbase at height chain_height-100+2 is
|
||||||
|
|
|
@ -23,7 +23,6 @@ class MempoolUnbroadcastTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
self.test_broadcast()
|
self.test_broadcast()
|
||||||
self.test_txn_removal()
|
self.test_txn_removal()
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,6 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
# Test `prioritisetransaction` required parameters
|
# Test `prioritisetransaction` required parameters
|
||||||
assert_raises_rpc_error(-1, "prioritisetransaction", self.nodes[0].prioritisetransaction)
|
assert_raises_rpc_error(-1, "prioritisetransaction", self.nodes[0].prioritisetransaction)
|
||||||
|
|
|
@ -20,8 +20,6 @@ class P2PBlocksOnly(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.miniwallet = MiniWallet(self.nodes[0])
|
self.miniwallet = MiniWallet(self.nodes[0])
|
||||||
# Add enough mature utxos to the wallet, so that all txs spend confirmed coins
|
|
||||||
self.miniwallet.rescan_utxos()
|
|
||||||
|
|
||||||
self.blocksonly_mode_tests()
|
self.blocksonly_mode_tests()
|
||||||
self.blocks_relay_conn_tests()
|
self.blocks_relay_conn_tests()
|
||||||
|
|
|
@ -214,7 +214,6 @@ class FilterTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
filter_peer = self.nodes[0].add_p2p_connection(P2PBloomFilter())
|
filter_peer = self.nodes[0].add_p2p_connection(P2PBloomFilter())
|
||||||
self.log.info('Test filter size limits')
|
self.log.info('Test filter size limits')
|
||||||
|
|
|
@ -26,7 +26,6 @@ class P2PPermissionsTests(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
self.check_tx_relay()
|
self.check_tx_relay()
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,6 @@ class TxPrivacyTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
tx_originator = self.nodes[0].add_p2p_connection(P2PInterface())
|
tx_originator = self.nodes[0].add_p2p_connection(P2PInterface())
|
||||||
spy = self.nodes[0].add_p2p_connection(P2PTxSpy(), wait_for_verack=False)
|
spy = self.nodes[0].add_p2p_connection(P2PTxSpy(), wait_for_verack=False)
|
||||||
|
|
|
@ -28,7 +28,6 @@ class RPCGenerateTest(BitcoinTestFramework):
|
||||||
def test_generateblock(self):
|
def test_generateblock(self):
|
||||||
node = self.nodes[0]
|
node = self.nodes[0]
|
||||||
miniwallet = MiniWallet(node)
|
miniwallet = MiniWallet(node)
|
||||||
miniwallet.rescan_utxos()
|
|
||||||
|
|
||||||
self.log.info('Generate an empty block to address')
|
self.log.info('Generate an empty block to address')
|
||||||
address = miniwallet.get_address()
|
address = miniwallet.get_address()
|
||||||
|
|
|
@ -18,7 +18,6 @@ class RPCMempoolInfoTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
confirmed_utxo = self.wallet.get_utxo()
|
confirmed_utxo = self.wallet.get_utxo()
|
||||||
|
|
||||||
# Create a tree of unconfirmed transactions in the mempool:
|
# Create a tree of unconfirmed transactions in the mempool:
|
||||||
|
|
|
@ -27,7 +27,6 @@ class ScanblocksTest(BitcoinTestFramework):
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node = self.nodes[0]
|
node = self.nodes[0]
|
||||||
wallet = MiniWallet(node)
|
wallet = MiniWallet(node)
|
||||||
wallet.rescan_utxos()
|
|
||||||
|
|
||||||
# send 1.0, mempool only
|
# send 1.0, mempool only
|
||||||
_, spk_1, addr_1 = getnewdestination()
|
_, spk_1, addr_1 = getnewdestination()
|
||||||
|
|
|
@ -31,7 +31,6 @@ class ScantxoutsetTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
self.wallet.rescan_utxos()
|
|
||||||
|
|
||||||
self.log.info("Test if we find coinbase outputs.")
|
self.log.info("Test if we find coinbase outputs.")
|
||||||
assert_equal(sum(u["coinbase"] for u in self.nodes[0].scantxoutset("start", [self.wallet.get_descriptor()])["unspents"]), 49)
|
assert_equal(sum(u["coinbase"] for u in self.nodes[0].scantxoutset("start", [self.wallet.get_descriptor()])["unspents"]), 49)
|
||||||
|
|
|
@ -101,6 +101,13 @@ class MiniWallet:
|
||||||
self._address, self._internal_key = create_deterministic_address_bcrt1_p2tr_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 = bytes.fromhex(self._test_node.validateaddress(self._address)['scriptPubKey'])
|
||||||
|
|
||||||
|
# When the pre-mined test framework chain is used, it contains coinbase
|
||||||
|
# outputs to the MiniWallet's default address in blocks 76-100
|
||||||
|
# (see method BitcoinTestFramework._initialize_chain())
|
||||||
|
# The MiniWallet needs to rescan_utxos() in order to account
|
||||||
|
# for those mature UTXOs, so that all txs spend confirmed coins
|
||||||
|
self.rescan_utxos()
|
||||||
|
|
||||||
def _create_utxo(self, *, txid, vout, value, height, coinbase, confirmations):
|
def _create_utxo(self, *, txid, vout, value, height, coinbase, confirmations):
|
||||||
return {"txid": txid, "vout": vout, "value": value, "height": height, "coinbase": coinbase, "confirmations": confirmations}
|
return {"txid": txid, "vout": vout, "value": value, "height": height, "coinbase": coinbase, "confirmations": confirmations}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,6 @@ class WalletFastRescanTest(BitcoinTestFramework):
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node = self.nodes[0]
|
node = self.nodes[0]
|
||||||
wallet = MiniWallet(node)
|
wallet = MiniWallet(node)
|
||||||
wallet.rescan_utxos()
|
|
||||||
|
|
||||||
self.log.info("Create descriptor wallet with backup")
|
self.log.info("Create descriptor wallet with backup")
|
||||||
WALLET_BACKUP_FILENAME = os.path.join(node.datadir, 'wallet.bak')
|
WALLET_BACKUP_FILENAME = os.path.join(node.datadir, 'wallet.bak')
|
||||||
|
|
Loading…
Add table
Reference in a new issue