Changeset View
Changeset View
Standalone View
Standalone View
test/functional/wallet_importmulti.py
Show First 20 Lines • Show All 62 Lines • ▼ Show 20 Lines | def test_importmulti(self, req, success, error_code=None, | ||||
assert_equal(result[0]['error']['message'], error_message) | assert_equal(result[0]['error']['message'], error_message) | ||||
def run_test(self): | def run_test(self): | ||||
self.log.info("Mining blocks...") | self.log.info("Mining blocks...") | ||||
self.nodes[0].generate(1) | self.nodes[0].generate(1) | ||||
self.nodes[1].generate(1) | self.nodes[1].generate(1) | ||||
timestamp = self.nodes[1].getblock( | timestamp = self.nodes[1].getblock( | ||||
self.nodes[1].getbestblockhash())['mediantime'] | self.nodes[1].getbestblockhash())['mediantime'] | ||||
self.nodes[1].syncwithvalidationinterfacequeue() | |||||
node0_address1 = self.nodes[0].getaddressinfo( | node0_address1 = self.nodes[0].getaddressinfo( | ||||
self.nodes[0].getnewaddress()) | self.nodes[0].getnewaddress()) | ||||
# Check only one address | # Check only one address | ||||
assert_equal(node0_address1['ismine'], True) | assert_equal(node0_address1['ismine'], True) | ||||
# Node 1 sync test | # Node 1 sync test | ||||
▲ Show 20 Lines • Show All 188 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
# P2SH address | # P2SH address | ||||
multisig = get_multisig(self.nodes[0]) | multisig = get_multisig(self.nodes[0]) | ||||
self.nodes[1].generate(100) | self.nodes[1].generate(100) | ||||
self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00) | self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00) | ||||
self.nodes[1].generate(1) | self.nodes[1].generate(1) | ||||
timestamp = self.nodes[1].getblock( | timestamp = self.nodes[1].getblock( | ||||
self.nodes[1].getbestblockhash())['mediantime'] | self.nodes[1].getbestblockhash())['mediantime'] | ||||
self.nodes[1].syncwithvalidationinterfacequeue() | |||||
self.log.info("Should import a p2sh") | self.log.info("Should import a p2sh") | ||||
self.test_importmulti({"scriptPubKey": {"address": multisig.p2sh_addr}, | self.test_importmulti({"scriptPubKey": {"address": multisig.p2sh_addr}, | ||||
"timestamp": "now"}, | "timestamp": "now"}, | ||||
success=True) | success=True) | ||||
test_address(self.nodes[1], | test_address(self.nodes[1], | ||||
multisig.p2sh_addr, | multisig.p2sh_addr, | ||||
isscript=True, | isscript=True, | ||||
iswatchonly=True, | iswatchonly=True, | ||||
timestamp=timestamp) | timestamp=timestamp) | ||||
p2shunspent = self.nodes[1].listunspent( | p2shunspent = self.nodes[1].listunspent( | ||||
0, 999999, [multisig.p2sh_addr])[0] | 0, 999999, [multisig.p2sh_addr])[0] | ||||
assert_equal(p2shunspent['spendable'], False) | assert_equal(p2shunspent['spendable'], False) | ||||
assert_equal(p2shunspent['solvable'], False) | assert_equal(p2shunspent['solvable'], False) | ||||
# P2SH + Redeem script | # P2SH + Redeem script | ||||
multisig = get_multisig(self.nodes[0]) | multisig = get_multisig(self.nodes[0]) | ||||
self.nodes[1].generate(100) | self.nodes[1].generate(100) | ||||
self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00) | self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00) | ||||
self.nodes[1].generate(1) | self.nodes[1].generate(1) | ||||
timestamp = self.nodes[1].getblock( | timestamp = self.nodes[1].getblock( | ||||
self.nodes[1].getbestblockhash())['mediantime'] | self.nodes[1].getbestblockhash())['mediantime'] | ||||
self.nodes[1].syncwithvalidationinterfacequeue() | |||||
self.log.info("Should import a p2sh with respective redeem script") | self.log.info("Should import a p2sh with respective redeem script") | ||||
self.test_importmulti({"scriptPubKey": {"address": multisig.p2sh_addr}, | self.test_importmulti({"scriptPubKey": {"address": multisig.p2sh_addr}, | ||||
"timestamp": "now", | "timestamp": "now", | ||||
"redeemscript": multisig.redeem_script}, | "redeemscript": multisig.redeem_script}, | ||||
success=True, | success=True, | ||||
warnings=["Some private keys are missing, outputs will be considered watchonly. If this is intentional, specify the watchonly flag."]) | warnings=["Some private keys are missing, outputs will be considered watchonly. If this is intentional, specify the watchonly flag."]) | ||||
test_address( | test_address( | ||||
Show All 11 Lines | def run_test(self): | ||||
# P2SH + Redeem script + Private Keys + !Watchonly | # P2SH + Redeem script + Private Keys + !Watchonly | ||||
multisig = get_multisig(self.nodes[0]) | multisig = get_multisig(self.nodes[0]) | ||||
self.nodes[1].generate(100) | self.nodes[1].generate(100) | ||||
self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00) | self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00) | ||||
self.nodes[1].generate(1) | self.nodes[1].generate(1) | ||||
timestamp = self.nodes[1].getblock( | timestamp = self.nodes[1].getblock( | ||||
self.nodes[1].getbestblockhash())['mediantime'] | self.nodes[1].getbestblockhash())['mediantime'] | ||||
self.nodes[1].syncwithvalidationinterfacequeue() | |||||
self.log.info( | self.log.info( | ||||
"Should import a p2sh with respective redeem script and private keys") | "Should import a p2sh with respective redeem script and private keys") | ||||
self.test_importmulti({"scriptPubKey": {"address": multisig.p2sh_addr}, | self.test_importmulti({"scriptPubKey": {"address": multisig.p2sh_addr}, | ||||
"timestamp": "now", | "timestamp": "now", | ||||
"redeemscript": multisig.redeem_script, | "redeemscript": multisig.redeem_script, | ||||
"keys": multisig.privkeys[0:2]}, | "keys": multisig.privkeys[0:2]}, | ||||
success=True, | success=True, | ||||
Show All 12 Lines | def run_test(self): | ||||
# P2SH + Redeem script + Private Keys + Watchonly | # P2SH + Redeem script + Private Keys + Watchonly | ||||
multisig = get_multisig(self.nodes[0]) | multisig = get_multisig(self.nodes[0]) | ||||
self.nodes[1].generate(100) | self.nodes[1].generate(100) | ||||
self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00) | self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00) | ||||
self.nodes[1].generate(1) | self.nodes[1].generate(1) | ||||
timestamp = self.nodes[1].getblock( | timestamp = self.nodes[1].getblock( | ||||
self.nodes[1].getbestblockhash())['mediantime'] | self.nodes[1].getbestblockhash())['mediantime'] | ||||
self.nodes[1].syncwithvalidationinterfacequeue() | |||||
self.log.info( | self.log.info( | ||||
"Should import a p2sh with respective redeem script and private keys") | "Should import a p2sh with respective redeem script and private keys") | ||||
self.test_importmulti({"scriptPubKey": {"address": multisig.p2sh_addr}, | self.test_importmulti({"scriptPubKey": {"address": multisig.p2sh_addr}, | ||||
"timestamp": "now", | "timestamp": "now", | ||||
"redeemscript": multisig.redeem_script, | "redeemscript": multisig.redeem_script, | ||||
"keys": multisig.privkeys[0:2], | "keys": multisig.privkeys[0:2], | ||||
"watchonly": True}, | "watchonly": True}, | ||||
▲ Show 20 Lines • Show All 430 Lines • Show Last 20 Lines |