MCPcopy Index your code
hub / github.com/petertodd/python-bitcoinlib / msg_version

Class msg_version

bitcoin/messages.py:112–168  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

110
111
112class msg_version(MsgSerializable):
113 command = b"version"
114
115 def __init__(self, protover=PROTO_VERSION):
116 super(msg_version, self).__init__(protover)
117 self.nVersion = protover
118 self.nServices = 1
119 self.nTime = int(time.time())
120 self.addrTo = CAddress(PROTO_VERSION)
121 self.addrFrom = CAddress(PROTO_VERSION)
122 self.nNonce = random.getrandbits(64)
123 self.strSubVer = (b'/python-bitcoinlib:' +
124 bitcoin.__version__.encode('ascii') + b'/')
125 self.nStartingHeight = -1
126 self.fRelay = True
127
128 @classmethod
129 def msg_deser(cls, f, protover=PROTO_VERSION):
130 c = cls()
131 c.nVersion = struct.unpack(b"<i", ser_read(f, 4))[0]
132 if c.nVersion == 10300:
133 c.nVersion = 300
134 c.nServices = struct.unpack(b"<Q", ser_read(f, 8))[0]
135 c.nTime = struct.unpack(b"<q", ser_read(f, 8))[0]
136 c.addrTo = CAddress.stream_deserialize(f, True)
137 if c.nVersion >= 106:
138 c.addrFrom = CAddress.stream_deserialize(f, True)
139 c.nNonce = struct.unpack(b"<Q", ser_read(f, 8))[0]
140 c.strSubVer = VarStringSerializer.stream_deserialize(f)
141 if c.nVersion >= 209:
142 c.nStartingHeight = struct.unpack(b"<i", ser_read(f,4))[0]
143 else:
144 c.nStartingHeight = None
145 else:
146 c.addrFrom = None
147 c.nNonce = None
148 c.strSubVer = None
149 c.nStartingHeight = None
150 if c.nVersion >= 70001:
151 c.fRelay = struct.unpack(b"<B", ser_read(f,1))[0]
152 else:
153 c.fRelay = True
154 return c
155
156 def msg_ser(self, f):
157 f.write(struct.pack(b"<i", self.nVersion))
158 f.write(struct.pack(b"<Q", self.nServices))
159 f.write(struct.pack(b"<q", self.nTime))
160 self.addrTo.stream_serialize(f, True)
161 self.addrFrom.stream_serialize(f, True)
162 f.write(struct.pack(b"<Q", self.nNonce))
163 VarStringSerializer.stream_serialize(self.strSubVer, f)
164 f.write(struct.pack(b"<i", self.nStartingHeight))
165 f.write(struct.pack(b"<B", self.fRelay))
166
167 def __repr__(self):
168 return "msg_version(nVersion=%i nServices=%i nTime=%s addrTo=%s addrFrom=%s nNonce=0x%016X strSubVer=%s nStartingHeight=%i fRelay=%r)" % (self.nVersion, self.nServices, time.ctime(self.nTime), repr(self.addrTo), repr(self.addrFrom), self.nNonce, self.strSubVer, self.nStartingHeight, self.fRelay)
169

Callers 1

version_pktFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected