Changeset View
Changeset View
Standalone View
Standalone View
test/functional/rpc_rawtransaction.py
Show First 20 Lines • Show All 102 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
# | # | ||||
# 2of2 test | # 2of2 test | ||||
addr1 = self.nodes[2].getnewaddress() | addr1 = self.nodes[2].getnewaddress() | ||||
addr2 = self.nodes[2].getnewaddress() | addr2 = self.nodes[2].getnewaddress() | ||||
addr1Obj = self.nodes[2].validateaddress(addr1) | addr1Obj = self.nodes[2].validateaddress(addr1) | ||||
addr2Obj = self.nodes[2].validateaddress(addr2) | addr2Obj = self.nodes[2].validateaddress(addr2) | ||||
mSigObj = self.nodes[2].addmultisigaddress( | # Tests for createmultisig and addmultisigaddress | ||||
assert_raises_rpc_error(-5, "Invalid public key", | |||||
self.nodes[0].createmultisig, 1, ["01020304"]) | |||||
# createmultisig can only take public keys | |||||
self.nodes[0].createmultisig( | |||||
2, [addr1Obj['pubkey'], addr2Obj['pubkey']]) | 2, [addr1Obj['pubkey'], addr2Obj['pubkey']]) | ||||
# addmultisigaddress can take both pubkeys and addresses so long as they are in the wallet, which is tested here. | |||||
assert_raises_rpc_error(-5, "Invalid public key", | |||||
self.nodes[0].createmultisig, 2, [addr1Obj['pubkey'], addr1]) | |||||
mSigObj = self.nodes[2].addmultisigaddress( | |||||
2, [addr1Obj['pubkey'], addr1])['address'] | |||||
# use balance deltas instead of absolute values | # use balance deltas instead of absolute values | ||||
bal = self.nodes[2].getbalance() | bal = self.nodes[2].getbalance() | ||||
# send 1.2 BTC to msig adr | # send 1.2 BTC to msig adr | ||||
txId = self.nodes[0].sendtoaddress(mSigObj, 1.2) | txId = self.nodes[0].sendtoaddress(mSigObj, 1.2) | ||||
self.sync_all() | self.sync_all() | ||||
self.nodes[0].generate(1) | self.nodes[0].generate(1) | ||||
self.sync_all() | self.sync_all() | ||||
# node2 has both keys of the 2of2 ms addr., tx should affect the | # node2 has both keys of the 2of2 ms addr., tx should affect the | ||||
# balance | # balance | ||||
assert_equal(self.nodes[2].getbalance(), bal + Decimal('1.20000000')) | assert_equal(self.nodes[2].getbalance(), bal + Decimal('1.20000000')) | ||||
# 2of3 test from different nodes | # 2of3 test from different nodes | ||||
bal = self.nodes[2].getbalance() | bal = self.nodes[2].getbalance() | ||||
addr1 = self.nodes[1].getnewaddress() | addr1 = self.nodes[1].getnewaddress() | ||||
addr2 = self.nodes[2].getnewaddress() | addr2 = self.nodes[2].getnewaddress() | ||||
addr3 = self.nodes[2].getnewaddress() | addr3 = self.nodes[2].getnewaddress() | ||||
addr1Obj = self.nodes[1].validateaddress(addr1) | addr1Obj = self.nodes[1].validateaddress(addr1) | ||||
addr2Obj = self.nodes[2].validateaddress(addr2) | addr2Obj = self.nodes[2].validateaddress(addr2) | ||||
addr3Obj = self.nodes[2].validateaddress(addr3) | addr3Obj = self.nodes[2].validateaddress(addr3) | ||||
mSigObj = self.nodes[2].addmultisigaddress( | mSigObj = self.nodes[2].addmultisigaddress( | ||||
2, [addr1Obj['pubkey'], addr2Obj['pubkey'], addr3Obj['pubkey']]) | 2, [addr1Obj['pubkey'], addr2Obj['pubkey'], addr3Obj['pubkey']])['address'] | ||||
txId = self.nodes[0].sendtoaddress(mSigObj, 2.2) | txId = self.nodes[0].sendtoaddress(mSigObj, 2.2) | ||||
decTx = self.nodes[0].gettransaction(txId) | decTx = self.nodes[0].gettransaction(txId) | ||||
rawTx = self.nodes[0].decoderawtransaction(decTx['hex']) | rawTx = self.nodes[0].decoderawtransaction(decTx['hex']) | ||||
sPK = rawTx['vout'][0]['scriptPubKey']['hex'] | sPK = rawTx['vout'][0]['scriptPubKey']['hex'] | ||||
self.sync_all() | self.sync_all() | ||||
self.nodes[0].generate(1) | self.nodes[0].generate(1) | ||||
self.sync_all() | self.sync_all() | ||||
▲ Show 20 Lines • Show All 44 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
bal = self.nodes[2].getbalance() | bal = self.nodes[2].getbalance() | ||||
addr1 = self.nodes[1].getnewaddress() | addr1 = self.nodes[1].getnewaddress() | ||||
addr2 = self.nodes[2].getnewaddress() | addr2 = self.nodes[2].getnewaddress() | ||||
addr1Obj = self.nodes[1].validateaddress(addr1) | addr1Obj = self.nodes[1].validateaddress(addr1) | ||||
addr2Obj = self.nodes[2].validateaddress(addr2) | addr2Obj = self.nodes[2].validateaddress(addr2) | ||||
self.nodes[1].addmultisigaddress( | self.nodes[1].addmultisigaddress( | ||||
2, [addr1Obj['pubkey'], addr2Obj['pubkey']]) | 2, [addr1Obj['pubkey'], addr2Obj['pubkey']])['address'] | ||||
mSigObj = self.nodes[2].addmultisigaddress( | mSigObj = self.nodes[2].addmultisigaddress( | ||||
2, [addr1Obj['pubkey'], addr2Obj['pubkey']]) | 2, [addr1Obj['pubkey'], addr2Obj['pubkey']])['address'] | ||||
mSigObjValid = self.nodes[2].validateaddress(mSigObj) | mSigObjValid = self.nodes[2].validateaddress(mSigObj) | ||||
txId = self.nodes[0].sendtoaddress(mSigObj, 2.2) | txId = self.nodes[0].sendtoaddress(mSigObj, 2.2) | ||||
decTx = self.nodes[0].gettransaction(txId) | decTx = self.nodes[0].gettransaction(txId) | ||||
rawTx2 = self.nodes[0].decoderawtransaction(decTx['hex']) | rawTx2 = self.nodes[0].decoderawtransaction(decTx['hex']) | ||||
self.sync_all() | self.sync_all() | ||||
self.nodes[0].generate(1) | self.nodes[0].generate(1) | ||||
self.sync_all() | self.sync_all() | ||||
▲ Show 20 Lines • Show All 132 Lines • Show Last 20 Lines |