Changeset View
Changeset View
Standalone View
Standalone View
test/functional/test_framework/messages.py
Show First 20 Lines • Show All 1,094 Lines • ▼ Show 20 Lines | class AvalancheDelegation: | ||||
def getid(self): | def getid(self): | ||||
h = ser_uint256(self.proofid) | h = ser_uint256(self.proofid) | ||||
for level in self.levels: | for level in self.levels: | ||||
h = hash256(h + ser_string(level.pubkey)) | h = hash256(h + ser_string(level.pubkey)) | ||||
return h | return h | ||||
class AvalancheHello(): | class AvalancheHello(): | ||||
__slots__ = ("delegation", "sig") | __slots__ = ("delegation", "limited_proofid", "master", "sig") | ||||
def __init__(self, delegation=AvalancheDelegation(), sig=b"\0" * 64): | def __init__(self, delegation=AvalancheDelegation(), | ||||
limited_proofid=0, | |||||
master=b"\0", | |||||
sig=b"\0" * 64): | |||||
self.delegation = delegation | self.delegation = delegation | ||||
self.limited_proofid = limited_proofid | |||||
self.master = master | |||||
self.sig = sig | self.sig = sig | ||||
def deserialize(self, f): | def deserialize(self, f): | ||||
self.delegation.deserialize(f) | self.delegation.deserialize(f) | ||||
self.limited_proofid = deser_uint256(f) | |||||
self.master = deser_string(f) | |||||
self.sig = f.read(64) | self.sig = f.read(64) | ||||
def serialize(self): | def serialize(self): | ||||
r = b"" | r = b"" | ||||
r += self.delegation.serialize() | r += self.delegation.serialize() | ||||
r += ser_uint256(self.limited_proofid) | |||||
r += ser_string(self.master) | |||||
r += self.sig | r += self.sig | ||||
return r | return r | ||||
def __repr__(self): | def __repr__(self): | ||||
return "AvalancheHello(delegation={}, sig={})".format( | return "AvalancheHello(delegation={}, limitedid={:064x}, master={}, sig={})".format( | ||||
repr(self.delegation), self.sig) | repr(self.delegation), self.limited_proofid, self.master, self.sig) | ||||
def get_sighash(self, node): | def get_sighash(self, node): | ||||
b = self.delegation.getid() | b = self.delegation.getid() | ||||
b += struct.pack("<Q", node.remote_nonce) | b += struct.pack("<Q", node.remote_nonce) | ||||
b += struct.pack("<Q", node.local_nonce) | b += struct.pack("<Q", node.local_nonce) | ||||
b += struct.pack("<Q", node.remote_extra_entropy) | b += struct.pack("<Q", node.remote_extra_entropy) | ||||
b += struct.pack("<Q", node.local_extra_entropy) | b += struct.pack("<Q", node.local_extra_entropy) | ||||
return hash256(b) | return hash256(b) | ||||
▲ Show 20 Lines • Show All 946 Lines • Show Last 20 Lines |