当前位置: 首页 > 专利查询>鹏城实验室专利>正文

基于Raft算法的命名数据网络区块链的共识方法及装置制造方法及图纸

技术编号:38870645 阅读:12 留言:0更新日期:2023-09-22 14:07
本申请公开了基于Raft算法的命名数据网络区块链的共识方法及装置,共识方法包括:接收用户创建的交易并将交易放入交易池;将交易打包成区块并置为待处理状态,将待处理状态的区块放入区块池中;通过网络层广播日志复制消息;接收跟随者节点通过网络层发送的日志获取消息,并向跟随者节点返回待处理状态的区块的区块数据;当接收到跟随者节点发送的日志复制确认消息,且确定区块链中超过预设数目的跟随者节点成功复制所述待处理状态的区块,将待处理状态的区块置为已提交状态,并将已提交状态的区块放入区块池中;通过网络层广播第一心跳消息。在本申请实施例中,能够结合交互设备的输入情况进行编码,达到提升编码速度和交互流畅度的目的。畅度的目的。畅度的目的。

【技术实现步骤摘要】
基于Raft算法的命名数据网络区块链的共识方法及装置


[0001]本申请涉及区块链
,尤其涉及一种基于Raft算法的命名数据网络区块链的共识方法及装置。

技术介绍

[0002]区块链技术诞生至今已有十多年时间,因其具有去中心化、不可篡改、可回溯等特点,不仅在金融行业体现出巨大应用前景,在物联网、公共服务等领域也受到极大关注。随着区块链应用越来越广,对于网络通信的要求也越来越高,区块链系统需要在网络中同步传输大量数据,而传统的TCP/IP网络架构采用点对点的通信机制,势必会导致大量冗余流量,增加了网络开销和传播延迟。
[0003]在未来网络架构研究方案中,命名数据网络(Named Data Networking,简称NDN),具备支持内容分发、多播广播、网络缓存等特点。NDN多播广播和网内缓存机制能加快区块链同步速度,避免网络拥塞。NDN基于内容分发与区块链“将交易方的信息隐藏,但公开交易内容”的设计思想高度吻合。因此,将NDN网络与区块链技术相融合将成为未来区块链技术发展的重要方向。
[0004]在NDN网络中,NDN的数据分发采用拉取的方式,区块链技术采用的是主动推送的通信方式,现有的共识算法均无法直接应用于NDN网络区块链系统的共识层中,还需要解决NDN的数据分发机制和区块链的数据通信机制不兼容的问题。

技术实现思路

