Beispiel #1
0
    def handle(self, connection_id, message_content):
        gossip_message = network_pb2.GossipMessage()
        gossip_message.ParseFromString(message_content)
        if gossip_message.content_type == "BLOCK":
            block = Block()
            block.ParseFromString(gossip_message.content)
            if not is_valid_block(block):
                LOGGER.debug("block's batches structure is invalid: %s",
                             block.header_signature)
                return HandlerResult(status=HandlerStatus.DROP)

            LOGGER.debug("block passes batch structure verification %s",
                         block.header_signature)
            return HandlerResult(status=HandlerStatus.PASS)
        elif gossip_message.content_type == "BATCH":
            batch = Batch()
            batch.ParseFromString(gossip_message.content)
            if not is_valid_batch(batch):
                LOGGER.debug("batch structure is invalid: %s",
                             batch.header_signature)
                return HandlerResult(status=HandlerStatus.DROP)

            LOGGER.debug("batch passes structure verification %s",
                         batch.header_signature)
            return HandlerResult(status=HandlerStatus.PASS)

        return HandlerResult(status=HandlerStatus.PASS)
Beispiel #2
0
    def handle(self, connection_id, message_content):
        gossip_message = network_pb2.GossipMessage()
        gossip_message.ParseFromString(message_content)
        if gossip_message.content_type == network_pb2.GossipMessage.BLOCK:
            block = Block()
            block.ParseFromString(gossip_message.content)
            LOGGER.debug("CompleterGossipHandler: BLOCK=%s",
                         block.header_signature[:8])
            self._completer.add_block(block)
        elif gossip_message.content_type == network_pb2.GossipMessage.BATCH:
            batch = Batch()
            batch.ParseFromString(gossip_message.content)
            #candidate_id = gossip_message.candidate_id.hex()
            LOGGER.debug("CompleterGossipHandler: NEW BATCH=%s ",
                         batch.header_signature[:8])
            # works in case batch from another node
            self._completer.add_batch(batch)

        elif gossip_message.content_type == network_pb2.GossipMessage.BATCHES:
            batches = BatchList()
            batches.ParseFromString(gossip_message.content)
            candidate_id = batches.candidate_id.hex()
            num = len(batches.batches)
            #LOGGER.debug("CompleterGossipHandler: NEW BATCHES=%s candidate_id=%s", batches,candidate_id[:8])

            block_num = batches.block_num
            for batch in batches.batches:
                LOGGER.debug(" => NEW BATCH[%s]=%s candidate_id=%s.%s", num,
                             batch.header_signature[:8], block_num,
                             candidate_id[:8])
                self._completer.add_batch(batch,
                                          (candidate_id, block_num, num))

        return HandlerResult(status=HandlerStatus.PASS)
Beispiel #3
0
 def handle(self, connection_id, message_content):
     gossip_message = network_pb2.GossipMessage()
     gossip_message.ParseFromString(message_content)
     if gossip_message.content_type == network_pb2.GossipMessage.BLOCK:
         block = Block()
         block.ParseFromString(gossip_message.content)
         self._completer.add_block(block)
     elif gossip_message.content_type == network_pb2.GossipMessage.BATCH:
         batch = Batch()
         batch.ParseFromString(gossip_message.content)
         self._completer.add_batch(batch)
     return HandlerResult(status=HandlerStatus.PASS)