15
15
from test_framework .util import (
16
16
assert_equal ,
17
17
assert_raises_rpc_error ,
18
+ get_mnemonic ,
18
19
)
19
20
20
21
@@ -32,25 +33,6 @@ def setup_network(self):
32
33
self .nodes [0 ].createwallet (self .default_wallet_name , blank = True , load_on_startup = True )
33
34
self .nodes [0 ].importprivkey (privkey = self .nodes [0 ].get_deterministic_priv_key ().key , label = 'coinbase' , rescan = True )
34
35
35
- # TODO: remove duplicated code with wallet_mnemonicbits.py
36
- def get_mnemonic (self , node ):
37
- if not self .options .descriptors :
38
- return node .dumphdinfo ()["mnemonic" ]
39
-
40
- mnemonic = None
41
- descriptors = node .listdescriptors (True )['descriptors' ]
42
- for desc in descriptors :
43
- if desc ['desc' ][:4 ] == 'pkh(' :
44
- if mnemonic is None :
45
- mnemonic = desc ['mnemonic' ]
46
- else :
47
- assert_equal (mnemonic , desc ['mnemonic' ])
48
- elif desc ['desc' ][:6 ] == 'combo(' :
49
- assert 'mnemonic' not in desc
50
- else :
51
- raise AssertionError (f"Unknown descriptor type: { desc ['desc' ]} " )
52
- return mnemonic
53
-
54
36
def recover_non_hd (self ):
55
37
self .log .info ("Recover non-HD wallet to check different upgrade paths" )
56
38
node = self .nodes [0 ]
@@ -68,7 +50,7 @@ def run_test(self):
68
50
assert 'hdchainid' not in node .getwalletinfo ()
69
51
balance_before = node .getbalance ()
70
52
assert node .upgradetohd ()
71
- mnemonic = self . get_mnemonic (node )
53
+ mnemonic = get_mnemonic (node )
72
54
if not self .options .descriptors :
73
55
chainid = node .getwalletinfo ()['hdchainid' ]
74
56
assert_equal (len (chainid ), 64 )
@@ -104,7 +86,7 @@ def run_test(self):
104
86
105
87
self .log .info ("No mnemonic, no mnemonic passphrase, no wallet passphrase, should result in completely different keys" )
106
88
assert node .upgradetohd ()
107
- assert mnemonic != self . get_mnemonic (node )
89
+ assert mnemonic != get_mnemonic (node )
108
90
if not self .options .descriptors :
109
91
assert chainid != node .getwalletinfo ()['hdchainid' ]
110
92
assert_equal (balance_non_HD , node .getbalance ())
@@ -119,7 +101,7 @@ def run_test(self):
119
101
self .restart_node (0 , extra_args = ['-keypool=10' ])
120
102
assert node .upgradetohd ("" , "" , "" , True )
121
103
# Completely different keys, no HD coins should be recovered
122
- assert mnemonic != self . get_mnemonic (node )
104
+ assert mnemonic != get_mnemonic (node )
123
105
if not self .options .descriptors :
124
106
assert chainid != node .getwalletinfo ()['hdchainid' ]
125
107
assert_equal (balance_non_HD , node .getbalance ())
@@ -129,7 +111,7 @@ def run_test(self):
129
111
self .log .info ("Same mnemonic, another mnemonic passphrase, no wallet passphrase, should result in a different set of keys" )
130
112
new_mnemonic_passphrase = "somewords"
131
113
assert node .upgradetohd (mnemonic , new_mnemonic_passphrase )
132
- assert_equal (mnemonic , self . get_mnemonic (node ))
114
+ assert_equal (mnemonic , get_mnemonic (node ))
133
115
if not self .options .descriptors :
134
116
new_chainid = node .getwalletinfo ()['hdchainid' ]
135
117
assert chainid != new_chainid
@@ -144,7 +126,7 @@ def run_test(self):
144
126
145
127
self .log .info ("Same mnemonic, another mnemonic passphrase, no wallet passphrase, should result in a different set of keys (again)" )
146
128
assert node .upgradetohd (mnemonic , new_mnemonic_passphrase )
147
- assert_equal (mnemonic , self . get_mnemonic (node ))
129
+ assert_equal (mnemonic , get_mnemonic (node ))
148
130
if not self .options .descriptors :
149
131
assert_equal (new_chainid , node .getwalletinfo ()['hdchainid' ])
150
132
assert_equal (balance_non_HD , node .getbalance ())
@@ -158,7 +140,7 @@ def run_test(self):
158
140
159
141
self .log .info ("Same mnemonic, no mnemonic passphrase, no wallet passphrase, should recover all coins after rescan" )
160
142
assert node .upgradetohd (mnemonic )
161
- assert_equal (mnemonic , self . get_mnemonic (node ))
143
+ assert_equal (mnemonic , get_mnemonic (node ))
162
144
if not self .options .descriptors :
163
145
assert_equal (chainid , node .getwalletinfo ()['hdchainid' ])
164
146
node .keypoolrefill (5 )
@@ -171,7 +153,7 @@ def run_test(self):
171
153
self .log .info ("Same mnemonic, no mnemonic passphrase, no wallet passphrase, large enough keepool, should recover all coins with no extra rescan" )
172
154
self .restart_node (0 , extra_args = ['-keypool=10' ])
173
155
assert node .upgradetohd (mnemonic )
174
- assert_equal (mnemonic , self . get_mnemonic (node ))
156
+ assert_equal (mnemonic , get_mnemonic (node ))
175
157
if not self .options .descriptors :
176
158
assert_equal (chainid , node .getwalletinfo ()['hdchainid' ])
177
159
# All coins should be recovered
@@ -182,7 +164,7 @@ def run_test(self):
182
164
self .log .info ("Same mnemonic, no mnemonic passphrase, no wallet passphrase, large enough keepool, rescan is skipped initially, should recover all coins after rescanblockchain" )
183
165
self .restart_node (0 , extra_args = ['-keypool=10' ])
184
166
assert node .upgradetohd (mnemonic , "" , "" , False )
185
- assert_equal (mnemonic , self . get_mnemonic (node ))
167
+ assert_equal (mnemonic , get_mnemonic (node ))
186
168
if not self .options .descriptors :
187
169
assert_equal (chainid , node .getwalletinfo ()['hdchainid' ])
188
170
assert balance_after != node .getbalance ()
@@ -200,7 +182,7 @@ def run_test(self):
200
182
self .start_node (0 , extra_args = ['-rescan' ])
201
183
assert_raises_rpc_error (- 13 , "Error: Please enter the wallet passphrase with walletpassphrase first." , node .dumphdinfo )
202
184
node .walletpassphrase (walletpass , 100 )
203
- assert_equal (mnemonic , self . get_mnemonic (node ))
185
+ assert_equal (mnemonic , get_mnemonic (node ))
204
186
if not self .options .descriptors :
205
187
assert_equal (chainid , node .getwalletinfo ()['hdchainid' ])
206
188
# Note: wallet encryption results in additional keypool topup,
@@ -237,7 +219,7 @@ def run_test(self):
237
219
else :
238
220
assert_raises_rpc_error (- 13 , "Error: Please enter the wallet passphrase with walletpassphrase first." , node .listdescriptors , True )
239
221
node .walletpassphrase (walletpass , 100 )
240
- assert_equal (mnemonic , self . get_mnemonic (node ))
222
+ assert_equal (mnemonic , get_mnemonic (node ))
241
223
if not self .options .descriptors :
242
224
assert_equal (chainid , node .getwalletinfo ()['hdchainid' ])
243
225
# Note: wallet encryption results in additional keypool topup,
0 commit comments