aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGregory Sanders <gsanders87@gmail.com>2020-08-02 23:29:11 -0400
committerGregory Sanders <gsanders87@gmail.com>2020-08-02 23:34:11 -0400
commit566aada386e181c2ff40ef18ee660a819f485415 (patch)
tree2a23cc21519c40e4e816fb3f87316c733ed3eb98 /test
parent0fea6ede1b46f5137e8ea0fbacce169d97e4a5ee (diff)
downloadbitcoin-566aada386e181c2ff40ef18ee660a819f485415.tar.xz
Test that wtxid relay peers add wtxid to reject filter
h/t Anthony Towns
Diffstat (limited to 'test')
-rwxr-xr-xtest/functional/p2p_segwit.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/test/functional/p2p_segwit.py b/test/functional/p2p_segwit.py
index 07efc36e67..e66beddbdb 100755
--- a/test/functional/p2p_segwit.py
+++ b/test/functional/p2p_segwit.py
@@ -174,6 +174,9 @@ class TestP2PConn(P2PInterface):
self.last_wtxidrelay.append(message)
def announce_tx_and_wait_for_getdata(self, tx, timeout=60, success=True, use_wtxid=False):
+ if success:
+ # sanity check
+ assert (self.wtxidrelay and use_wtxid) or (not self.wtxidrelay and not use_wtxid)
with mininode_lock:
self.last_message.pop("getdata", None)
if use_wtxid:
@@ -259,6 +262,8 @@ class SegWitTest(BitcoinTestFramework):
self.old_node = self.nodes[0].add_p2p_connection(TestP2PConn(), services=NODE_NETWORK)
# self.std_node is for testing node1 (fRequireStandard=true)
self.std_node = self.nodes[1].add_p2p_connection(TestP2PConn(), services=NODE_NETWORK | NODE_WITNESS)
+ # self.std_wtx_node is for testing node1 with wtxid relay
+ self.std_wtx_node = self.nodes[1].add_p2p_connection(TestP2PConn(wtxidrelay=True), services=NODE_NETWORK | NODE_WITNESS)
assert self.test_node.nServices & NODE_WITNESS != 0
@@ -1320,10 +1325,13 @@ class SegWitTest(BitcoinTestFramework):
tx3.rehash()
# Node will not be blinded to the transaction, requesting it any number of times
- # since it is being announced via txid relay.
+ # if it is being announced via txid relay.
+ # Node will be blinded to the transaction via wtxid, however.
self.std_node.announce_tx_and_wait_for_getdata(tx3)
+ self.std_wtx_node.announce_tx_and_wait_for_getdata(tx3, use_wtxid=True)
test_transaction_acceptance(self.nodes[1], self.std_node, tx3, True, False, 'tx-size')
self.std_node.announce_tx_and_wait_for_getdata(tx3)
+ self.std_wtx_node.announce_tx_and_wait_for_getdata(tx3, use_wtxid=True, success=False)
# Remove witness stuffing, instead add extra witness push on stack
tx3.vout[0] = CTxOut(tx2.vout[0].nValue - 1000, CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))