[0005]本申请实施例提供了一种基于Raft算法的命名数据网络区块链的共识方法及装置,能够解决NDN的数据分发机制和区块链的数据通信机制不兼容的问题。
>[0006]第一方面,本申请实施例提供了一种基于Raft算法的命名数据网络区块链的共识方法,所述区块链包括一个领导者节点和若干个跟随者节点,所述领导者节点向所述跟随者节点定期发送第一心跳消息,所述跟随者节点向所述领导者节点定期发送第二心跳消息,所述领导者节点通过日志复制消息通知所述跟随者节点复制区块,所述跟随者节点通过日志复制确认消息通知所述领导者节点复制区块完成,所述第一心跳消息、第二心跳消息、所述日志复制消息和所述日志复制确认消息以兴趣包名称进行定义;
[0007]所述共识方法包括:
[0008]接收用户创建的交易并将所述交易放入交易池;
[0009]将所述交易打包成区块并置为待处理状态,将待处理状态的区块放入区块池中;
[0010]通过网络层广播所述日志复制消息,以通知所述跟随者节点复制所述待处理状态的区块;
[0011]接收所述跟随者节点通过网络层发送的日志获取消息,并向所述跟随者节点返回所述待处理状态的区块的区块数据;
[0012]当接收到所述跟随者节点发送的所述日志复制确认消息,且确定所述区块链中超
过预设数目的所述跟随者节点成功复制所述待处理状态的区块,将所述待处理状态的区块置为已提交状态,并将所述已提交状态的区块放入所述区块池中;
[0013]通过网络层广播所述第一心跳消息,以通知所述跟随者节点同步日志号以将所述待处理状态的区块置为已提交状态。
[0014]在一些实施例中,所述第一心跳消息和所述日志复制消息具有相同的兴趣包格式,所述第一心跳消息的兴趣包名称定义包括第一注册路由字符串和第一已提交状态日志号,所述日志复制消息的兴趣包名称定义包括所述第一注册路由字符串、所述第一已提交状态日志号和日志复制字段,所述第一注册路由字符串用于表示当前兴趣包为广播发送的、基于Raft算法的心跳类型兴趣包,所述第一已提交状态日志号用于表示所述领导者节点中已提交状态的区块对应的日志号,所述日志复制字段用于指示所述跟随者节点向所述领导者节点拉取的区块数据。
[0015]在一些实施例中,所述日志复制字段包括<PreLogNumber>字段和<PreLogTerm>字段,所述<PreLogNumber>字段的值为所述领导者节点的前一个日志编号,所述<PreLogTerm>字段的值为所述领导者节点的前一个日志的任期编号;
[0016]在所述日志复制消息中,所述<PreLogNumber>字段和所述<PreLogTerm>字段被定义为对应的值;在所述第一心跳消息中,所述<PreLogNumber>字段和所述<PreLogTerm>字段不作定义。
[0017]在一些实施例中,所述接收用户创建的交易并将交易放入交易池,包括:
[0018]当用户在所述跟随者节点创建交易,通过网络层接收所述跟随者节点发送的交易数据;
[0019]将所述交易的交易数据放入交易池。
[0020]第二方面,本申请实施例提供了一种基于Raft算法的命名数据网络区块链的共识方法,所述区块链包括一个领导者节点和若干个跟随者节点,所述领导者节点向所述跟随者节点定期发送第一心跳消息,所述跟随者节点向所述领导者节点定期发送第二心跳消息,所述领导者节点通过日志复制消息通知所述跟随者节点复制区块,所述跟随者节点通过日志复制确认消息通知所述领导者节点复制区块完成,所述第一心跳消息、所述第二心跳消息、所述日志复制消息和所述日志复制确认消息以兴趣包名称进行定义;
[0021]所述共识方法包括:
[0022]接收所述领导者节点广播的所述日志复制消息,所述日志复制消息用于通知所述跟随者节点复制待处理状态的区块;
[0023]向所述领导者节点发送日志获取消息,并接收所述领导者节点根据所述日志获取消息返回的所述待处理的区块的区块数据;
[0024]复制所述区块数据,将复制完成得到的区块置为待处理状态并放入区块池中;
[0025]向所述领导者节点发送所述日志复制确认消息;
[0026]接收所述领导者节点广播所述第一心跳消息,所述第一心跳消息用于通知所述跟随者节点同步日志号以将所述待处理状态的区块置为已提交状态。
[0027]在一些实施例中,所述日志复制消息的兴趣包名称定义包括日志复制字段,所述日志复制字段包括<PreLogNumber>字段和<PreLogTerm>字段,所述<PreLogNumber>字段的值为所述领导者节点的前一个日志编号,所述<PreLogTerm>字段的值为所述领导者节点的
前一个日志的任期编号;
[0028]所述向所述领导者节点发送日志获取消息,包括:
[0029]确定本地是否存有日志编号为所述<PreLogNumber>字段的值且对应任期编号为所述<PreLogTerm>字段的值对应的日志;
[0030]如有,向所述领导者节点发送日志获取消息,所述日志获取消息包括用于指示日志编号的&l本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于Raft算法的命名数据网络区块链的共识方法,其特征在于,所述区块链包括一个领导者节点和若干个跟随者节点,所述领导者节点向所述跟随者节点定期发送第一心跳消息,所述跟随者节点向所述领导者节点定期发送第二心跳消息,所述领导者节点通过日志复制消息通知所述跟随者节点复制区块,所述跟随者节点通过日志复制确认消息通知所述领导者节点复制区块完成,所述第一心跳消息、所述第二心跳消息、所述日志复制消息和所述日志复制确认消息以兴趣包名称进行定义;所述共识方法包括:接收用户创建的交易并将所述交易放入交易池;将所述交易打包成区块并置为待处理状态,将待处理状态的区块放入区块池中;通过网络层广播所述日志复制消息,以通知所述跟随者节点复制所述待处理状态的区块;接收所述跟随者节点通过网络层发送的日志获取消息,并向所述跟随者节点返回所述待处理状态的区块的区块数据;当接收到所述跟随者节点发送的所述日志复制确认消息,且确定所述区块链中超过预设数目的所述跟随者节点成功复制所述待处理状态的区块,将所述待处理状态的区块置为已提交状态,并将所述已提交状态的区块放入所述区块池中;通过网络层广播所述第一心跳消息,以通知所述跟随者节点将所述待处理状态的区块置为已提交状态。2.根据权利要求1所述的共识方法,其特征在于,所述第一心跳消息和所述日志复制消息具有相同的兴趣包格式,所述第一心跳消息的兴趣包名称定义包括第一注册路由字符串和第一已提交状态日志号,所述日志复制消息的兴趣包名称定义包括所述第一注册路由字符串、所述第一已提交状态日志号和日志复制字段,所述第一注册路由字符串用于表示当前兴趣包为广播发送的、基于Raft算法的心跳类型兴趣包,所述第一已提交状态日志号用于表示所述领导者节点中已提交状态的区块对应的日志号,所述日志复制字段用于指示所述跟随者节点向所述领导者节点拉取的区块数据。3.根据权利要求2所述的共识方法,其特征在于,所述日志复制字段包括<PreLogNumber>字段和<PreLogTerm>字段,所述<PreLogNumber>字段的值为所述领导者节点的前一个日志编号,所述<PreLogTerm>字段的值为所述领导者节点的前一个日志的任期编号;在所述日志复制消息中,所述<PreLogNumber>字段和所述<PreLogTerm>字段被定义为对应的值;在所述第一心跳消息中,所述<PreLogNumber>字段和所述<PreLogTerm>字段不作定义。4.根据权利要求1所述的共识方法,其特征在于,所述接收用户创建的交易并将交易放入交易池,包括:当用户在所述跟随者节点创建交易,通过网络层接收所述跟随者节点发送的交易数据;将所述交易的交易数据放入交易池。5.一种基于Raft算法的命名数据网络区块链的共识方法,其特征在于,所述区块链包括一个领导者节点和若干个跟随者节点,所述领导者节点向所述跟随者节点定期发送第一
心跳消息,所述跟随者节点向所述领导者节点定期发送第二心跳消息,所述领导者节点通过日志复制消息通知所述跟随者节点复制区块,所述跟随者节点通过日志复制确认消息通知所述领导者节点复制区块完成,所述第一心跳消息、所述第二心跳消息、所述日志复制消息和所述日志复制确认消息以兴趣包名称进行定义;所述共识方法包括:接收所述领导者节点广播的所述日志复制消息,所述日志复制消息用于通知所述跟随者节点复制待处理状态的区块;向所述领导者节点发送日志获取消息,并接收所述领导者节点根据所述日志获取消息返回的所述待处理的区块的区块数据;复制所述区块数据,将复制完成得到的区块置为待处理状态并放入区块池中;向所述领导者节点发送所述日志复制确认消息;接收所述领导者节点广播的所述第一心跳消息,所述第一心跳消息用于通知所述跟随者节点将所述待处理状态的区块置为已提交状态。6.根据权利要求5所述的共识方法,其特征在于,所述日志复制消息的兴趣包名称定义包括日志复制字段,所述日志复制字段包括<PreLogNumber>字段和<PreLogTerm>字段,所述<PreLogNumber>字段的值为所述领导者节点的前一个日志编号,所述<PreLogTerm>字段的值为所述领导者节点的前一个日志的任期编号;所述向所述领导者节点发送日志获取消息,包括:确定本地是否存有日志编号为所述<PreLogNumber>字段的值且对应任期编号为所述<PreLogTerm&a...

【专利技术属性】
技术研发人员:黄炜李敏杨孙傲王坤梁腾张宾张宇张伟哲
申请(专利权)人:鹏城实验室
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1