首页 > 其他分享 >github pbft代码问题

github pbft代码问题

时间:2024-12-19 21:30:43浏览次数:9  
标签:pbft github 代码 broadcast key new message self view

最近在做毕设,参考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)

标签:pbft,github,代码,broadcast,key,new,message,self,view
From: https://www.cnblogs.com/jocker-love-you/p/18617962

相关文章

  • 微服务/java微服务代码实例
    定义:**微服务(Microservices)**是一种架构风格,它将单一的应用程序划分成多个小的、独立的、功能明确的服务,每个服务都可以独立部署和运行。每个微服务通常对应应用中的一个特定功能或业务模块,并且它们通过网络通信(如HTTP/REST、gRPC等)相互协作,组成一个完整的系统。详细的微服......
  • GitHub 推出免费版 GitHub Copilot:提供每月2,000次代码补全和50条聊天消息,支持多种主
    ❤️如果你也关注AI的发展现状,且对AI应用开发非常感兴趣,我会每日跟你分享最新的AI资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!......
  • 异常部分代码赏析
    8章异常部分代码赏析本节内容可以通过三个程序综合起来帮助理解。第一个是帮助理解创建进程和回收进程的shellex.c。第二个是帮助理解信号阻塞的signal.c第三个是帮助理解并发导致的竞争的procmask.c第四个则是帮助理解如何让父进程显式地回收子进程的sigsuspend.c下面分别......
  • YOLOv9-0.1部分代码阅读笔记-autobatch.py
    autobatch.pyutils\autobatch.py目录autobatch.py1.所需的库和模块2.defcheck_train_batch_size(model,imgsz=640,amp=True): 3.defautobatch(model,imgsz=640,fraction=0.8,batch_size=16): 1.所需的库和模块fromcopyimportdeepcopyimportnumpyasn......
  • mysql期末大题满分指南(ER图关系模型+mysql代码题)
    好久没有写博客最近开始期末周,完成期末项目、答辩、准备笔试考试。所以也是信息收集学了将就1/2 昨天晚上刚刚结束了mysql期末考试就此来写一个博客。题型:一、选择、填空、判断、简答题推荐这位老哥的题库非常全考试做选择题和填空题都非常顺利。预计选择、填空、判......
  • 优化 MyBatis SqlSession 工具类:提升代码健壮性与可维护性
    优化MyBatisSqlSession工具类:提升代码健壮性与可维护性引言在Java开发中,MyBatis是一个广泛使用的持久层框架,而SqlSession是MyBatis的核心对象之一。为了简化SqlSession的管理,我们通常会编写一个工具类来封装其创建、提交、回滚和关闭等操作。本文将基于一个常见的......
  • 二叉树的代码实现
    main.c:tree.c:创建根,前序遍历,中序遍历,后序遍历,层序遍历,树的广度,树的深度,释放tree.h:queue.h:队列的代码实现:队列的实现-CSDN博客......
  • 多个好看的css动态特效按钮效果代码
    下面这些CSS按钮特效代码因其独特的设计和交互性,适用于多个现代数字界面和用户体验领域。概括而言,开发者可以将这段代码应用于以下领域:网页设计与开发:在构建网站时,这些按钮可以用于导航栏、表单提交、购物车结账等关键位置,吸引用户点击并提升整体视觉效果。移动应用界面:对于移......
  • python渗透开发工具脚本之判断域名是否存在CDN 结合真实IP 组合代码逻辑 nslookup 三
    目录什么是CDN为什么要判断域名是否开启CDNCDN如何判断是否开启web工具判断win自带工具pinglinuxdig信息收集真实IP收集nslookup三种玩法判断CDNnslookupcmd中的nslookuppython中的nslookup ---基础玩法python实现自动化判断返回数据判断是否存在CDN基础实......
  • 探索Bearly Code Interpreter:远程代码执行与数据交互的完美结合
    #探索BearlyCodeInterpreter:远程代码执行与数据交互的完美结合##引言随着人工智能和编程领域的快速发展,安全高效的代码执行环境变得越来越重要。这篇文章将介绍BearlyCodeInterpreter,一个允许远程执行代码的强大工具,使得如代码解释器等功能的实现更加安全可靠。我......