class PB_FT(): def __init__(self,last_sequence_id,msg_logs,request,view_id): self.last_sequence_id = last_sequence_id self.msg_logs = msg_logs self.request = request self.view_id = view_id def start_consensus(self,request): # 主节点选取 # 生成唯一标识id sequence_id = int(time.time() * 1000000000) if self.last_sequence_id != -1: while self.last_sequence_id >= sequence_id: sequence_id += 1 request.sequence_id = sequence_id self.msg_logs.req_msg = request digest, err = self.digests(request) if err != 0: print(err) return None,err self.current_stage = "PrePrepared" return PrePrepareMsg(self.view_id,sequence_id,digest,request)
时间: 2024-04-07 18:32:28 浏览: 60
DSDV.rar_a:dsdv_dsdv_if
这段代码看起来像是一个 Python 类,名为 PB_FT,其中包含了一个构造函数 __init__ 和一个方法 start_consensus。构造函数接受四个参数,分别是 last_sequence_id、msg_logs、request 和 view_id。start_consensus 方法接受一个参数 request,并且返回一个 PrePrepareMsg 对象或者错误码。在该方法内部,会根据时间戳生成一个唯一的标识符 sequence_id,并且判断是否需要对其进行调整,然后将 request 存储到 msg_logs 中,并且计算其摘要 digest。最后,返回一个 PrePrepareMsg 对象,其中包含了 view_id、sequence_id、digest 和 request。
阅读全文