]>
Commit | Line | Data |
---|---|---|
730790f7 SB |
1 | #!/usr/bin/env python2 |
2 | ||
3 | # | |
d36098f8 | 4 | # Test joinsplit semantics |
730790f7 SB |
5 | # |
6 | ||
7 | from test_framework.test_framework import BitcoinTestFramework | |
8 | from test_framework.util import * | |
9 | from decimal import Decimal | |
10 | import os | |
11 | import shutil | |
12 | import sys | |
13 | ||
22de1602 | 14 | class JoinSplitTest(BitcoinTestFramework): |
730790f7 | 15 | def setup_network(self): |
6ca317e1 SB |
16 | self.nodes = [] |
17 | self.is_network_split = False | |
18 | self.nodes.append(start_node(0, self.options.tmpdir)) | |
730790f7 | 19 | |
6ca317e1 SB |
20 | def run_test(self): |
21 | zckeypair = self.nodes[0].zcrawkeygen() | |
a8ac403d SB |
22 | zcsecretkey = zckeypair["zcsecretkey"] |
23 | zcaddress = zckeypair["zcaddress"] | |
24 | ||
6ca317e1 SB |
25 | (total_in, inputs) = gather_inputs(self.nodes[0], 40) |
26 | protect_tx = self.nodes[0].createrawtransaction(inputs, {}) | |
85c9ecb8 | 27 | joinsplit_result = self.nodes[0].zcrawjoinsplit(protect_tx, {}, {zcaddress:39.99}, 39.99, 0) |
a8ac403d | 28 | |
d36098f8 | 29 | receive_result = self.nodes[0].zcrawreceive(zcsecretkey, joinsplit_result["encryptednote1"]) |
a8ac403d SB |
30 | assert_equal(receive_result["exists"], False) |
31 | ||
d36098f8 | 32 | protect_tx = self.nodes[0].signrawtransaction(joinsplit_result["rawtxn"]) |
6ca317e1 SB |
33 | self.nodes[0].sendrawtransaction(protect_tx["hex"]) |
34 | self.nodes[0].generate(1) | |
a8ac403d | 35 | |
d36098f8 | 36 | receive_result = self.nodes[0].zcrawreceive(zcsecretkey, joinsplit_result["encryptednote1"]) |
a8ac403d SB |
37 | assert_equal(receive_result["exists"], True) |
38 | ||
52676958 SB |
39 | # The pure joinsplit we create should be mined in the next block |
40 | # despite other transactions being in the mempool. | |
41 | addrtest = self.nodes[0].getnewaddress() | |
42 | for xx in range(0,10): | |
43 | self.nodes[0].generate(1) | |
44 | for x in range(0,50): | |
45 | self.nodes[0].sendtoaddress(addrtest, 0.01); | |
46 | ||
d36098f8 | 47 | joinsplit_tx = self.nodes[0].createrawtransaction([], {}) |
85c9ecb8 | 48 | joinsplit_result = self.nodes[0].zcrawjoinsplit(joinsplit_tx, {receive_result["note"] : zcsecretkey}, {zcaddress: 39.98}, 0, 0.01) |
a8ac403d | 49 | |
d36098f8 | 50 | self.nodes[0].sendrawtransaction(joinsplit_result["rawtxn"]) |
6ca317e1 | 51 | self.nodes[0].generate(1) |
6674f41c SB |
52 | |
53 | print "Done!" | |
d36098f8 | 54 | receive_result = self.nodes[0].zcrawreceive(zcsecretkey, joinsplit_result["encryptednote1"]) |
a8ac403d SB |
55 | assert_equal(receive_result["exists"], True) |
56 | ||
730790f7 | 57 | if __name__ == '__main__': |
22de1602 | 58 | JoinSplitTest().main() |