diff options
Diffstat (limited to 'qa/rpc-tests/wallet-hd.py')
-rwxr-xr-x | qa/rpc-tests/wallet-hd.py | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/qa/rpc-tests/wallet-hd.py b/qa/rpc-tests/wallet-hd.py deleted file mode 100755 index c40662dc3d..0000000000 --- a/qa/rpc-tests/wallet-hd.py +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (c) 2016 The Bitcoin Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. -"""Test Hierarchical Deterministic wallet function.""" - -from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - start_nodes, - start_node, - assert_equal, - connect_nodes_bi, - assert_start_raises_init_error -) -import os -import shutil - - -class WalletHDTest(BitcoinTestFramework): - - def __init__(self): - super().__init__() - self.setup_clean_chain = True - self.num_nodes = 2 - self.node_args = [['-usehd=0'], ['-usehd=1', '-keypool=0']] - - def setup_network(self): - self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, self.node_args) - self.is_network_split = False - connect_nodes_bi(self.nodes, 0, 1) - - def run_test (self): - tmpdir = self.options.tmpdir - - # Make sure can't switch off usehd after wallet creation - self.stop_node(1) - assert_start_raises_init_error(1, self.options.tmpdir, ['-usehd=0'], 'already existing HD wallet') - self.nodes[1] = start_node(1, self.options.tmpdir, self.node_args[1]) - connect_nodes_bi(self.nodes, 0, 1) - - # Make sure we use hd, keep masterkeyid - masterkeyid = self.nodes[1].getwalletinfo()['hdmasterkeyid'] - assert_equal(len(masterkeyid), 40) - - # Import a non-HD private key in the HD wallet - non_hd_add = self.nodes[0].getnewaddress() - self.nodes[1].importprivkey(self.nodes[0].dumpprivkey(non_hd_add)) - - # This should be enough to keep the master key and the non-HD key - self.nodes[1].backupwallet(tmpdir + "/hd.bak") - #self.nodes[1].dumpwallet(tmpdir + "/hd.dump") - - # Derive some HD addresses and remember the last - # Also send funds to each add - self.nodes[0].generate(101) - hd_add = None - num_hd_adds = 300 - for i in range(num_hd_adds): - hd_add = self.nodes[1].getnewaddress() - hd_info = self.nodes[1].validateaddress(hd_add) - assert_equal(hd_info["hdkeypath"], "m/0'/0'/"+str(i+1)+"'") - assert_equal(hd_info["hdmasterkeyid"], masterkeyid) - self.nodes[0].sendtoaddress(hd_add, 1) - self.nodes[0].generate(1) - self.nodes[0].sendtoaddress(non_hd_add, 1) - self.nodes[0].generate(1) - - self.sync_all() - assert_equal(self.nodes[1].getbalance(), num_hd_adds + 1) - - self.log.info("Restore backup ...") - self.stop_node(1) - os.remove(self.options.tmpdir + "/node1/regtest/wallet.dat") - shutil.copyfile(tmpdir + "/hd.bak", tmpdir + "/node1/regtest/wallet.dat") - self.nodes[1] = start_node(1, self.options.tmpdir, self.node_args[1]) - #connect_nodes_bi(self.nodes, 0, 1) - - # Assert that derivation is deterministic - hd_add_2 = None - for _ in range(num_hd_adds): - hd_add_2 = self.nodes[1].getnewaddress() - hd_info_2 = self.nodes[1].validateaddress(hd_add_2) - assert_equal(hd_info_2["hdkeypath"], "m/0'/0'/"+str(_+1)+"'") - assert_equal(hd_info_2["hdmasterkeyid"], masterkeyid) - assert_equal(hd_add, hd_add_2) - - # Needs rescan - self.stop_node(1) - self.nodes[1] = start_node(1, self.options.tmpdir, self.node_args[1] + ['-rescan']) - #connect_nodes_bi(self.nodes, 0, 1) - assert_equal(self.nodes[1].getbalance(), num_hd_adds + 1) - - -if __name__ == '__main__': - WalletHDTest().main () |