Пример #1
0
def test_sendcmpt():
    msg = Sendcmpct(1, 1)
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Sendcmpct.deserialize(get_payload(msg_bytes)[1])
    msg = Sendcmpct(0, 1)
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Sendcmpct.deserialize(get_payload(msg_bytes)[1])
Пример #2
0
def test_valid():
    message_name = "message"
    payload = b"\x00"
    magic = b"\xff\xff\xff\xff"
    msg = magic + add_headers(message_name, payload)
    verify_headers(msg)
    assert get_payload(msg)[0] == message_name
    assert get_payload(msg)[1] == payload
Пример #3
0
def test_block():
    transactions = []
    for x in range(10):
        tx_in = TxIn(
            prevout=OutPoint(),
            scriptSig=script.serialize([f"{x}{x}"]),
            sequence=0xFFFFFFFF,
            txinwitness=[],
        )
        tx_out = TxOut(
            value=50 * 10**8,
            scriptPubKey=script.serialize([f"{x}{x}"]),
        )
        tx = TxData(
            version=1,
            locktime=0,
            vin=[tx_in],
            vout=[tx_out],
        )
        transactions.append(tx)
    header = BlockHeader(
        version=1,
        previousblockhash="00" * 32,
        merkleroot="00" * 32,
        time=1,
        bits=b"\x23\x00\x00\x01",
        nonce=1,
    )
    header.merkleroot = _generate_merkle_root(transactions)
    msg = Block(BlockData(header, transactions))
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Block.deserialize(get_payload(msg_bytes)[1])
Пример #4
0
def test_version_without_agent():
    services = 1032 + 1
    msg = Version(
        version=ProtocolVersion,
        services=services,
        timestamp=1,
        addr_recv=NetworkAddress(0, 0, to_ipv6("0.0.0.0"), 1),
        addr_from=NetworkAddress(0, services, to_ipv6("0.0.0.0"), 1),
        nonce=1,
        user_agent="",
        start_height=0,
        relay=True,
    )
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Version.deserialize(get_payload(msg_bytes)[1])
Пример #5
0
def test_headers():
    headers = []
    for x in range(10):
        headers.append(
            BlockHeader(
                version=70015,
                previousblockhash=f"{x}{x}" * 32,
                merkleroot="00" * 32,
                time=1,
                bits=b"\x23\x00\x00\x01",
                nonce=1,
            ))
    msg = Headers(headers)
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Headers.deserialize(get_payload(msg_bytes)[1])
Пример #6
0
def test_tx():
    tx_in = TxIn(
        prevout=OutPoint(),
        scriptSig=script.serialize(["00"]),
        sequence=0xFFFFFFFF,
        txinwitness=[],
    )
    tx_out = TxOut(
        value=50 * 10**8,
        scriptPubKey=script.serialize(["00"]),
    )
    tx = TxData(
        version=1,
        locktime=0,
        vin=[tx_in],
        vout=[tx_out],
    )
    msg = Tx(tx)
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Tx.deserialize(get_payload(msg_bytes)[1])
Пример #7
0
def test_blocktxn():
    transactions = []
    for x in range(10):
        tx_in = TxIn(
            prevout=OutPoint(),
            scriptSig=script.serialize([f"{x}{x}"]),
            sequence=0xFFFFFFFF,
            txinwitness=[],
        )
        tx_out = TxOut(
            value=50 * 10**8,
            scriptPubKey=script.serialize([f"{x}{x}"]),
        )
        tx = TxData(
            version=1,
            locktime=0,
            vin=[tx_in],
            vout=[tx_out],
        )
        transactions.append(tx)
    msg = Blocktxn("00" * 32, transactions)
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Blocktxn.deserialize(get_payload(msg_bytes)[1])
Пример #8
0
def test_sendheaders():
    msg = Sendheaders()
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Sendheaders.deserialize(get_payload(msg_bytes)[1])
Пример #9
0
def test_mempool():
    msg = Mempool()
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Mempool.deserialize(get_payload(msg_bytes)[1])
Пример #10
0
def test_not_found():
    msg = Notfound([(1, "00" * 32)])
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Notfound.deserialize(get_payload(msg_bytes)[1])
Пример #11
0
def test_empty_inv():
    msg = Inv([])
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Inv.deserialize(get_payload(msg_bytes)[1])
Пример #12
0
def test_filled_inv():
    msg = Inv([(1, "00" * 32)])
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Inv.deserialize(get_payload(msg_bytes)[1])
Пример #13
0
def test_reject():
    msg = Reject("tx", RejectCode(0x42), "", "00" * 32)
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Reject.deserialize(get_payload(msg_bytes)[1])
Пример #14
0
def test_invalid_inv():
    msg = Inv([(1, "00"), (1, "00")])
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg != Inv.deserialize(get_payload(msg_bytes)[1])
Пример #15
0
def test_getblocktxn():
    msg = Getblocktxn("00" * 32, [2**x for x in range(10)])
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Getblocktxn.deserialize(get_payload(msg_bytes)[1])
Пример #16
0
def test_getdata():
    msg = Getdata([(1, "00" * 32)])
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Getdata.deserialize(get_payload(msg_bytes)[1])
Пример #17
0
def test_empty_blocktxn():
    msg = Blocktxn("00" * 32, [])
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Blocktxn.deserialize(get_payload(msg_bytes)[1])
Пример #18
0
def test_empty_headers():
    msg = Headers([])
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Headers.deserialize(get_payload(msg_bytes)[1])
Пример #19
0
def test_getheaders():
    msg = Getheaders(70015, ["00" * 32, "11" * 32], "00" * 32)
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Getheaders.deserialize(get_payload(msg_bytes)[1])
Пример #20
0
def test_valid_addr():
    msg = Addr([NetworkAddress(0, 0, IPv6Address(1), 1)])
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Addr.deserialize(get_payload(msg_bytes)[1])
Пример #21
0
def test_valid_getaddr():
    msg = Getaddr()
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Getaddr.deserialize(get_payload(msg_bytes)[1])
Пример #22
0
def test_empty_addr():
    msg = Addr([])
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Addr.deserialize(get_payload(msg_bytes)[1])
Пример #23
0
def test_verack():
    msg = Verack()
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Verack.deserialize(get_payload(msg_bytes)[1])
Пример #24
0
def test_ping():
    msg = Ping(1)
    msg_bytes = bytes.fromhex("00" * 4) + msg.serialize()
    assert msg == Ping.deserialize(get_payload(msg_bytes)[1])