一种基于Header-Sig流的BFT共识算法实现方法及系统技术方案

技术编号:32009695 阅读:18 留言:0更新日期:2022-01-22 18:26
本发明专利技术公开了一种基于Header

【技术实现步骤摘要】
一种基于Header

Sig流的BFT共识算法实现方法及系统


[0001]本专利技术公开一种基于Header

Sig流的BFT共识算法实现方法及系统,涉及区块链共识算法


技术介绍

[0002]在区块链网络中,数据需要在成百上千的节点上进行复制,所以需要有一些容错机制的共识算法。标准的容错共识算法(如Raft和Paxos)假设当一个节点出现故障时,它只是停止工作而不回复消息。但这些算法不适用于公有区块链,公网中任何人都可以参与,甚至试图破坏网络。为了达成共识,我们需要拜占庭的容错能力。在拜占庭故障中,故障节点能以完全任意的方式运行。甚至可以串通来尝试作恶。因此,本质上,BFT共识算法的目的是在不信任网络(如万维网)中的节点间建立信任。
[0003]记账节点需要收到2/3以上排序节点确认之后,才能共识达成。这样每个记账节点需要分别从区块链网络中超过2/3的排序节点上接收新的区块,然而这是昂贵的,因为区块很大。基于以上考虑,我们提出一种基于Header

Sig流的BFT共识算法实现方法及系统来解决以上问题

技术实现思路

[0004]本专利技术针对现有技术的问题,提供一种基于Header

Sig流的BFT共识算法实现方法及系统,所采用的技术方案为:一种基于Header

Sig流的BFT共识算法实现方法,所述的方法具体步骤如下:
[0005]S1对生成区块的结构进行分拆;
[0006]S2根据记账节点的需要选择出书内容至记账节点的对应区块;
[0007]S3通过排序节点签发区块、通过几张节点拉取区块;
[0008]S4记账节点从一个随机选择的排序节点请求一个完整的区块流,并从其他所有的排序节点只请求Header

Sig流。
[0009]所述S1对生成区块的结构进行分拆的具体步骤如下:
[0010]S101将生成区块中的Header区块头分拆出区块号、当前有效负载的哈希及前一个块的哈希;
[0011]S102将生成区块中的Body区块体分拆出区块中所有交易;
[0012]S103将生成区块中的Metadata元数据分拆出三个字段。
[0013]所述S103将生成区块中的Metadata元数据分拆出三个字段具体包括最后一个配置块的索引、共识者特定的信息和排序节点的签名。
[0014]所述S3通过排序节点签发区块、通过几张节点拉取区块的具体步骤如下:
[0015]S301利用BFT算法通过三阶段广播协议来使所有正常节点按相同顺序执行请求;
[0016]S302选举一个主(Leader)排序节点,调用BFT共识库获得pre

prepare消息。
[0017]所述S301利用BFT算法通过三阶段广播协议来使所有正常节点按相同顺序执行请
求的具体步骤如下:
[0018]S3011通过pre

prepare阶段广播协议输出pre

prepare消息;
[0019]S3012通过prepare阶段广播协议输出prepare消息;
[0020]S3013通过mmit阶段广播协议输出commit消息。
[0021]一种基于Header

Sig流的BFT共识算法实现系统,所述的系统具体包括结构分拆模块、区块编辑模块、区块验证模块和节点请求模块:
[0022]结构分拆模块:对生成区块的结构进行分拆;
[0023]区块编辑模块:根据记账节点的需要选择出书内容至记账节点的对应区块;
[0024]区块验证模块:通过排序节点签发区块、通过几张节点拉取区块;
[0025]节点请求模块:记账节点从一个随机选择的排序节点请求一个完整的区块流,并从其他所有的排序节点只请求Header

