Esempio n. 1
0
 def serialize(self):
     payload = self.version.to_bytes(4, "little")
     payload += varint.encode(len(self.block_hashes))
     for hash in self.block_hashes:
         payload += bytes.fromhex(hash)[::-1]
     payload += bytes.fromhex(self.hash_stop)[::-1]
     return add_headers("getheaders", payload)
Esempio n. 2
0
def test_invalid_tamper():
    message_name = "message"
    payload = b"\x00"
    magic = b"\xff\xff\xff\xff"
    msg = magic + add_headers(message_name, payload)
    tampered_msg = msg[:-1] + b"\x01"
    with pytest.raises(WrongChecksumError):
        verify_headers(tampered_msg)
Esempio n. 3
0
def test_invalid_length():
    message_name = "message"
    payload = b"\x00"
    magic = b"\xff\xff\xff\xff"
    msg = magic + add_headers(message_name, payload)
    short_msg = msg[:-1]
    with pytest.raises(ValueError):
        verify_headers(short_msg)
Esempio n. 4
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
Esempio n. 5
0
 def serialize(self):
     payload = varint.encode(len(self.message))
     payload += self.message.encode()
     payload += self.code.to_bytes(1, "little")
     payload += varint.encode(len(self.reason))
     payload += self.reason.encode()
     payload += bytes.fromhex(self.data)[::-1]
     return add_headers("reject", payload)
Esempio n. 6
0
 def serialize(self):
     payload = self.header.serialize()
     payload += self.nonce.to_bytes(8, "little")
     payload += varint.encode(len(self.short_ids))
     for short_id in self.short_ids:
         payload += bytes.fromhex(short_id)[::-1]
     payload += varint.encode(len(self.prefilled_tx_list))
     for tx_index, tx in self.prefilled_tx_list:
         payload += varint.encode(tx_index)
         payload += tx.serialize()
     return add_headers("cmptblock", payload)
Esempio n. 7
0
 def serialize(self):
     payload = self.version.to_bytes(4, "little")
     payload += self.services.to_bytes(8, "little")
     payload += self.timestamp.to_bytes(8, "little")
     payload += self.addr_recv.serialize(version_msg=True)
     payload += self.addr_from.serialize(version_msg=True)
     payload += self.nonce.to_bytes(8, "little")
     if self.user_agent:
         payload += varint.encode(len(self.user_agent))
         payload += self.user_agent.encode()
     else:
         payload += varint.encode(0)
     payload += self.start_height.to_bytes(4, "little")
     payload += self.relay.to_bytes(1, "little")
     return add_headers("version", payload)
Esempio n. 8
0
 def serialize(self):
     payload = varint.encode(len(self.headers))
     for header in self.headers:
         payload += header.serialize()
         payload += b"\x00"
     return add_headers("headers", payload)
Esempio n. 9
0
 def serialize(self):
     data = self.block.serialize()
     return add_headers("block", data)
Esempio n. 10
0
 def serialize(self):
     data = self.tx.serialize()
     return add_headers("tx", data)
Esempio n. 11
0
 def serialize(self):
     return add_headers("verack", b"")
Esempio n. 12
0
 def serialize(self):
     payload = varint.encode(len(self.addresses))
     for address in self.addresses:
         payload += address.serialize()
     return add_headers("addr", payload)
Esempio n. 13
0
 def serialize(self):
     return add_headers("getaddr", b"")
Esempio n. 14
0
 def serialize(self):
     payload = bytes.fromhex(self.blockhash)[::-1]
     payload += varint.encode(len(self.transactions))
     for tx in self.transactions:
         payload += tx.serialize()
     return add_headers("blocktxn", payload)
Esempio n. 15
0
 def serialize(self):
     return add_headers("sendheaders", b"")
Esempio n. 16
0
 def serialize(self):
     payload = bytes.fromhex(self.blockhash)[::-1]
     payload += varint.encode(len(self.indexes))
     for id in self.indexes:
         payload += varint.encode(id)
     return add_headers("getblocktxn", payload)
Esempio n. 17
0
 def serialize(self):
     return add_headers("feefilter", b"")
Esempio n. 18
0
 def serialize(self):
     return add_headers("merkleblock", b"")
Esempio n. 19
0
 def serialize(self):
     return add_headers("filterclear", b"")
Esempio n. 20
0
 def serialize(self):
     return add_headers("filterload", b"")
Esempio n. 21
0
 def serialize(self):
     payload = varint.encode(len(self.inventory))
     for item in self.inventory:
         payload += item[0].to_bytes(4, "little")
         payload += bytes.fromhex(item[1])[::-1]
     return add_headers("notfound", payload)
Esempio n. 22
0
 def serialize(self):
     return add_headers("mempool", b"")
Esempio n. 23
0
 def serialize(self):
     return add_headers("pong", self.nonce.to_bytes(8, "little"))
Esempio n. 24
0
 def serialize(self):
     payload = int(self.flag).to_bytes(1, "little")
     payload += self.version.to_bytes(8, "little")
     return add_headers("sendcmpt", payload)