Changeset View
Changeset View
Standalone View
Standalone View
test/functional/wallet_importmulti.py
Show First 20 Lines • Show All 484 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
success=False, | success=False, | ||||
error_code=-5, | error_code=-5, | ||||
error_message='Missing checksum') | error_message='Missing checksum') | ||||
# Test ranged descriptor fails if range is not specified | # Test ranged descriptor fails if range is not specified | ||||
xpriv = "tprv8ZgxMBicQKsPeuVhWwi6wuMQGfPKi9Li5GtX35jVNknACgqe3CY4g5xgkfDDJcmtF7o1QnxWDRYw4H5P26PXq7sbcUkEqeR4fg3Kxp2tigg" | xpriv = "tprv8ZgxMBicQKsPeuVhWwi6wuMQGfPKi9Li5GtX35jVNknACgqe3CY4g5xgkfDDJcmtF7o1QnxWDRYw4H5P26PXq7sbcUkEqeR4fg3Kxp2tigg" | ||||
# hdkeypath=m/0'/0'/0' and 1' | # hdkeypath=m/0'/0'/0' and 1' | ||||
addresses = [ | addresses = [ | ||||
"bchreg:prvn9ycvgr5atuyh49sua3mapskh2mnnzg34lqtyst", | "abcreg:prvn9ycvgr5atuyh49sua3mapskh2mnnzgc8suadln", | ||||
"bchreg:pp3n087yx0njv2e5wcvltahfxqst7l66ruyuaun8qt"] | "abcreg:pp3n087yx0njv2e5wcvltahfxqst7l66rudwjq9w0n"] | ||||
# pkh subscripts corresponding to the above addresses | # pkh subscripts corresponding to the above addresses | ||||
addresses += [ | addresses += [ | ||||
"bchreg:qqdkxd2xnzftq2p8wr3sqqyw8lntap7tncl2076yur", | "abcreg:qqdkxd2xnzftq2p8wr3sqqyw8lntap7tnckcqzvdnm", | ||||
"bchreg:qpyryy83jfaec5u0gpzldk6teadsuq8zly0fwmm3pq", | "abcreg:qpyryy83jfaec5u0gpzldk6teadsuq8zlyxmp8dcwc", | ||||
] | ] | ||||
desc = "sh(pkh(" + xpriv + "/0'/0'/*'" + "))" | desc = "sh(pkh(" + xpriv + "/0'/0'/*'" + "))" | ||||
self.log.info( | self.log.info( | ||||
"Ranged descriptor import should fail without a specified range") | "Ranged descriptor import should fail without a specified range") | ||||
self.test_importmulti({"desc": descsum_create(desc), | self.test_importmulti({"desc": descsum_create(desc), | ||||
"timestamp": "now"}, | "timestamp": "now"}, | ||||
success=False, | success=False, | ||||
error_code=-8, | error_code=-8, | ||||
Show All 24 Lines | def run_test(self): | ||||
self.test_importmulti({"desc": descsum_create(desc), "timestamp": "now", "range": [0, 1000001]}, | self.test_importmulti({"desc": descsum_create(desc), "timestamp": "now", "range": [0, 1000001]}, | ||||
success=False, error_code=-8, error_message='Range is too large') | success=False, error_code=-8, error_message='Range is too large') | ||||
# Test importing a descriptor containing a WIF private key | # Test importing a descriptor containing a WIF private key | ||||
wif_priv = "cTe1f5rdT8A8DFgVWTjyPwACsDPJM9ff4QngFxUixCSvvbg1x6sh" | wif_priv = "cTe1f5rdT8A8DFgVWTjyPwACsDPJM9ff4QngFxUixCSvvbg1x6sh" | ||||
# Note: in Core's test, this address refers to the sh(wpkh()) address. | # Note: in Core's test, this address refers to the sh(wpkh()) address. | ||||
# For a sh(pkh()) this does not refer to a key, so we use the subscript | # For a sh(pkh()) this does not refer to a key, so we use the subscript | ||||
# address instead, which returns the same privkey. | # address instead, which returns the same privkey. | ||||
address = "bchreg:qzh6rch6st3wjvp0h2ud87gn7xnxvf6h8yvgavjk6t" | address = "abcreg:qzh6rch6st3wjvp0h2ud87gn7xnxvf6h8y96jsyl4n" | ||||
desc = "sh(pkh(" + wif_priv + "))" | desc = "sh(pkh(" + wif_priv + "))" | ||||
self.log.info( | self.log.info( | ||||
"Should import a descriptor with a WIF private key as spendable") | "Should import a descriptor with a WIF private key as spendable") | ||||
self.test_importmulti({"desc": descsum_create(desc), | self.test_importmulti({"desc": descsum_create(desc), | ||||
"timestamp": "now"}, | "timestamp": "now"}, | ||||
success=True) | success=True) | ||||
test_address(self.nodes[1], | test_address(self.nodes[1], | ||||
address, | address, | ||||
▲ Show 20 Lines • Show All 217 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
# Make sure ranged imports import keys in order | # Make sure ranged imports import keys in order | ||||
self.log.info('Key ranges should be imported in order') | self.log.info('Key ranges should be imported in order') | ||||
wrpc = self.nodes[1].get_wallet_rpc("noprivkeys") | wrpc = self.nodes[1].get_wallet_rpc("noprivkeys") | ||||
assert_equal(wrpc.getwalletinfo()["keypoolsize"], 0) | assert_equal(wrpc.getwalletinfo()["keypoolsize"], 0) | ||||
assert_equal(wrpc.getwalletinfo()["private_keys_enabled"], False) | assert_equal(wrpc.getwalletinfo()["private_keys_enabled"], False) | ||||
xpub = "tpubDAXcJ7s7ZwicqjprRaEWdPoHKrCS215qxGYxpusRLLmJuT69ZSicuGdSfyvyKpvUNYBW1s2U3NSrT6vrCYB9e6nZUEvrqnwXPF8ArTCRXMY" | xpub = "tpubDAXcJ7s7ZwicqjprRaEWdPoHKrCS215qxGYxpusRLLmJuT69ZSicuGdSfyvyKpvUNYBW1s2U3NSrT6vrCYB9e6nZUEvrqnwXPF8ArTCRXMY" | ||||
addresses = [ | addresses = [ | ||||
'bchreg:qp0v86h53rc92hjrlpwzpjtdlgzsxu25svryj39hul', # m/0'/0'/0 | 'abcreg:qp0v86h53rc92hjrlpwzpjtdlgzsxu25sv2kadn7n8', # m/0'/0'/0 | ||||
'bchreg:qqasy0zlkdleqt4pkn8fs4ehm5gnnz6qpgzxm0035q', # m/0'/0'/1 | 'abcreg:qqasy0zlkdleqt4pkn8fs4ehm5gnnz6qpgt55necmc', # m/0'/0'/1 | ||||
'bchreg:qp0sp4wlhctvprqvdt2dgvqcfdjssu04xgk64mmwew', # m/0'/0'/2 | 'abcreg:qp0sp4wlhctvprqvdt2dgvqcfdjssu04xglg68d8kk', # m/0'/0'/2 | ||||
'bchreg:qrhn24tegn04cptfv4ldhtkduxq55zcwryhvnfcm3r', # m/0'/0'/3 | 'abcreg:qrhn24tegn04cptfv4ldhtkduxq55zcwry77u4wj7m', # m/0'/0'/3 | ||||
'bchreg:qzpqhett2uwltq803vrxv7zkqhft5vsnmca8ds9jjp', # m/0'/0'/4 | 'abcreg:qzpqhett2uwltq803vrxv7zkqhft5vsnmc54zvnmae', # m/0'/0'/4 | ||||
] | ] | ||||
result = wrpc.importmulti( | result = wrpc.importmulti( | ||||
[{ | [{ | ||||
'desc': descsum_create('pkh([80002067/0h/0h]' + xpub + '/*)'), | 'desc': descsum_create('pkh([80002067/0h/0h]' + xpub + '/*)'), | ||||
'keypool': True, | 'keypool': True, | ||||
'timestamp': 'now', | 'timestamp': 'now', | ||||
'range': [0, 4], | 'range': [0, 4], | ||||
}] | }] | ||||
Show All 9 Lines |