|
|
@ -100,11 +100,19 @@ class WalletTest(BitcoinTestFramework): |
|
|
|
# Exercise locking of unspent outputs |
|
|
|
# Exercise locking of unspent outputs |
|
|
|
unspent_0 = self.nodes[2].listunspent()[0] |
|
|
|
unspent_0 = self.nodes[2].listunspent()[0] |
|
|
|
unspent_0 = {"txid": unspent_0["txid"], "vout": unspent_0["vout"]} |
|
|
|
unspent_0 = {"txid": unspent_0["txid"], "vout": unspent_0["vout"]} |
|
|
|
|
|
|
|
assert_raises_rpc_error(-8, "Invalid parameter, expected locked output", self.nodes[2].lockunspent, True, [unspent_0]) |
|
|
|
self.nodes[2].lockunspent(False, [unspent_0]) |
|
|
|
self.nodes[2].lockunspent(False, [unspent_0]) |
|
|
|
|
|
|
|
assert_raises_rpc_error(-8, "Invalid parameter, output already locked", self.nodes[2].lockunspent, False, [unspent_0]) |
|
|
|
assert_raises_rpc_error(-4, "Insufficient funds", self.nodes[2].sendtoaddress, self.nodes[2].getnewaddress(), 20) |
|
|
|
assert_raises_rpc_error(-4, "Insufficient funds", self.nodes[2].sendtoaddress, self.nodes[2].getnewaddress(), 20) |
|
|
|
assert_equal([unspent_0], self.nodes[2].listlockunspent()) |
|
|
|
assert_equal([unspent_0], self.nodes[2].listlockunspent()) |
|
|
|
self.nodes[2].lockunspent(True, [unspent_0]) |
|
|
|
self.nodes[2].lockunspent(True, [unspent_0]) |
|
|
|
assert_equal(len(self.nodes[2].listlockunspent()), 0) |
|
|
|
assert_equal(len(self.nodes[2].listlockunspent()), 0) |
|
|
|
|
|
|
|
assert_raises_rpc_error(-8, "Invalid parameter, unknown transaction", |
|
|
|
|
|
|
|
self.nodes[2].lockunspent, False, |
|
|
|
|
|
|
|
[{"txid": "0000000000000000000000000000000000", "vout": 0}]) |
|
|
|
|
|
|
|
assert_raises_rpc_error(-8, "Invalid parameter, vout index out of bounds", |
|
|
|
|
|
|
|
self.nodes[2].lockunspent, False, |
|
|
|
|
|
|
|
[{"txid": unspent_0["txid"], "vout": 999}]) |
|
|
|
|
|
|
|
|
|
|
|
# Have node1 generate 100 blocks (so node0 can recover the fee) |
|
|
|
# Have node1 generate 100 blocks (so node0 can recover the fee) |
|
|
|
self.nodes[1].generate(100) |
|
|
|
self.nodes[1].generate(100) |
|
|
@ -143,6 +151,10 @@ class WalletTest(BitcoinTestFramework): |
|
|
|
assert_equal(self.nodes[2].getbalance(), 94) |
|
|
|
assert_equal(self.nodes[2].getbalance(), 94) |
|
|
|
assert_equal(self.nodes[2].getbalance("from1"), 94-21) |
|
|
|
assert_equal(self.nodes[2].getbalance("from1"), 94-21) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Verify that a spent output cannot be locked anymore |
|
|
|
|
|
|
|
spent_0 = {"txid": node0utxos[0]["txid"], "vout": node0utxos[0]["vout"]} |
|
|
|
|
|
|
|
assert_raises_rpc_error(-8, "Invalid parameter, expected unspent output", self.nodes[0].lockunspent, False, [spent_0]) |
|
|
|
|
|
|
|
|
|
|
|
# Send 10 BTC normal |
|
|
|
# Send 10 BTC normal |
|
|
|
address = self.nodes[0].getnewaddress("test") |
|
|
|
address = self.nodes[0].getnewaddress("test") |
|
|
|
fee_per_byte = Decimal('0.001') / 1000 |
|
|
|
fee_per_byte = Decimal('0.001') / 1000 |
|
|
|