Changeset View
Changeset View
Standalone View
Standalone View
test/functional/test_framework/mininode.py
Show First 20 Lines • Show All 565 Lines • ▼ Show 20 Lines | def solve(self): | ||||
self.rehash() | self.rehash() | ||||
def __repr__(self): | def __repr__(self): | ||||
return "CBlock(nVersion=%i hashPrevBlock=%064x hashMerkleRoot=%064x nTime=%s nBits=%08x nNonce=%08x vtx=%s)" \ | return "CBlock(nVersion=%i hashPrevBlock=%064x hashMerkleRoot=%064x nTime=%s nBits=%08x nNonce=%08x vtx=%s)" \ | ||||
% (self.nVersion, self.hashPrevBlock, self.hashMerkleRoot, | % (self.nVersion, self.hashPrevBlock, self.hashMerkleRoot, | ||||
time.ctime(self.nTime), self.nBits, self.nNonce, repr(self.vtx)) | time.ctime(self.nTime), self.nBits, self.nNonce, repr(self.vtx)) | ||||
class CUnsignedAlert(): | |||||
def __init__(self): | |||||
self.nVersion = 1 | |||||
self.nRelayUntil = 0 | |||||
self.nExpiration = 0 | |||||
self.nID = 0 | |||||
self.nCancel = 0 | |||||
self.setCancel = [] | |||||
self.nMinVer = 0 | |||||
self.nMaxVer = 0 | |||||
self.setSubVer = [] | |||||
self.nPriority = 0 | |||||
self.strComment = b"" | |||||
self.strStatusBar = b"" | |||||
self.strReserved = b"" | |||||
def deserialize(self, f): | |||||
self.nVersion = struct.unpack("<i", f.read(4))[0] | |||||
self.nRelayUntil = struct.unpack("<q", f.read(8))[0] | |||||
self.nExpiration = struct.unpack("<q", f.read(8))[0] | |||||
self.nID = struct.unpack("<i", f.read(4))[0] | |||||
self.nCancel = struct.unpack("<i", f.read(4))[0] | |||||
self.setCancel = deser_int_vector(f) | |||||
self.nMinVer = struct.unpack("<i", f.read(4))[0] | |||||
self.nMaxVer = struct.unpack("<i", f.read(4))[0] | |||||
self.setSubVer = deser_string_vector(f) | |||||
self.nPriority = struct.unpack("<i", f.read(4))[0] | |||||
self.strComment = deser_string(f) | |||||
self.strStatusBar = deser_string(f) | |||||
self.strReserved = deser_string(f) | |||||
def serialize(self): | |||||
r = b"" | |||||
r += struct.pack("<i", self.nVersion) | |||||
r += struct.pack("<q", self.nRelayUntil) | |||||
r += struct.pack("<q", self.nExpiration) | |||||
r += struct.pack("<i", self.nID) | |||||
r += struct.pack("<i", self.nCancel) | |||||
r += ser_int_vector(self.setCancel) | |||||
r += struct.pack("<i", self.nMinVer) | |||||
r += struct.pack("<i", self.nMaxVer) | |||||
r += ser_string_vector(self.setSubVer) | |||||
r += struct.pack("<i", self.nPriority) | |||||
r += ser_string(self.strComment) | |||||
r += ser_string(self.strStatusBar) | |||||
r += ser_string(self.strReserved) | |||||
return r | |||||
def __repr__(self): | |||||
return "CUnsignedAlert(nVersion %d, nRelayUntil %d, nExpiration %d, nID %d, nCancel %d, nMinVer %d, nMaxVer %d, nPriority %d, strComment %s, strStatusBar %s, strReserved %s)" \ | |||||
% (self.nVersion, self.nRelayUntil, self.nExpiration, self.nID, | |||||
self.nCancel, self.nMinVer, self.nMaxVer, self.nPriority, | |||||
self.strComment, self.strStatusBar, self.strReserved) | |||||
class CAlert(): | |||||
def __init__(self): | |||||
self.vchMsg = b"" | |||||
self.vchSig = b"" | |||||
def deserialize(self, f): | |||||
self.vchMsg = deser_string(f) | |||||
self.vchSig = deser_string(f) | |||||
def serialize(self): | |||||
r = b"" | |||||
r += ser_string(self.vchMsg) | |||||
r += ser_string(self.vchSig) | |||||
return r | |||||
def __repr__(self): | |||||
return "CAlert(vchMsg.sz %d, vchSig.sz %d)" \ | |||||
% (len(self.vchMsg), len(self.vchSig)) | |||||
class PrefilledTransaction(): | class PrefilledTransaction(): | ||||
def __init__(self, index=0, tx=None): | def __init__(self, index=0, tx=None): | ||||
self.index = index | self.index = index | ||||
self.tx = tx | self.tx = tx | ||||
def deserialize(self, f): | def deserialize(self, f): | ||||
self.index = deser_compact_size(f) | self.index = deser_compact_size(f) | ||||
self.tx = CTransaction() | self.tx = CTransaction() | ||||
▲ Show 20 Lines • Show All 270 Lines • ▼ Show 20 Lines | def deserialize(self, f): | ||||
self.addrs = deser_vector(f, CAddress) | self.addrs = deser_vector(f, CAddress) | ||||
def serialize(self): | def serialize(self): | ||||
return ser_vector(self.addrs) | return ser_vector(self.addrs) | ||||
def __repr__(self): | def __repr__(self): | ||||
return "msg_addr(addrs=%s)" % (repr(self.addrs)) | return "msg_addr(addrs=%s)" % (repr(self.addrs)) | ||||
class msg_alert(): | |||||
command = b"alert" | |||||
def __init__(self): | |||||
self.alert = CAlert() | |||||
def deserialize(self, f): | |||||
self.alert = CAlert() | |||||
self.alert.deserialize(f) | |||||
def serialize(self): | |||||
r = b"" | |||||
r += self.alert.serialize() | |||||
return r | |||||
def __repr__(self): | |||||
return "msg_alert(alert=%s)" % (repr(self.alert), ) | |||||
class msg_inv(): | class msg_inv(): | ||||
command = b"inv" | command = b"inv" | ||||
def __init__(self, inv=None): | def __init__(self, inv=None): | ||||
if inv is None: | if inv is None: | ||||
self.inv = [] | self.inv = [] | ||||
else: | else: | ||||
self.inv = inv | self.inv = inv | ||||
▲ Show 20 Lines • Show All 441 Lines • ▼ Show 20 Lines | def on_open(self, conn): | ||||
self.connected = True | self.connected = True | ||||
def on_close(self, conn): | def on_close(self, conn): | ||||
self.connected = False | self.connected = False | ||||
self.connection = None | self.connection = None | ||||
def on_addr(self, conn, message): pass | def on_addr(self, conn, message): pass | ||||
def on_alert(self, conn, message): pass | |||||
def on_block(self, conn, message): pass | def on_block(self, conn, message): pass | ||||
def on_blocktxn(self, conn, message): pass | def on_blocktxn(self, conn, message): pass | ||||
def on_cmpctblock(self, conn, message): pass | def on_cmpctblock(self, conn, message): pass | ||||
def on_feefilter(self, conn, message): pass | def on_feefilter(self, conn, message): pass | ||||
▲ Show 20 Lines • Show All 111 Lines • ▼ Show 20 Lines | |||||
# This class provides an interface for a p2p connection to a specified node | # This class provides an interface for a p2p connection to a specified node | ||||
class NodeConn(asyncore.dispatcher): | class NodeConn(asyncore.dispatcher): | ||||
messagemap = { | messagemap = { | ||||
b"version": msg_version, | b"version": msg_version, | ||||
b"verack": msg_verack, | b"verack": msg_verack, | ||||
b"addr": msg_addr, | b"addr": msg_addr, | ||||
b"alert": msg_alert, | |||||
b"inv": msg_inv, | b"inv": msg_inv, | ||||
b"getdata": msg_getdata, | b"getdata": msg_getdata, | ||||
b"getblocks": msg_getblocks, | b"getblocks": msg_getblocks, | ||||
b"tx": msg_tx, | b"tx": msg_tx, | ||||
b"block": msg_block, | b"block": msg_block, | ||||
b"getaddr": msg_getaddr, | b"getaddr": msg_getaddr, | ||||
b"ping": msg_ping, | b"ping": msg_ping, | ||||
b"pong": msg_pong, | b"pong": msg_pong, | ||||
▲ Show 20 Lines • Show All 232 Lines • Show Last 20 Lines |