Changeset View
Changeset View
Standalone View
Standalone View
test/functional/test_framework/messages.py
Show First 20 Lines • Show All 124 Lines • ▼ Show 20 Lines | def deser_uint256(f): | ||||
for i in range(8): | for i in range(8): | ||||
t = struct.unpack("<I", f.read(4))[0] | t = struct.unpack("<I", f.read(4))[0] | ||||
r += t << (i * 32) | r += t << (i * 32) | ||||
return r | return r | ||||
def ser_uint256(u): | def ser_uint256(u): | ||||
rs = b"" | rs = b"" | ||||
for i in range(8): | for _ in range(8): | ||||
rs += struct.pack("<I", u & 0xFFFFFFFF) | rs += struct.pack("<I", u & 0xFFFFFFFF) | ||||
u >>= 32 | u >>= 32 | ||||
return rs | return rs | ||||
def uint256_from_str(s): | def uint256_from_str(s): | ||||
r = 0 | r = 0 | ||||
t = struct.unpack("<IIIIIIII", s[:32]) | t = struct.unpack("<IIIIIIII", s[:32]) | ||||
for i in range(8): | for i in range(8): | ||||
r += t[i] << (i * 32) | r += t[i] << (i * 32) | ||||
return r | return r | ||||
def uint256_from_compact(c): | def uint256_from_compact(c): | ||||
nbytes = (c >> 24) & 0xFF | nbytes = (c >> 24) & 0xFF | ||||
v = (c & 0xFFFFFF) << (8 * (nbytes - 3)) | v = (c & 0xFFFFFF) << (8 * (nbytes - 3)) | ||||
return v | return v | ||||
# deser_function_name: Allow for an alternate deserialization function on the | # deser_function_name: Allow for an alternate deserialization function on the | ||||
# entries in the vector. | # entries in the vector. | ||||
def deser_vector(f, c, deser_function_name=None): | def deser_vector(f, c, deser_function_name=None): | ||||
nit = deser_compact_size(f) | nit = deser_compact_size(f) | ||||
r = [] | r = [] | ||||
for i in range(nit): | for _ in range(nit): | ||||
t = c() | t = c() | ||||
if deser_function_name: | if deser_function_name: | ||||
getattr(t, deser_function_name)(f) | getattr(t, deser_function_name)(f) | ||||
else: | else: | ||||
t.deserialize(f) | t.deserialize(f) | ||||
r.append(t) | r.append(t) | ||||
return r | return r | ||||
# ser_function_name: Allow for an alternate serialization function on the | # ser_function_name: Allow for an alternate serialization function on the | ||||
# entries in the vector. | # entries in the vector. | ||||
def ser_vector(v, ser_function_name=None): | def ser_vector(v, ser_function_name=None): | ||||
r = ser_compact_size(len(v)) | r = ser_compact_size(len(v)) | ||||
for i in v: | for i in v: | ||||
if ser_function_name: | if ser_function_name: | ||||
r += getattr(i, ser_function_name)() | r += getattr(i, ser_function_name)() | ||||
else: | else: | ||||
r += i.serialize() | r += i.serialize() | ||||
return r | return r | ||||
def deser_uint256_vector(f): | def deser_uint256_vector(f): | ||||
nit = deser_compact_size(f) | nit = deser_compact_size(f) | ||||
r = [] | r = [] | ||||
for i in range(nit): | for _ in range(nit): | ||||
t = deser_uint256(f) | t = deser_uint256(f) | ||||
r.append(t) | r.append(t) | ||||
return r | return r | ||||
def ser_uint256_vector(v): | def ser_uint256_vector(v): | ||||
r = ser_compact_size(len(v)) | r = ser_compact_size(len(v)) | ||||
for i in v: | for i in v: | ||||
r += ser_uint256(i) | r += ser_uint256(i) | ||||
return r | return r | ||||
def deser_string_vector(f): | def deser_string_vector(f): | ||||
nit = deser_compact_size(f) | nit = deser_compact_size(f) | ||||
r = [] | r = [] | ||||
for i in range(nit): | for _ in range(nit): | ||||
t = deser_string(f) | t = deser_string(f) | ||||
r.append(t) | r.append(t) | ||||
return r | return r | ||||
def ser_string_vector(v): | def ser_string_vector(v): | ||||
r = ser_compact_size(len(v)) | r = ser_compact_size(len(v)) | ||||
for sv in v: | for sv in v: | ||||
▲ Show 20 Lines • Show All 464 Lines • ▼ Show 20 Lines | def __init__(self): | ||||
self.shortids = [] | self.shortids = [] | ||||
self.prefilled_txn_length = 0 | self.prefilled_txn_length = 0 | ||||
self.prefilled_txn = [] | self.prefilled_txn = [] | ||||
def deserialize(self, f): | def deserialize(self, f): | ||||
self.header.deserialize(f) | self.header.deserialize(f) | ||||
self.nonce = struct.unpack("<Q", f.read(8))[0] | self.nonce = struct.unpack("<Q", f.read(8))[0] | ||||
self.shortids_length = deser_compact_size(f) | self.shortids_length = deser_compact_size(f) | ||||
for i in range(self.shortids_length): | for _ in range(self.shortids_length): | ||||
# shortids are defined to be 6 bytes in the spec, so append | # shortids are defined to be 6 bytes in the spec, so append | ||||
# two zero bytes and read it in as an 8-byte number | # two zero bytes and read it in as an 8-byte number | ||||
self.shortids.append( | self.shortids.append( | ||||
struct.unpack("<Q", f.read(6) + b'\x00\x00')[0]) | struct.unpack("<Q", f.read(6) + b'\x00\x00')[0]) | ||||
self.prefilled_txn = deser_vector(f, PrefilledTransaction) | self.prefilled_txn = deser_vector(f, PrefilledTransaction) | ||||
self.prefilled_txn_length = len(self.prefilled_txn) | self.prefilled_txn_length = len(self.prefilled_txn) | ||||
def serialize(self): | def serialize(self): | ||||
▲ Show 20 Lines • Show All 92 Lines • ▼ Show 20 Lines | class BlockTransactionsRequest: | ||||
def __init__(self, blockhash=0, indexes=None): | def __init__(self, blockhash=0, indexes=None): | ||||
self.blockhash = blockhash | self.blockhash = blockhash | ||||
self.indexes = indexes if indexes is not None else [] | self.indexes = indexes if indexes is not None else [] | ||||
def deserialize(self, f): | def deserialize(self, f): | ||||
self.blockhash = deser_uint256(f) | self.blockhash = deser_uint256(f) | ||||
indexes_length = deser_compact_size(f) | indexes_length = deser_compact_size(f) | ||||
for i in range(indexes_length): | for _ in range(indexes_length): | ||||
self.indexes.append(deser_compact_size(f)) | self.indexes.append(deser_compact_size(f)) | ||||
def serialize(self): | def serialize(self): | ||||
r = b"" | r = b"" | ||||
r += ser_uint256(self.blockhash) | r += ser_uint256(self.blockhash) | ||||
r += ser_compact_size(len(self.indexes)) | r += ser_compact_size(len(self.indexes)) | ||||
for x in self.indexes: | for x in self.indexes: | ||||
r += ser_compact_size(x) | r += ser_compact_size(x) | ||||
▲ Show 20 Lines • Show All 1,292 Lines • Show Last 20 Lines |