def post_request_stream(self, name, request, response): logging.info(f"GOSSIP POST REQUEST STREAM: {name}({hexify(request)})") if name == "StreamLatestMessages": if self.equivocating_block: b = self.equivocating_block logging.info( f"GOSSIP POST REQUEST STREAM: SENDING FAKE Justification with latest_block_hash ({b.block_hash.hex()}):" f" {self.equivocating_block_justification}") yield self.equivocating_block_justification return if name == "GetBlockChunked": if self.equivocating_block: logging.info( f"GOSSIP POST REQUEST STREAM: GetBlockChunked: sending FAKE block" ) for chunk in block_to_chunks(self.equivocating_block): yield chunk return else: logging.info( f"GOSSIP POST REQUEST STREAM: Save block and generate equivocating one" ) response = [r for r in response] self.last_block = block_from_chunks(response) self.equivocating_block = self.modify_to_equivocate( block_from_chunks(response)) self.equivocating_block_summary = block_summary( self.equivocating_block) self.equivocating_block_justification = block_justification( self.equivocating_block) logging.info( f"GOSSIP POST REQUEST STREAM: Equivocating block hash: {self.equivocating_block.block_hash.hex()}" ) for r in response: logging.info( f"GOSSIP POST REQUEST STREAM: {name} => {hexify(r)[:100]}...") yield r
def post_request_stream(self, name, request, response): logging.debug(f"GOSSIP POST REQUEST STREAM: {name}({hexify(request)})") if name == "GetBlockChunked": block = block_from_chunks(response) # Remove approvals from first deploy in the block. del block.body.deploys[0].deploy.approvals[:] private_key = base64.b64decode(self.node.config.node_private_key) update_hashes_and_signature(block, private_key) response = block_to_chunks(block) for r in response: logging.debug(f"GOSSIP POST REQUEST STREAM: {name} => {hexify(r)}") yield r