def send_version(self): version = self.bitcoin_network.client_version services = self.bitcoin_network.available_services now = int(time.time()) recipient_address = Bitcoin.serialize_network_address( None, self.bitcoin_network.available_services, with_timestamp=False) sender_address = Bitcoin.serialize_network_address( None, self.bitcoin_network.available_services, with_timestamp=False) nonce = random.randrange(0, 1 << 64) user_agent = Bitcoin.serialize_string(self.bitcoin_network.user_agent) lastBlock = random.randrange( 1024, 102400 * 2) # TODO - is it OK to just say '0' on every connect? payload = struct.pack( "<LQQ", version, services, now) + recipient_address + sender_address + struct.pack( "<Q", nonce) + user_agent + struct.pack("<L", lastBlock) message = Bitcoin.wrap_message("version", payload, Bitcoin.NETWORK_DELIVERY) self.send(message)
def sendGetData(self, items): data = [] for item in items: data.append(Bitcoin.serialize_inv(item[0], item[1])) payload = Bitcoin.serialize_variable_int(len(data)) + b''.join(data) message = Bitcoin.wrap_message("getdata", payload, Bitcoin.NETWORK_DELIVERY) self.send(message)
def sendGetData(self, items): data = [] for item in items: data.append(Bitcoin.serialize_inv(item[0], item[1])) payload = Bitcoin.serialize_variable_int(len(data)) + b''.join(data) message = Bitcoin.wrap_message("getdata", payload, Bitcoin.NETWORK_DELIVERY) self.send(message)
def send_version(self): version = self.bitcoin_network.client_version services = self.bitcoin_network.available_services now = int(time.time()) recipient_address = Bitcoin.serialize_network_address(None, self.bitcoin_network.available_services, with_timestamp=False) sender_address = Bitcoin.serialize_network_address(None, self.bitcoin_network.available_services, with_timestamp=False) nonce = random.randrange(0, 1 << 64) user_agent = Bitcoin.serialize_string(self.bitcoin_network.user_agent) lastBlock = random.randrange(1024, 102400*2) # TODO - is it OK to just say '0' on every connect? payload = struct.pack("<LQQ", version, services, now) + recipient_address + sender_address + struct.pack("<Q", nonce) + user_agent + struct.pack("<L", lastBlock) message = Bitcoin.wrap_message("version", payload, Bitcoin.NETWORK_DELIVERY) self.send(message)
def send_verack(self): self.send(Bitcoin.wrap_message("verack", b'', Bitcoin.NETWORK_DELIVERY))
def send_verack(self): self.send(Bitcoin.wrap_message("verack", b'', Bitcoin.NETWORK_DELIVERY))