def phase_1_broadcast(self, block_info, phase_type): """ sends phase_1 information for phase_2 execution """ phase_1_msg = thrift_converter.get_p1_message(block_info) ver_ids = [] for node in self.peer_dict[phase_type]: try: ver_ids += node.client.phase_1_message(phase_1_msg) vrs = self.get_vrs(node, ver_ids) record = message_types.VerificationRecord() record.p1 = phase_1_msg vrs.append(record) self.resolve_data(vrs, 1) except Exception as ex: template = "An exception of type {0} occurred. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) logger().warning(message)
def public_broadcast(self, block_info, phase): """ broadcast to phase 5 nodes for public transmission """ if block_info and phase <= PHASE_5_NODE: # being asked for public broadcast, connect to known phase 5 nodes at this point try: if self.phases: self.connect_nodes(PHASE_5_NODE) except Exception as ex: template = "An exception of type {0} occured. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) logger().warning(message) phase_msg = None verification_record = message_types.VerificationRecord() phase_5_msg = message_types.Phase_5_msg() if phase == 1: phase_msg = thrift_converter.get_p1_message(block_info) verification_record.p1 = phase_msg elif phase == 2: phase_msg = thrift_converter.get_p2_message(block_info) verification_record.p2 = phase_msg elif phase == 3: phase_msg = thrift_converter.get_p3_message(block_info) verification_record.p3 = phase_msg elif phase == 4: pass phase_5_msg.verification_record = verification_record # send block to all known phase 5 nodes if phase_msg: for node in self.peer_dict[PHASE_5_NODE]: try: node.client.phase_5_message(phase_5_msg) logger().info('block sent for public transmission...') except: logger().warning('failed to submit to node %s', node.node_id) continue