def send(self): peer = Peers.getPeerByHost(self.addrRecv) self.blockHashes.append(peer.chainHeadBlockHash) payload = Network.sendData(self.addrRecv, self.serialize()) message = MessageFactory.getInstance(MessageType.INV) message.addrFrom = self.addrRecv if message.deserialize(payload): message.onSuccess() else: message.onFailure(self.sendFailure)
def onSuccess(self, callback=None): peer = Peers.getPeerByHost(self.addrFrom) syncVersion = False if peer == None: peer = Peer() else: syncVersion = peer.lastVersionNonce == None if peer.lastVersionNonce == None or peer.lastVersionNonce == self.nonce: peer.host = self.addrFrom peer.version = self.version peer.lastVersionNonce = self.nonce peer.chainHeadBlockHash = self.chainHeadBlockHash Peers.addPeer(peer) if syncVersion: Sync.synchronizeMessage(MessageType.VERSION, peer.host) message = MessageFactory.getInstance(MessageType.VERACK) callback(message.serialize())
def send(self): peer = Peers.getPeerByHost(self.addrRecv) if peer.lastVersionNonce == None: peer.lastVersionNonce = self.nonce Peers.addPeer(peer) else: self.nonce = peer.lastVersionNonce chainHeadBlock = Chain.getChain().getChainHeadBlock() self.chainHeadBlockHash = chainHeadBlock.hash() payload = Network.sendData(self.addrRecv, self.serialize()) message = MessageFactory.getInstance(MessageType.VERACK) message.addrFrom = self.addrRecv if message.deserialize(payload): message.onSuccess() else: peer = Peer() peer.host = self.addrRecv Peers.removePeer(peer) message.onFailure(self.sendFailure)
def onSuccess(self, callback=None): peer = Peers.getPeerByHost(self.addrFrom) peer.lastVersionNonce = None Peers.addPeer(peer)