github pbft代码问题
最近在做毕设,参考github相关代码时发现一些问题,这里给自己做个笔记提醒。(github总是犯神经,报错超时无语)
链接为 https://github.com/kenzarh/SG-PBFT
代码中间进行视图切换的消息类型操作时,有一句逻辑为给全部节点发送new-view类型消息的代码,直接修改main.py的timer_limit_before_view_change测试view-change操作时会触发receive方法中一些解密的操作问题,实际上问题出在给全部节点发送new-view类型消息这里。
源代码为:
点击查看代码
if (min_s>=self.stable_checkpoint["sequence_number"]):
# The primary node enters the new view
self.view_number=new_asked_view
# Decrement the credibility of the previous primary node
#credibility[self.primary_node_id] -= 1
# Change primary node (locally first then broadcast view change)
self.primary_node_id=self.node_id
# self.broadcast_message(the_nodes_ids_list,new_view_message) # broadcast_message 在接受消息时进行解密,而这里直接就发送了,没有进行加密操作,应当设置方法来集成操作
self.broadcast_new_view_message(the_nodes_ids_list,new_view_message)
所以我们需要给发送new-view消息创建独立的方法进行集成。
修改添加代码如下:
点击查看代码
def broadcast_new_view_message(self,nodes_ids_list,new_view_message):
signing_key = SigningKey.generate()
# Sign the message with the signing key
signed_new_view = signing_key.sign(str(new_view_message).encode())
# Obtain the verify key for a given signing key
verify_key = signing_key.verify_key
# Serialize the verify key to send it to a third party
public_key = verify_key.encode()
new_view_message = signed_new_view +(b'split')+ public_key
self.broadcast_message(nodes_ids_list,new_view_message)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通