|
|
@ -10,10 +10,8 @@ |
|
|
|
which are not included in a block and are not currently in the mempool. It has |
|
|
|
which are not included in a block and are not currently in the mempool. It has |
|
|
|
no effect on transactions which are already conflicted or abandoned. |
|
|
|
no effect on transactions which are already conflicted or abandoned. |
|
|
|
""" |
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
from test_framework.test_framework import BitcoinTestFramework |
|
|
|
from test_framework.test_framework import BitcoinTestFramework |
|
|
|
from test_framework.util import * |
|
|
|
from test_framework.util import * |
|
|
|
import urllib.parse |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AbandonConflictTest(BitcoinTestFramework): |
|
|
|
class AbandonConflictTest(BitcoinTestFramework): |
|
|
|
def __init__(self): |
|
|
|
def __init__(self): |
|
|
@ -37,8 +35,8 @@ class AbandonConflictTest(BitcoinTestFramework): |
|
|
|
assert(balance - newbalance < Decimal("0.001")) #no more than fees lost |
|
|
|
assert(balance - newbalance < Decimal("0.001")) #no more than fees lost |
|
|
|
balance = newbalance |
|
|
|
balance = newbalance |
|
|
|
|
|
|
|
|
|
|
|
url = urllib.parse.urlparse(self.nodes[1].url) |
|
|
|
# Disconnect nodes so node0's transactions don't get into node1's mempool |
|
|
|
self.nodes[0].disconnectnode(url.hostname+":"+str(p2p_port(1))) |
|
|
|
disconnect_nodes(self.nodes[0], 1) |
|
|
|
|
|
|
|
|
|
|
|
# Identify the 10btc outputs |
|
|
|
# Identify the 10btc outputs |
|
|
|
nA = next(i for i, vout in enumerate(self.nodes[0].getrawtransaction(txA, 1)["vout"]) if vout["value"] == Decimal("10")) |
|
|
|
nA = next(i for i, vout in enumerate(self.nodes[0].getrawtransaction(txA, 1)["vout"]) if vout["value"] == Decimal("10")) |
|
|
@ -78,8 +76,9 @@ class AbandonConflictTest(BitcoinTestFramework): |
|
|
|
stop_node(self.nodes[0],0) |
|
|
|
stop_node(self.nodes[0],0) |
|
|
|
self.nodes[0]=start_node(0, self.options.tmpdir, ["-minrelaytxfee=0.0001"]) |
|
|
|
self.nodes[0]=start_node(0, self.options.tmpdir, ["-minrelaytxfee=0.0001"]) |
|
|
|
|
|
|
|
|
|
|
|
# Verify txs no longer in mempool |
|
|
|
# Verify txs no longer in either node's mempool |
|
|
|
assert_equal(len(self.nodes[0].getrawmempool()), 0) |
|
|
|
assert_equal(len(self.nodes[0].getrawmempool()), 0) |
|
|
|
|
|
|
|
assert_equal(len(self.nodes[1].getrawmempool()), 0) |
|
|
|
|
|
|
|
|
|
|
|
# Not in mempool txs from self should only reduce balance |
|
|
|
# Not in mempool txs from self should only reduce balance |
|
|
|
# inputs are still spent, but change not received |
|
|
|
# inputs are still spent, but change not received |
|
|
|