Changeset View
Changeset View
Standalone View
Standalone View
test/functional/wallet_hd.py
Show All 21 Lines | def set_test_params(self): | ||||
self.extra_args = [[], ['-keypool=0']] | self.extra_args = [[], ['-keypool=0']] | ||||
def skip_test_if_missing_module(self): | def skip_test_if_missing_module(self): | ||||
self.skip_if_no_wallet() | self.skip_if_no_wallet() | ||||
def run_test(self): | def run_test(self): | ||||
# Make sure we use hd, keep masterkeyid | # Make sure we use hd, keep masterkeyid | ||||
masterkeyid = self.nodes[1].getwalletinfo()['hdseedid'] | masterkeyid = self.nodes[1].getwalletinfo()['hdseedid'] | ||||
assert_equal(masterkeyid, self.nodes[1].getwalletinfo()[ | |||||
'hdmasterkeyid']) | |||||
assert_equal(len(masterkeyid), 40) | assert_equal(len(masterkeyid), 40) | ||||
# create an internal key | # create an internal key | ||||
change_addr = self.nodes[1].getrawchangeaddress() | change_addr = self.nodes[1].getrawchangeaddress() | ||||
change_addrV = self.nodes[1].getaddressinfo(change_addr) | change_addrV = self.nodes[1].getaddressinfo(change_addr) | ||||
# first internal child key | # first internal child key | ||||
assert_equal(change_addrV["hdkeypath"], "m/0'/1'/0'") | assert_equal(change_addrV["hdkeypath"], "m/0'/1'/0'") | ||||
Show All 11 Lines | def run_test(self): | ||||
self.nodes[0].generate(101) | self.nodes[0].generate(101) | ||||
hd_add = None | hd_add = None | ||||
NUM_HD_ADDS = 10 | NUM_HD_ADDS = 10 | ||||
for i in range(NUM_HD_ADDS): | for i in range(NUM_HD_ADDS): | ||||
hd_add = self.nodes[1].getnewaddress() | hd_add = self.nodes[1].getnewaddress() | ||||
hd_info = self.nodes[1].getaddressinfo(hd_add) | hd_info = self.nodes[1].getaddressinfo(hd_add) | ||||
assert_equal(hd_info["hdkeypath"], "m/0'/0'/" + str(i) + "'") | assert_equal(hd_info["hdkeypath"], "m/0'/0'/" + str(i) + "'") | ||||
assert_equal(hd_info["hdseedid"], masterkeyid) | assert_equal(hd_info["hdseedid"], masterkeyid) | ||||
assert_equal(hd_info["hdmasterkeyid"], masterkeyid) | |||||
self.nodes[0].sendtoaddress(hd_add, 1) | self.nodes[0].sendtoaddress(hd_add, 1) | ||||
self.nodes[0].generate(1) | self.nodes[0].generate(1) | ||||
self.nodes[0].sendtoaddress(non_hd_add, 1) | self.nodes[0].sendtoaddress(non_hd_add, 1) | ||||
self.nodes[0].generate(1) | self.nodes[0].generate(1) | ||||
# create an internal key (again) | # create an internal key (again) | ||||
change_addr = self.nodes[1].getrawchangeaddress() | change_addr = self.nodes[1].getrawchangeaddress() | ||||
change_addrV = self.nodes[1].getaddressinfo(change_addr) | change_addrV = self.nodes[1].getaddressinfo(change_addr) | ||||
Show All 17 Lines | def run_test(self): | ||||
# Assert that derivation is deterministic | # Assert that derivation is deterministic | ||||
hd_add_2 = None | hd_add_2 = None | ||||
for i in range(NUM_HD_ADDS): | for i in range(NUM_HD_ADDS): | ||||
hd_add_2 = self.nodes[1].getnewaddress() | hd_add_2 = self.nodes[1].getnewaddress() | ||||
hd_info_2 = self.nodes[1].getaddressinfo(hd_add_2) | hd_info_2 = self.nodes[1].getaddressinfo(hd_add_2) | ||||
assert_equal(hd_info_2["hdkeypath"], "m/0'/0'/" + str(i) + "'") | assert_equal(hd_info_2["hdkeypath"], "m/0'/0'/" + str(i) + "'") | ||||
assert_equal(hd_info_2["hdseedid"], masterkeyid) | assert_equal(hd_info_2["hdseedid"], masterkeyid) | ||||
assert_equal(hd_info_2["hdmasterkeyid"], masterkeyid) | |||||
assert_equal(hd_add, hd_add_2) | assert_equal(hd_add, hd_add_2) | ||||
connect_nodes_bi(self.nodes[0], self.nodes[1]) | connect_nodes_bi(self.nodes[0], self.nodes[1]) | ||||
self.sync_all() | self.sync_all() | ||||
# Needs rescan | # Needs rescan | ||||
self.stop_node(1) | self.stop_node(1) | ||||
self.start_node(1, extra_args=self.extra_args[1] + ['-rescan']) | self.start_node(1, extra_args=self.extra_args[1] + ['-rescan']) | ||||
assert_equal(self.nodes[1].getbalance(), NUM_HD_ADDS + 1) | assert_equal(self.nodes[1].getbalance(), NUM_HD_ADDS + 1) | ||||
▲ Show 20 Lines • Show All 91 Lines • Show Last 20 Lines |