Ejemplo n.º 1
0
    def handle_version(self, payload):
        if len(payload) < 20:
            raise BadCommand()

        try:
            self.peer_version, self.peer_services, when = struct.unpack("<LQQ", payload[:20])
            recipient_address, services, payload = Bitcoin.unserialize_network_address(payload[20:], with_timestamp=False)
            sender_address, services, payload = Bitcoin.unserialize_network_address(payload, with_timestamp=False)
            nonce = struct.unpack("<Q", payload[:8])[0]
            self.peer_user_agent, payload = Bitcoin.unserialize_string(payload[8:])
            self.peer_last_block = struct.unpack("<L", payload)[0]
        except:
            self.state = BitcoinNetworkPeer.STATE_DEAD
            return

        #print("({}) PEER: version {} (User-agent {}, last block {})".format(self.peer_address, self.peer_version, self.peer_user_agent, self.peer_last_block))
        
        self.send_verack()
Ejemplo n.º 2
0
    def handle_version(self, payload):
        if len(payload) < 20:
            raise BadCommand()

        try:
            self.peer_version, self.peer_services, when = struct.unpack(
                "<LQQ", payload[:20])
            recipient_address, services, payload = Bitcoin.unserialize_network_address(
                payload[20:], with_timestamp=False)
            sender_address, services, payload = Bitcoin.unserialize_network_address(
                payload, with_timestamp=False)
            nonce = struct.unpack("<Q", payload[:8])[0]
            self.peer_user_agent, payload = Bitcoin.unserialize_string(
                payload[8:])
            self.peer_last_block = struct.unpack("<L", payload)[0]
        except:
            self.state = BitcoinNetworkPeer.STATE_DEAD
            return

        #print("({}) PEER: version {} (User-agent {}, last block {})".format(self.peer_address, self.peer_version, self.peer_user_agent, self.peer_last_block))

        self.send_verack()