Changeset View
Changeset View
Standalone View
Standalone View
test/functional/wallet_importdescriptors.py
Show First 20 Lines • Show All 139 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
# # Test ranged descriptors | # # Test ranged descriptors | ||||
xpriv = "tprv8ZgxMBicQKsPeuVhWwi6wuMQGfPKi9Li5GtX35jVNknACgqe3CY4g5xgkfDDJcmtF7o1QnxWDRYw4H5P26PXq7sbcUkEqeR4fg3Kxp2tigg" | xpriv = "tprv8ZgxMBicQKsPeuVhWwi6wuMQGfPKi9Li5GtX35jVNknACgqe3CY4g5xgkfDDJcmtF7o1QnxWDRYw4H5P26PXq7sbcUkEqeR4fg3Kxp2tigg" | ||||
xpub = "tpubD6NzVbkrYhZ4YNXVQbNhMK1WqguFsUXceaVJKbmno2aZ3B6QfbMeraaYvnBSGpV3vxLyTTK9DYT1yoEck4XUScMzXoQ2U2oSmE2JyMedq3H" | xpub = "tpubD6NzVbkrYhZ4YNXVQbNhMK1WqguFsUXceaVJKbmno2aZ3B6QfbMeraaYvnBSGpV3vxLyTTK9DYT1yoEck4XUScMzXoQ2U2oSmE2JyMedq3H" | ||||
addresses = [ | addresses = [ | ||||
"2N7yv4p8G8yEaPddJxY41kPihnWvs39qCMf", | "2N7yv4p8G8yEaPddJxY41kPihnWvs39qCMf", | ||||
"2MsHxyb2JS3pAySeNUsJ7mNnurtpeenDzLA"] # hdkeypath=m/0'/0'/0' and 1' | "2MsHxyb2JS3pAySeNUsJ7mNnurtpeenDzLA"] # hdkeypath=m/0'/0'/0' and 1' | ||||
# wpkh subscripts corresponding to the above addresses | # wpkh subscripts corresponding to the above addresses | ||||
addresses += ["bchreg:prvn9ycvgr5atuyh49sua3mapskh2mnnzg34lqtyst", | addresses += ["abcreg:prvn9ycvgr5atuyh49sua3mapskh2mnnzgc8suadln", | ||||
"bchreg:pp3n087yx0njv2e5wcvltahfxqst7l66ruyuaun8qt"] | "abcreg:pp3n087yx0njv2e5wcvltahfxqst7l66rudwjq9w0n"] | ||||
desc = "sh(pkh(" + xpub + "/0/0/*" + "))" | desc = "sh(pkh(" + xpub + "/0/0/*" + "))" | ||||
self.log.info("Ranged descriptors cannot have labels") | self.log.info("Ranged descriptors cannot have labels") | ||||
self.test_importdesc({"desc": descsum_create(desc), | self.test_importdesc({"desc": descsum_create(desc), | ||||
"timestamp": "now", | "timestamp": "now", | ||||
"range": [0, 100], | "range": [0, 100], | ||||
"label": "test"}, | "label": "test"}, | ||||
success=False, | success=False, | ||||
▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
self.test_importdesc({"desc": descsum_create(desc), "timestamp": "now", "range": [0, 1000001]}, | self.test_importdesc({"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') | ||||
# Make sure ranged imports import keys in order | # Make sure ranged imports import keys in order | ||||
w1 = self.nodes[1].get_wallet_rpc('w1') | w1 = self.nodes[1].get_wallet_rpc('w1') | ||||
self.log.info('Key ranges should be imported in order') | self.log.info('Key ranges should be imported in order') | ||||
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 | ||||
] | ] | ||||
self.test_importdesc({'desc': descsum_create('sh(pkh([abcdef12/0h/0h]' + xpub + '/*))'), | self.test_importdesc({'desc': descsum_create('sh(pkh([abcdef12/0h/0h]' + xpub + '/*))'), | ||||
'active': True, | 'active': True, | ||||
'range': [0, 2], | 'range': [0, 2], | ||||
'timestamp': 'now' | 'timestamp': 'now' | ||||
}, | }, | ||||
success=True) | success=True) | ||||
Show All 31 Lines | def run_test(self): | ||||
}, | }, | ||||
success=True) | success=True) | ||||
assert_raises_rpc_error(-4, | assert_raises_rpc_error(-4, | ||||
'This wallet has no available keys', | 'This wallet has no available keys', | ||||
w1.getrawchangeaddress) | w1.getrawchangeaddress) | ||||
# # Test importing a descriptor containing a WIF private key | # # Test importing a descriptor containing a WIF private key | ||||
wif_priv = "cTe1f5rdT8A8DFgVWTjyPwACsDPJM9ff4QngFxUixCSvvbg1x6sh" | wif_priv = "cTe1f5rdT8A8DFgVWTjyPwACsDPJM9ff4QngFxUixCSvvbg1x6sh" | ||||
address = "bchreg:ppn85zpvym8cdccmgw8km6e48jfhnpa435c0djwhs6" | address = "abcreg:ppn85zpvym8cdccmgw8km6e48jfhnpa4353azwc7lz" | ||||
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_importdesc({"desc": descsum_create(desc), | self.test_importdesc({"desc": descsum_create(desc), | ||||
"timestamp": "now"}, | "timestamp": "now"}, | ||||
success=True, | success=True, | ||||
wallet=wpriv) | wallet=wpriv) | ||||
test_address(wpriv, | test_address(wpriv, | ||||
Show All 36 Lines | def run_test(self): | ||||
wallet=wmulti_priv) | wallet=wmulti_priv) | ||||
# Range end (1000) is inclusive, so 1001 addresses generated | # Range end (1000) is inclusive, so 1001 addresses generated | ||||
assert_equal(wmulti_priv.getwalletinfo()['keypoolsize'], 1001) | assert_equal(wmulti_priv.getwalletinfo()['keypoolsize'], 1001) | ||||
addr = wmulti_priv.getnewaddress('') | addr = wmulti_priv.getnewaddress('') | ||||
# Derived at m/84'/0'/0'/0 | # Derived at m/84'/0'/0'/0 | ||||
assert_equal( | assert_equal( | ||||
addr, | addr, | ||||
'bchreg:pzkcf26dw7np58jcspnpxaupgz9csnc3wsx25fa5q3') | 'abcreg:pzkcf26dw7np58jcspnpxaupgz9csnc3ws0cm4ta0f') | ||||
change_addr = wmulti_priv.getrawchangeaddress() | change_addr = wmulti_priv.getrawchangeaddress() | ||||
assert_equal( | assert_equal( | ||||
change_addr, | change_addr, | ||||
'bchreg:prnkfg7pxe3kpyv3l4v00ft6q3sfseag7vuj8tutcn') | 'abcreg:prnkfg7pxe3kpyv3l4v00ft6q3sfseag7v4qgh2zht') | ||||
assert_equal(wmulti_priv.getwalletinfo()['keypoolsize'], 1000) | assert_equal(wmulti_priv.getwalletinfo()['keypoolsize'], 1000) | ||||
txid = w0.sendtoaddress(addr, 10) | txid = w0.sendtoaddress(addr, 10) | ||||
self.nodes[0].generate(6) | self.nodes[0].generate(6) | ||||
self.nodes[0].generate(6) | self.nodes[0].generate(6) | ||||
self.sync_all() | self.sync_all() | ||||
Show All 23 Lines | def run_test(self): | ||||
# The first one was already consumed by previous import and is detected | # The first one was already consumed by previous import and is detected | ||||
# as used | # as used | ||||
assert_equal(wmulti_pub.getwalletinfo()['keypoolsize'], 1000) | assert_equal(wmulti_pub.getwalletinfo()['keypoolsize'], 1000) | ||||
addr = wmulti_pub.getnewaddress('') | addr = wmulti_pub.getnewaddress('') | ||||
# Derived at m/84'/0'/0'/1 | # Derived at m/84'/0'/0'/1 | ||||
assert_equal( | assert_equal( | ||||
addr, | addr, | ||||
'bchreg:pr5xql8r03jp5dvrep22dns59vf7hhykr5u98cj6hh') | 'abcreg:pr5xql8r03jp5dvrep22dns59vf7hhykr54hgyync0') | ||||
change_addr = wmulti_pub.getrawchangeaddress() | change_addr = wmulti_pub.getrawchangeaddress() | ||||
assert_equal( | assert_equal( | ||||
change_addr, | change_addr, | ||||
'bchreg:prnkfg7pxe3kpyv3l4v00ft6q3sfseag7vuj8tutcn') | 'abcreg:prnkfg7pxe3kpyv3l4v00ft6q3sfseag7v4qgh2zht') | ||||
assert_equal(wmulti_pub.getwalletinfo()['keypoolsize'], 999) | assert_equal(wmulti_pub.getwalletinfo()['keypoolsize'], 999) | ||||
txid = w0.sendtoaddress(addr, 10) | txid = w0.sendtoaddress(addr, 10) | ||||
vout = find_vout_for_address(self.nodes[0], txid, addr) | vout = find_vout_for_address(self.nodes[0], txid, addr) | ||||
self.nodes[0].generate(6) | self.nodes[0].generate(6) | ||||
self.sync_all() | self.sync_all() | ||||
assert_equal(wmulti_pub.getbalance(), wmulti_priv.getbalance()) | assert_equal(wmulti_pub.getbalance(), wmulti_priv.getbalance()) | ||||
▲ Show 20 Lines • Show All 89 Lines • Show Last 20 Lines |