Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 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())
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 def onSuccess(self, callback=None):
     peer = Peers.getPeerByHost(self.addrFrom)
     peer.lastVersionNonce = None
     Peers.addPeer(peer)