|
4 | 4 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. |
5 | 5 | from decimal import Decimal |
6 | 6 |
|
7 | | -from test_framework.blocktools import COINBASE_MATURITY |
8 | 7 | from test_framework.test_framework import BitcoinTestFramework |
9 | 8 | from test_framework.util import ( |
10 | 9 | assert_equal, |
11 | 10 | ) |
12 | 11 |
|
13 | 12 | class WalletTest(BitcoinTestFramework): |
14 | 13 | def set_test_params(self): |
15 | | - self.setup_clean_chain = True |
16 | 14 | self.num_nodes = 3 |
17 | 15 | self.extra_args = [[ |
18 | 16 | "-blindedaddresses=1", |
19 | | - "-initialfreecoins=2100000000000000", |
20 | | - "-con_blocksubsidy=0", |
21 | | - "-con_connect_genesis_outputs=1", |
22 | | - "-txindex=1", |
23 | 17 | "-minrelaytxfee=0", |
24 | 18 | "-blockmintxfee=0", |
25 | 19 | "-mintxfee=0", |
26 | 20 | ]] * self.num_nodes |
27 | | - self.extra_args[0].append("-anyonecanspendaremine=1") |
28 | 21 |
|
29 | 22 | def skip_test_if_missing_module(self): |
30 | 23 | self.skip_if_no_wallet() |
31 | 24 |
|
32 | 25 | def run_test(self): |
33 | | - self.generate(self.nodes[0], COINBASE_MATURITY + 1) |
34 | | - self.sync_all() |
| 26 | + # initial state when setup_clean_chain is False |
| 27 | + assert_equal(self.nodes[0].getbalance(), {'bitcoin': Decimal('1250')}) |
| 28 | + assert_equal(self.nodes[1].getbalance(), {'bitcoin': Decimal('1250')}) |
| 29 | + assert_equal(self.nodes[2].getbalance(), {'bitcoin': Decimal('1250')}) |
| 30 | + assert_equal(self.nodes[0].getblockchaininfo()["blocks"], 200) |
35 | 31 |
|
36 | | - new_addr = self.nodes[1].getnewaddress() |
37 | | - self.nodes[0].sendtoaddress(new_addr, 10) |
| 32 | + self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 10) |
38 | 33 | self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 20) |
39 | 34 | self.generate(self.nodes[0], 1) |
40 | | - assert_equal(self.nodes[0].getblockchaininfo()["blocks"], 102) |
41 | | - assert_equal(self.nodes[0].getbalance(), {'bitcoin': Decimal('20999969.99900900')}) |
42 | | - assert_equal(self.nodes[1].getbalance(), {'bitcoin': Decimal('10.00000000')}) |
43 | | - assert_equal(self.nodes[2].getbalance(), {'bitcoin': Decimal('20.00000000')}) |
| 35 | + assert_equal(self.nodes[0].getblockchaininfo()["blocks"], 201) |
| 36 | + assert_equal(self.nodes[0].getbalance(), {'bitcoin': Decimal('1269.99897200')}) |
| 37 | + assert_equal(self.nodes[1].getbalance(), {'bitcoin': Decimal('1260')}) |
| 38 | + assert_equal(self.nodes[2].getbalance(), {'bitcoin': Decimal('1270')}) |
44 | 39 |
|
| 40 | + # send a zero fee_rate transaction, which should not add a fee output |
45 | 41 | addr = self.nodes[1].getnewaddress() |
46 | | - txid = self.nodes[0].sendtoaddress(addr, 1, None, None, None, None, None, None, None, None, None, 0, False) |
47 | | - tx = self.nodes[0].gettransaction(txid) |
48 | | - assert_equal(tx["fee"]["bitcoin"], 0) |
49 | | - hex = self.nodes[0].getrawtransaction(txid) |
| 42 | + txid = self.nodes[0].sendtoaddress(address=addr, amount=1, fee_rate=0) |
| 43 | + tx = self.nodes[0].getrawtransaction(txid, 2) |
| 44 | + # there should be no fees |
| 45 | + assert "bitcoin" not in tx["fee"] |
| 46 | + assert_equal(tx["fee"], {}) |
| 47 | + # and no fee output |
| 48 | + assert_equal(len(tx["vout"]),2) |
| 49 | + for output in tx["vout"]: |
| 50 | + assert output["scriptPubKey"]["type"] != "fee" |
| 51 | + |
50 | 52 | self.generate(self.nodes[0], 1) |
51 | | - assert_equal(self.nodes[0].getblockchaininfo()["blocks"], 103) |
52 | | - |
53 | | - decoded = self.nodes[0].decoderawtransaction(hex) |
54 | | - # there should be no fee output |
55 | | - assert_equal(decoded["fee"], {}) |
56 | | - assert_equal(len(decoded["vout"]),2) |
57 | | - assert_equal(self.nodes[0].getbalance(), {'bitcoin': Decimal('20999968.99900900')}) |
58 | | - assert_equal(self.nodes[1].getbalance(), {'bitcoin': Decimal('11.00000000')}) |
59 | | - assert_equal(self.nodes[2].getbalance(), {'bitcoin': Decimal('20.00000000')}) |
| 53 | + assert_equal(self.nodes[0].getblockchaininfo()["blocks"], 202) |
| 54 | + |
| 55 | + assert_equal(self.nodes[0].getbalance(), {'bitcoin': Decimal('1318.99897200')}) |
| 56 | + assert_equal(self.nodes[1].getbalance(), {'bitcoin': Decimal('1261')}) |
| 57 | + assert_equal(self.nodes[2].getbalance(), {'bitcoin': Decimal('1270')}) |
60 | 58 |
|
61 | 59 | if __name__ == '__main__': |
62 | 60 | WalletTest().main() |
0 commit comments