MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / run_test

Method run_test

test/functional/wallet_keypool.py:26–191  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

24 self.skip_if_no_wallet()
25
26 def run_test(self):
27 nodes = self.nodes
28 addr_before_encrypting = nodes[0].getnewaddress()
29 addr_before_encrypting_data = nodes[0].getaddressinfo(addr_before_encrypting)
30
31 # Encrypt wallet and wait to terminate
32 nodes[0].encryptwallet('test')
33 # Import hardened derivation only descriptors
34 nodes[0].walletpassphrase('test', 10)
35 nodes[0].importdescriptors([
36 {
37 "desc": descsum_create(f"wpkh({ExtendedPrivateKey.generate().to_string()}/0h/*h)"),
38 "timestamp": "now",
39 "range": [0,0],
40 "active": True
41 },
42 {
43 "desc": descsum_create(f"pkh({ExtendedPrivateKey.generate().to_string()}/1h/*h)"),
44 "timestamp": "now",
45 "range": [0,0],
46 "active": True
47 },
48 {
49 "desc": descsum_create(f"sh(wpkh({ExtendedPrivateKey.generate().to_string()}/2h/*h))"),
50 "timestamp": "now",
51 "range": [0,0],
52 "active": True
53 },
54 {
55 "desc": descsum_create(f"wpkh({ExtendedPrivateKey.generate().to_string()}/3h/*h)"),
56 "timestamp": "now",
57 "range": [0,0],
58 "active": True,
59 "internal": True
60 },
61 {
62 "desc": descsum_create(f"pkh({ExtendedPrivateKey.generate().to_string()}/4h/*h)"),
63 "timestamp": "now",
64 "range": [0,0],
65 "active": True,
66 "internal": True
67 },
68 {
69 "desc": descsum_create(f"sh(wpkh({ExtendedPrivateKey.generate().to_string()}/5h/*h))"),
70 "timestamp": "now",
71 "range": [0,0],
72 "active": True,
73 "internal": True
74 }
75 ])
76 nodes[0].walletlock()
77 # Keep creating keys
78 addr = nodes[0].getnewaddress()
79 addr_data = nodes[0].getaddressinfo(addr)
80 assert_not_equal(addr_before_encrypting_data['hdmasterfingerprint'], addr_data['hdmasterfingerprint'])
81 assert_raises_rpc_error(-12, "Error: Keypool ran out, please call keypoolrefill first", nodes[0].getnewaddress)
82
83 # put six (plus 2) new keys in the keypool (100% external-, +100% internal-keys, 1 in min)

Callers

nothing calls this directly

Calls 12

descsum_createFunction · 0.90
assert_not_equalFunction · 0.90
assert_raises_rpc_errorFunction · 0.90
WalletUnlockClass · 0.90
assert_equalFunction · 0.90
getnewaddressMethod · 0.80
get_wallet_rpcMethod · 0.80
listunspentMethod · 0.80
to_stringMethod · 0.45
generateMethod · 0.45
addMethod · 0.45
wait_untilMethod · 0.45

Tested by

no test coverage detected