Skip to content

Commit

Permalink
test: Update test framework p2p protocol version to 70016
Browse files Browse the repository at this point in the history
This new p2p protocol version allows to use WTXIDs for tx relay.
  • Loading branch information
fjahr authored and sdaftuar committed Jul 19, 2020
1 parent dd78d1d commit 9a5392f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
25 changes: 23 additions & 2 deletions test/functional/test_framework/messages.py
Expand Up @@ -31,7 +31,7 @@
from test_framework.util import hex_str_to_bytes, assert_equal

MIN_VERSION_SUPPORTED = 60001
MY_VERSION = 70014 # past bip-31 for ping/pong
MY_VERSION = 70016 # past wtxid relay
MY_SUBVERSION = b"/python-mininode-tester:0.0.3/"
MY_RELAY = 1 # from version 70001 onwards, fRelay should be appended to version messages (BIP37)

Expand Down Expand Up @@ -59,6 +59,7 @@
MSG_BLOCK = 2
MSG_FILTERED_BLOCK = 3
MSG_CMPCT_BLOCK = 4
MSG_WTX = 5
MSG_WITNESS_FLAG = 1 << 30
MSG_TYPE_MASK = 0xffffffff >> 2

Expand Down Expand Up @@ -242,7 +243,8 @@ class CInv:
MSG_TX | MSG_WITNESS_FLAG: "WitnessTx",
MSG_BLOCK | MSG_WITNESS_FLAG: "WitnessBlock",
MSG_FILTERED_BLOCK: "filtered Block",
4: "CompactBlock"
4: "CompactBlock",
5: "WTX",
}

def __init__(self, t=0, h=0):
Expand All @@ -263,6 +265,9 @@ def __repr__(self):
return "CInv(type=%s hash=%064x)" \
% (self.typemap[self.type], self.hash)

def __eq__(self, other):
return isinstance(other, CInv) and self.hash == other.hash and self.type == other.type


class CBlockLocator:
__slots__ = ("nVersion", "vHave")
Expand Down Expand Up @@ -1124,6 +1129,22 @@ def serialize(self):
def __repr__(self):
return "msg_tx(tx=%s)" % (repr(self.tx))

class msg_wtxidrelay:
__slots__ = ()
msgtype = b"wtxidrelay"

def __init__(self):
pass

def deserialize(self, f):
pass

def serialize(self):
return b""

def __repr__(self):
return "msg_wtxidrelay()"


class msg_no_witness_tx(msg_tx):
__slots__ = ()
Expand Down
6 changes: 5 additions & 1 deletion test/functional/test_framework/mininode.py
Expand Up @@ -59,6 +59,8 @@
MSG_TYPE_MASK,
msg_verack,
msg_version,
MSG_WTX,
msg_wtxidrelay,
NODE_NETWORK,
NODE_WITNESS,
sha256,
Expand Down Expand Up @@ -96,6 +98,7 @@
b"tx": msg_tx,
b"verack": msg_verack,
b"version": msg_version,
b"wtxidrelay": msg_wtxidrelay,
}

MAGIC_BYTES = {
Expand Down Expand Up @@ -356,6 +359,7 @@ def on_pong(self, message): pass
def on_sendcmpct(self, message): pass
def on_sendheaders(self, message): pass
def on_tx(self, message): pass
def on_wtxidrelay(self, message): pass

def on_inv(self, message):
want = msg_getdata()
Expand Down Expand Up @@ -654,7 +658,7 @@ def on_inv(self, message):
super().on_inv(message) # Send getdata in response.
# Store how many times invs have been received for each tx.
for i in message.inv:
if i.type == MSG_TX:
if (i.type == MSG_TX) or (i.type == MSG_WTX):
# save txid
self.tx_invs_received[i.hash] += 1

Expand Down

0 comments on commit 9a5392f

Please sign in to comment.