Sig流。
[0026]所述结构分拆模块具体包括区块头拆分模块、区块体拆分模块和元数据拆分模块:
[0027]括区块头拆分模块:将生成区块中的Header区块头分拆出区块号、当前有效负载的哈希及前一个块的哈希;
[0028]区块体拆分模块:将生成区块中的Body区块体分拆出区块中所有交易;
[0029]元数据拆分模块:将生成区块中的Metadata元数据分拆出三个字段。
[0030]所述元数据拆分模块分拆出三个字段具体包括最后一个配置块的索引、共识者特定的信息和排序节点的签名。
[0031]所述区块验证模块具体包括顺序执行模块和节点拉取模块:
[0032]顺序执行模块:利用BFT算法通过三阶段广播协议来使所有正常节点按相同顺序执行请求;
[0033]节点拉取模块:选举一个主(Leader)排序节点,调用BFT共识库获得pre

prepare消息。
[0034]所述顺序执行模块具体包括协议处理模块A、协议处理模块B和协议处理模块C:
[0035]协议处理模块A:通过pre

prepare阶段广播协议输出pre

prepare消息;
[0036]协议处理模块B:通过prepare阶段广播协议输出prepare消息;
[0037]协议处理模块C:通过mmit阶段广播协议输出commit消息。
[0038]本专利技术的有益效果为:本专利技术的目的是提供一种基于Header

Sig流的BFT共识算法实现方法及系统,优化BFT共识算法的共识过程,能够在保持BFT共识特征完成的前提下,减轻共识过程中网络和磁盘空间的占用;从而使BFT共识的并发性能接近非拜占庭共识,实现现实中实用的BFT算法。
附图说明
[0039]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0040]图1是本专利技术方法的流程图;图2是本专利技术系统的结构示意图;图3是本专利技术实施例
的区块链结构示意图。
具体实施方式
[0041]下面结合附图和具体实施例对本专利技术作进一步说明,以使本领域的技术人员可以更好地理解本专利技术并能予以实施,但所举实施例不作为对本专利技术的限定。
[0042]实施例一:
[0043]一种基于Header

Sig流的BFT共识算法实现方法,所述的方法具体步骤如下:
[0044]S1对生成区块的结构进行分拆;
[0045]S2根据记账节点的需要选择出书内容至记账节点的对应区块;
[0046]S3通过排序节点签发区块、通过几张节点拉取区块;
[004本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Header

Sig流的BFT共识算法实现方法,其特征是所述的方法具体步骤如下:S1对生成区块的结构进行分拆;S2根据记账节点的需要选择出书内容至记账节点的对应区块;S3通过排序节点签发区块、通过几张节点拉取区块;S4记账节点从一个随机选择的排序节点请求一个完整的区块流,并从其他所有的排序节点只请求Header

Sig流。2.根据权利要求1所述的方法,其特征是所述S1对生成区块的结构进行分拆的具体步骤如下:S101将生成区块中的Header区块头分拆出区块号、当前有效负载的哈希及前一个块的哈希;S102将生成区块中的Body区块体分拆出区块中所有交易;S103将生成区块中的Metadata元数据分拆出三个字段。3.根据权利要求2所述的方法,其特征是所述S103将生成区块中的Metadata元数据分拆出三个字段具体包括最后一个配置块的索引、识者特定的信息和排序节点的签名。4.根据权利要求3所述的方法,其特征是所述S3通过排序节点签发区块、通过几张节点拉取区块的具体步骤如下:S301利用BFT算法通过三阶段广播协议来使所有正常节点按相同顺序执行请求;S302选举一个主(Leader)排序节点,调用BFT共识库获得pre

prepare消息。5.根据权利要求4所述的方法,其特征是所述S301利用BFT算法通过三阶段广播协议来使所有正常节点按相同顺序执行请求的具体步骤如下:S3011通过pre

prepare阶段广播协议输出pre

prepare消息;S3012通过prepare阶段广播协议输出prepare消息;S3013通过mmit阶段广播协议输出commit消息。6.一种基于Header

Sig流的B...

【专利技术属性】
技术研发人员:宋明明魏金雷王伟兵杨海勇张岚
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

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

1