Skip to content

Commit 88791fb

Browse files
committed
Merge bitcoin/bitcoin#32544: scripted-diff: test: remove 'descriptors=True' argument for createwallet calls
86de8c1 scripted-diff: test: remove 'descriptors=True' argument for `createwallet` calls (Sebastian Falbesoner) Pull request description: Descriptor wallets are already created by default [since v23.0](https://github.com/bitcoin/bitcoin/blob/7710a31f0cb69a04529f39840196826d0b9770ab/doc/release-notes/release-notes-23.0.md?plain=1#L171), but since the recent legacy wallet removal the `descriptors` parameter *must* be True for the `createwallet` RPC (see commit 9f04e02), i.e. still passing it wouldn't contain any information for test readers anymore. So simply drop them in the functional tests in order to reduce code bloat. The only exception is calls to older versions, which happens in `wallet_backwards_compatibility.py` and is explicitly excluded in the scripted diff. ACKs for top commit: Sjors: ACK 86de8c1 maflcko: lgtm ACK 86de8c1 Tree-SHA512: 1acfae27bd960aeef9e1cf6e3f042752164a4d6869773c42df4c22c03dde0922993a3220fa14d52e75a0ff1f48c5194932b74a21427efbd496b0aaad7a2eafb2
2 parents 7710a31 + 86de8c1 commit 88791fb

12 files changed

+53
-54
lines changed

test/functional/mempool_persist.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ def run_test(self):
6060
if self.is_wallet_compiled():
6161
self.nodes[2].createwallet(
6262
wallet_name="watch",
63-
descriptors=True,
6463
disable_private_keys=True,
6564
load_on_startup=False,
6665
)

test/functional/wallet_basic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@ def run_test(self):
606606
# Prevent race of listunspent with outstanding TxAddedToMempool notifications
607607
self.nodes[0].syncwithvalidationinterfacequeue()
608608
# Now import the descriptors, make sure we can identify on which descriptor each coin was received.
609-
self.nodes[0].createwallet(wallet_name="wo", descriptors=True, disable_private_keys=True)
609+
self.nodes[0].createwallet(wallet_name="wo", disable_private_keys=True)
610610
wo_wallet = self.nodes[0].get_wallet_rpc("wo")
611611
wo_wallet.importdescriptors([
612612
{

test/functional/wallet_descriptor.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def test_concurrent_writes(self):
7171
def run_test(self):
7272
# Make a descriptor wallet
7373
self.log.info("Making a descriptor wallet")
74-
self.nodes[0].createwallet(wallet_name="desc1", descriptors=True)
74+
self.nodes[0].createwallet(wallet_name="desc1")
7575

7676
# A descriptor wallet should have 100 addresses * 4 types = 400 keys
7777
self.log.info("Checking wallet info")
@@ -125,7 +125,7 @@ def run_test(self):
125125
assert_equal(addr_info['hdkeypath'], 'm/86h/1h/0h/1/0')
126126

127127
# Make a wallet to receive coins at
128-
self.nodes[0].createwallet(wallet_name="desc2", descriptors=True)
128+
self.nodes[0].createwallet(wallet_name="desc2")
129129
recv_wrpc = self.nodes[0].get_wallet_rpc("desc2")
130130
send_wrpc = self.nodes[0].get_wallet_rpc("desc1")
131131

@@ -175,19 +175,19 @@ def run_test(self):
175175
enc_rpc.getnewaddress() # Makes sure that we can get a new address from a born encrypted wallet
176176

177177
self.log.info("Test blank descriptor wallets")
178-
self.nodes[0].createwallet(wallet_name='desc_blank', blank=True, descriptors=True)
178+
self.nodes[0].createwallet(wallet_name='desc_blank', blank=True)
179179
blank_rpc = self.nodes[0].get_wallet_rpc('desc_blank')
180180
assert_raises_rpc_error(-4, 'This wallet has no available keys', blank_rpc.getnewaddress)
181181

182182
self.log.info("Test descriptor wallet with disabled private keys")
183-
self.nodes[0].createwallet(wallet_name='desc_no_priv', disable_private_keys=True, descriptors=True)
183+
self.nodes[0].createwallet(wallet_name='desc_no_priv', disable_private_keys=True)
184184
nopriv_rpc = self.nodes[0].get_wallet_rpc('desc_no_priv')
185185
assert_raises_rpc_error(-4, 'This wallet has no available keys', nopriv_rpc.getnewaddress)
186186

187187
self.log.info("Test descriptor exports")
188-
self.nodes[0].createwallet(wallet_name='desc_export', descriptors=True)
188+
self.nodes[0].createwallet(wallet_name='desc_export')
189189
exp_rpc = self.nodes[0].get_wallet_rpc('desc_export')
190-
self.nodes[0].createwallet(wallet_name='desc_import', disable_private_keys=True, descriptors=True)
190+
self.nodes[0].createwallet(wallet_name='desc_import', disable_private_keys=True)
191191
imp_rpc = self.nodes[0].get_wallet_rpc('desc_import')
192192

193193
addr_types = [('legacy', False, 'pkh(', '44h/1h/0h', -13),
@@ -244,7 +244,7 @@ def run_test(self):
244244
assert_equal(exp_addr, imp_addr)
245245

246246
self.log.info("Test that loading descriptor wallet containing legacy key types throws error")
247-
self.nodes[0].createwallet(wallet_name="crashme", descriptors=True)
247+
self.nodes[0].createwallet(wallet_name="crashme")
248248
self.nodes[0].unloadwallet("crashme")
249249
wallet_db = self.nodes[0].wallets_path / "crashme" / self.wallet_data_filename
250250
conn = sqlite3.connect(wallet_db)

test/functional/wallet_fast_rescan.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def run_test(self):
3737

3838
self.log.info("Create descriptor wallet with backup")
3939
WALLET_BACKUP_FILENAME = node.datadir_path / 'wallet.bak'
40-
node.createwallet(wallet_name='topup_test', descriptors=True)
40+
node.createwallet(wallet_name='topup_test')
4141
w = node.get_wallet_rpc('topup_test')
4242
fixed_key = get_generate_key()
4343
print(w.importdescriptors([{"desc": descsum_create(f"wpkh({fixed_key.privkey})"), "timestamp": "now"}]))
@@ -66,7 +66,7 @@ def run_test(self):
6666
txids_fast = self.get_wallet_txids(node, 'rescan_fast')
6767

6868
self.log.info("Import non-active descriptors with block filter index")
69-
node.createwallet(wallet_name='rescan_fast_nonactive', descriptors=True, disable_private_keys=True, blank=True)
69+
node.createwallet(wallet_name='rescan_fast_nonactive', disable_private_keys=True, blank=True)
7070
with node.assert_debug_log(['fast variant using block filters']):
7171
w = node.get_wallet_rpc('rescan_fast_nonactive')
7272
w.importdescriptors([{"desc": descriptor['desc'], "timestamp": 0} for descriptor in descriptors])
@@ -79,7 +79,7 @@ def run_test(self):
7979
txids_slow = self.get_wallet_txids(node, 'rescan_slow')
8080

8181
self.log.info("Import non-active descriptors w/o block filter index")
82-
node.createwallet(wallet_name='rescan_slow_nonactive', descriptors=True, disable_private_keys=True, blank=True)
82+
node.createwallet(wallet_name='rescan_slow_nonactive', disable_private_keys=True, blank=True)
8383
with node.assert_debug_log(['slow variant inspecting all blocks']):
8484
w = node.get_wallet_rpc('rescan_slow_nonactive')
8585
w.importdescriptors([{"desc": descriptor['desc'], "timestamp": 0} for descriptor in descriptors])

test/functional/wallet_importdescriptors.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ def test_importdesc(self, req, success, error_code=None, error_message=None, war
6565

6666
def run_test(self):
6767
self.log.info('Setting up wallets')
68-
self.nodes[0].createwallet(wallet_name='w0', disable_private_keys=False, descriptors=True)
68+
self.nodes[0].createwallet(wallet_name='w0', disable_private_keys=False)
6969
w0 = self.nodes[0].get_wallet_rpc('w0')
7070

71-
self.nodes[1].createwallet(wallet_name='w1', disable_private_keys=True, blank=True, descriptors=True)
71+
self.nodes[1].createwallet(wallet_name='w1', disable_private_keys=True, blank=True)
7272
w1 = self.nodes[1].get_wallet_rpc('w1')
7373
assert_equal(w1.getwalletinfo()['keypoolsize'], 0)
7474

75-
self.nodes[1].createwallet(wallet_name="wpriv", disable_private_keys=False, blank=True, descriptors=True)
75+
self.nodes[1].createwallet(wallet_name="wpriv", disable_private_keys=False, blank=True)
7676
wpriv = self.nodes[1].get_wallet_rpc("wpriv")
7777
assert_equal(wpriv.getwalletinfo()['keypoolsize'], 0)
7878

@@ -428,7 +428,7 @@ def run_test(self):
428428

429429
# Make sure that we can use import and use multisig as addresses
430430
self.log.info('Test that multisigs can be imported, signed for, and getnewaddress\'d')
431-
self.nodes[1].createwallet(wallet_name="wmulti_priv", disable_private_keys=False, blank=True, descriptors=True)
431+
self.nodes[1].createwallet(wallet_name="wmulti_priv", disable_private_keys=False, blank=True)
432432
wmulti_priv = self.nodes[1].get_wallet_rpc("wmulti_priv")
433433
assert_equal(wmulti_priv.getwalletinfo()['keypoolsize'], 0)
434434

@@ -472,7 +472,7 @@ def run_test(self):
472472
assert_equal(len(decoded['vin'][0]['txinwitness']), 4)
473473
self.sync_all()
474474

475-
self.nodes[1].createwallet(wallet_name="wmulti_pub", disable_private_keys=True, blank=True, descriptors=True)
475+
self.nodes[1].createwallet(wallet_name="wmulti_pub", disable_private_keys=True, blank=True)
476476
wmulti_pub = self.nodes[1].get_wallet_rpc("wmulti_pub")
477477
assert_equal(wmulti_pub.getwalletinfo()['keypoolsize'], 0)
478478

@@ -515,7 +515,7 @@ def run_test(self):
515515
self.nodes[1].loadwallet('wmulti_pub')
516516

517517
self.log.info("Multisig with distributed keys")
518-
self.nodes[1].createwallet(wallet_name="wmulti_priv1", descriptors=True)
518+
self.nodes[1].createwallet(wallet_name="wmulti_priv1")
519519
wmulti_priv1 = self.nodes[1].get_wallet_rpc("wmulti_priv1")
520520
res = wmulti_priv1.importdescriptors([
521521
{
@@ -538,7 +538,7 @@ def run_test(self):
538538
assert_equal(res[1]['success'], True)
539539
assert_equal(res[1]['warnings'][0], 'Not all private keys provided. Some wallet functionality may return unexpected errors')
540540

541-
self.nodes[1].createwallet(wallet_name='wmulti_priv2', blank=True, descriptors=True)
541+
self.nodes[1].createwallet(wallet_name='wmulti_priv2', blank=True)
542542
wmulti_priv2 = self.nodes[1].get_wallet_rpc('wmulti_priv2')
543543
res = wmulti_priv2.importdescriptors([
544544
{
@@ -569,7 +569,7 @@ def run_test(self):
569569
self.nodes[1].sendrawtransaction(tx_signed_2['hex'])
570570

571571
self.log.info("We can create and use a huge multisig under P2WSH")
572-
self.nodes[1].createwallet(wallet_name='wmulti_priv_big', blank=True, descriptors=True)
572+
self.nodes[1].createwallet(wallet_name='wmulti_priv_big', blank=True)
573573
wmulti_priv_big = self.nodes[1].get_wallet_rpc('wmulti_priv_big')
574574
xkey = "tprv8ZgxMBicQKsPeZSeYx7VXDDTs3XrTcmZQpRLbAeSQFCQGgKwR4gKpcxHaKdoTNHniv4EPDJNdzA3KxRrrBHcAgth8fU5X4oCndkkxk39iAt/*"
575575
xkey_int = "tprv8ZgxMBicQKsPeZSeYx7VXDDTs3XrTcmZQpRLbAeSQFCQGgKwR4gKpcxHaKdoTNHniv4EPDJNdzA3KxRrrBHcAgth8fU5X4oCndkkxk39iAt/1/*"
@@ -605,7 +605,7 @@ def run_test(self):
605605
self.log.info("Under P2SH, multisig are standard with up to 15 "
606606
"compressed keys")
607607
self.nodes[1].createwallet(wallet_name='multi_priv_big_legacy',
608-
blank=True, descriptors=True)
608+
blank=True)
609609
multi_priv_big = self.nodes[1].get_wallet_rpc('multi_priv_big_legacy')
610610
res = multi_priv_big.importdescriptors([
611611
{
@@ -634,7 +634,7 @@ def run_test(self):
634634
decoded = multi_priv_big.gettransaction(txid=txid, verbose=True)['decoded']
635635

636636
self.log.info("Amending multisig with new private keys")
637-
self.nodes[1].createwallet(wallet_name="wmulti_priv3", descriptors=True)
637+
self.nodes[1].createwallet(wallet_name="wmulti_priv3")
638638
wmulti_priv3 = self.nodes[1].get_wallet_rpc("wmulti_priv3")
639639
res = wmulti_priv3.importdescriptors([
640640
{
@@ -685,13 +685,13 @@ def run_test(self):
685685
"range": [0,4000],
686686
"next_index": 4000}
687687

688-
self.nodes[0].createwallet("temp_wallet", blank=True, descriptors=True)
688+
self.nodes[0].createwallet("temp_wallet", blank=True)
689689
temp_wallet = self.nodes[0].get_wallet_rpc("temp_wallet")
690690
temp_wallet.importdescriptors([descriptor])
691691
self.generatetoaddress(self.nodes[0], COINBASE_MATURITY + 1, temp_wallet.getnewaddress())
692692
self.generatetoaddress(self.nodes[0], COINBASE_MATURITY + 1, temp_wallet.getnewaddress())
693693

694-
self.nodes[0].createwallet("encrypted_wallet", blank=True, descriptors=True, passphrase="passphrase")
694+
self.nodes[0].createwallet("encrypted_wallet", blank=True, passphrase="passphrase")
695695
encrypted_wallet = self.nodes[0].get_wallet_rpc("encrypted_wallet")
696696

697697
descriptor["timestamp"] = 0
@@ -720,9 +720,9 @@ def run_test(self):
720720
assert_equal(temp_wallet.getbalance(), encrypted_wallet.getbalance())
721721

722722
self.log.info("Multipath descriptors")
723-
self.nodes[1].createwallet(wallet_name="multipath", descriptors=True, blank=True)
723+
self.nodes[1].createwallet(wallet_name="multipath", blank=True)
724724
w_multipath = self.nodes[1].get_wallet_rpc("multipath")
725-
self.nodes[1].createwallet(wallet_name="multipath_split", descriptors=True, blank=True)
725+
self.nodes[1].createwallet(wallet_name="multipath_split", blank=True)
726726
w_multisplit = self.nodes[1].get_wallet_rpc("multipath_split")
727727
timestamp = int(time.time())
728728

test/functional/wallet_listdescriptors.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ def run_test(self):
3434
assert_raises_rpc_error(-18, 'No wallet is loaded.', node.listdescriptors)
3535

3636
self.log.info('Test the command for empty descriptors wallet.')
37-
node.createwallet(wallet_name='w2', blank=True, descriptors=True)
37+
node.createwallet(wallet_name='w2', blank=True)
3838
assert_equal(0, len(node.get_wallet_rpc('w2').listdescriptors()['descriptors']))
3939

4040
self.log.info('Test the command for a default descriptors wallet.')
41-
node.createwallet(wallet_name='w3', descriptors=True)
41+
node.createwallet(wallet_name='w3')
4242
result = node.get_wallet_rpc('w3').listdescriptors()
4343
assert_equal("w3", result['wallet_name'])
4444
assert_equal(8, len(result['descriptors']))
@@ -101,7 +101,7 @@ def run_test(self):
101101
assert_equal(expected_private, wallet.listdescriptors(True))
102102

103103
self.log.info('Test list private descriptors with watch-only wallet')
104-
node.createwallet(wallet_name='watch-only', descriptors=True, disable_private_keys=True)
104+
node.createwallet(wallet_name='watch-only', disable_private_keys=True)
105105
watch_only_wallet = node.get_wallet_rpc('watch-only')
106106
watch_only_wallet.importdescriptors([{
107107
'desc': descsum_create('wpkh(' + xpub_acc + ')'),
@@ -110,7 +110,7 @@ def run_test(self):
110110
assert_raises_rpc_error(-4, 'Can\'t get descriptor string', watch_only_wallet.listdescriptors, True)
111111

112112
self.log.info('Test non-active non-range combo descriptor')
113-
node.createwallet(wallet_name='w4', blank=True, descriptors=True)
113+
node.createwallet(wallet_name='w4', blank=True)
114114
wallet = node.get_wallet_rpc('w4')
115115
wallet.importdescriptors([{
116116
'desc': descsum_create('combo(' + node.get_deterministic_priv_key().key + ')'),

test/functional/wallet_listsinceblock.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ def test_desc(self):
421421
# Create a watchonly wallet tracking two multisig descriptors.
422422
multi_a = descsum_create("wsh(multi(1,tpubD6NzVbkrYhZ4YBNjUo96Jxd1u4XKWgnoc7LsA1jz3Yc2NiDbhtfBhaBtemB73n9V5vtJHwU6FVXwggTbeoJWQ1rzdz8ysDuQkpnaHyvnvzR/*,tpubD6NzVbkrYhZ4YHdDGMAYGaWxMSC1B6tPRTHuU5t3BcfcS3nrF523iFm5waFd1pP3ZvJt4Jr8XmCmsTBNx5suhcSgtzpGjGMASR3tau1hJz4/*))")
423423
multi_b = descsum_create("wsh(multi(1,tpubD6NzVbkrYhZ4YHdDGMAYGaWxMSC1B6tPRTHuU5t3BcfcS3nrF523iFm5waFd1pP3ZvJt4Jr8XmCmsTBNx5suhcSgtzpGjGMASR3tau1hJz4/*,tpubD6NzVbkrYhZ4Y2RLiuEzNQkntjmsLpPYDm3LTRBYynUQtDtpzeUKAcb9sYthSFL3YR74cdFgF5mW8yKxv2W2CWuZDFR2dUpE5PF9kbrVXNZ/*))")
424-
self.nodes[0].createwallet(wallet_name="wo", descriptors=True, disable_private_keys=True)
424+
self.nodes[0].createwallet(wallet_name="wo", disable_private_keys=True)
425425
wo_wallet = self.nodes[0].get_wallet_rpc("wo")
426426
wo_wallet.importdescriptors([
427427
{

test/functional/wallet_miniscript.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,10 +322,10 @@ def run_test(self):
322322
self.log.info("Making a descriptor wallet")
323323
self.funder = self.nodes[0].get_wallet_rpc(self.default_wallet_name)
324324
self.nodes[0].createwallet(
325-
wallet_name="ms_wo", descriptors=True, disable_private_keys=True
325+
wallet_name="ms_wo", disable_private_keys=True
326326
)
327327
self.ms_wo_wallet = self.nodes[0].get_wallet_rpc("ms_wo")
328-
self.nodes[0].createwallet(wallet_name="ms_sig", descriptors=True)
328+
self.nodes[0].createwallet(wallet_name="ms_sig")
329329
self.ms_sig_wallet = self.nodes[0].get_wallet_rpc("ms_sig")
330330

331331
# Sanity check we wouldn't let an insane Miniscript descriptor in

test/functional/wallet_miniscript_decaying_multisig_descriptor_psbt.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def _get_xpub(wallet, internal):
3737

3838
def create_multisig(self, external_xpubs, internal_xpubs):
3939
"""The multisig is created by importing the following descriptors. The resulting wallet is watch-only and every signer can do this."""
40-
self.node.createwallet(wallet_name=f"{self.name}", blank=True, descriptors=True, disable_private_keys=True)
40+
self.node.createwallet(wallet_name=f"{self.name}", blank=True, disable_private_keys=True)
4141
multisig = self.node.get_wallet_rpc(f"{self.name}")
4242
# spending policy: `thresh(4,pk(key_1),pk(key_2),pk(key_3),pk(key_4),after(t1),after(t2),after(t3))`
4343
# IMPORTANT: when backing up your descriptor, the order of key_1...key_4 must be correct!
@@ -72,14 +72,14 @@ def run_test(self):
7272
self.log.info(f"Testing a miniscript multisig which starts as 4-of-4 and 'decays' to 3-of-4 at block height {self.locktimes[0]}, 2-of-4 at {self.locktimes[1]}, and finally 1-of-4 at {self.locktimes[2]}...")
7373

7474
self.log.info("Create the signer wallets and get their xpubs...")
75-
signers = [self.node.get_wallet_rpc(self.node.createwallet(wallet_name=f"signer_{i}", descriptors=True)["name"]) for i in range(self.N)]
75+
signers = [self.node.get_wallet_rpc(self.node.createwallet(wallet_name=f"signer_{i}")["name"]) for i in range(self.N)]
7676
external_xpubs, internal_xpubs = [[self._get_xpub(signer, internal) for signer in signers] for internal in [False, True]]
7777

7878
self.log.info("Create the watch-only decaying multisig using signers' xpubs...")
7979
multisig = self.create_multisig(external_xpubs, internal_xpubs)
8080

8181
self.log.info("Get a mature utxo to send to the multisig...")
82-
coordinator_wallet = self.node.get_wallet_rpc(self.node.createwallet(wallet_name="coordinator", descriptors=True)["name"])
82+
coordinator_wallet = self.node.get_wallet_rpc(self.node.createwallet(wallet_name="coordinator")["name"])
8383
self.generatetoaddress(self.node, 101, coordinator_wallet.getnewaddress())
8484

8585
self.log.info("Send funds to the multisig's receiving address...")

test/functional/wallet_multisig_descriptor_psbt.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def _check_psbt(psbt, to, value, multisig):
4747
def participants_create_multisigs(self, external_xpubs, internal_xpubs):
4848
"""The multisig is created by importing the following descriptors. The resulting wallet is watch-only and every participant can do this."""
4949
for i, node in enumerate(self.nodes):
50-
node.createwallet(wallet_name=f"{self.name}_{i}", blank=True, descriptors=True, disable_private_keys=True)
50+
node.createwallet(wallet_name=f"{self.name}_{i}", blank=True, disable_private_keys=True)
5151
multisig = node.get_wallet_rpc(f"{self.name}_{i}")
5252
external = multisig.getdescriptorinfo(f"wsh(sortedmulti({self.M},{','.join(external_xpubs)}))")
5353
internal = multisig.getdescriptorinfo(f"wsh(sortedmulti({self.M},{','.join(internal_xpubs)}))")
@@ -77,7 +77,7 @@ def run_test(self):
7777
participants = {
7878
# Every participant generates an xpub. The most straightforward way is to create a new descriptor wallet.
7979
# This wallet will be the participant's `signer` for the resulting multisig. Avoid reusing this wallet for any other purpose (for privacy reasons).
80-
"signers": [node.get_wallet_rpc(node.createwallet(wallet_name=f"participant_{self.nodes.index(node)}", descriptors=True)["name"]) for node in self.nodes],
80+
"signers": [node.get_wallet_rpc(node.createwallet(wallet_name=f"participant_{self.nodes.index(node)}")["name"]) for node in self.nodes],
8181
# After participants generate and exchange their xpubs they will each create their own watch-only multisig.
8282
# Note: these multisigs are all the same, this just highlights that each participant can independently verify everything on their own node.
8383
"multisigs": []

0 commit comments

Comments
 (0)