一种基于共享存储的新型区块链共识方法与流程

文档序号:23551544发布日期:2021-01-05 21:10阅读:102来源:国知局
一种基于共享存储的新型区块链共识方法与流程

本发明属于区块链共识领域,特别涉及一种引入共享存储模式的区块链中的共识方法。



背景技术:

目前比较应用于区块链中主流的共识算法有工作量证明(proofofwork)、权益证明(proofofstake)、授权权益证明(delegatedproofofstake)和实用拜占庭容错算法(practicalbyzantinefaulttolerance)。

工作量证明机制(pow)是比特币网络中所使用的共识算法,是由中本聪的提出,其思想可以概括为通过工作以获得指定成果,用成果来证明曾经付出的努力。共识过程是节点凭借其哈希计算能力去寻找符合要求的随机数,一旦找到符合要求的nonce,该节点便将结果广播到网络,其它节点会验证收到的随机数是否符合难度要求,若符合则证明广播节点已经做过了适量的工作——哈希运算,其它节点停止竞争该区块的记账权,转而继续做哈希运算,继续竞争下一区块的记账权。但存在严重浪费电力等资源,依赖专业挖矿硬件资源,算力集中在几大矿场之间,有中心化风险且效率低下,交易吞吐量小的不足。

权益证明算法(pos)是在总结了工作量证明算法不足的基础上提出的,其中由vlad和vitalik带领研宄的casper协议是具有代表性的权益证明机制。权益证明是根据用户所拥有的权益来决定区块链中下一个区块由谁来构造,用户产生一个区块的概率和用户在区块链中拥有的权益正相关。该机制不是要求投入计算能力扩展区块链,而是根据他们在系统中的利益。它将区块链的共识过程看成是类似于领导人选举的过程,权益证明算法从根本上来讲是用系统代币的权益代替了大部分工作量证明中节点拥有的算力的权益,从而避免了大量的算力资源浪费,但存在“无利害关系”问题,不利于系统稳定。

授权权益证明算法(dpos)是由bitshares尝试解决pow和pos存在的问题的而提出的,类似于董事会的投票机制。引入了见证人这个概念,其与权益证明算法的主要区别是其并不是由所有拥有系统权益的人参加共识过程,而是有拥有权益的所有节点选举出前n个节点(n通常为101)作为见证人。因此,它的优点可以概括为通过缩小参与核心共识过程的节点数量来提高共识效率,但同时由于核心节点的数量的缩小,使去中心化的实现存在争议。

实用拜占庭容错算法(pbft)是miguelcastro(卡斯特罗)和barbaraliskov(利斯科夫)在1999年提出来的。目前,拜占庭协议已经可以嵌入到hdfs,zookeeper等广泛使用的分布式存储系统中。该算法通过主节点排序请求,从节点响应请求,多数节点响应结果最终达成共识。pbft算法具有共识结果的一致性和正确性程度高的优势,同时存在算法复杂度较高通信量大、当节点数量过多时运行效率较低的不足。

目前主流区块链均采用点对点的信息传递模型。点对点传输也叫做“对等网络”。传统中心化网络系统需要中心提供强大稳定的服务器和足够的带宽来支持客户端节点使用。通过p2p网络,区块链系统可以在没有中心服务器的情况下达到快速同步数据、实现共识机制的一致性的目的。但当前p2p网络模型存在信息交互复杂的问题,不利于系统的可扩展性的发展。

综上所述,当前区块链共识算法的研究工作取得了一定进展。研究发现区块链共识算法虽能实现去中心化条件下的一致性,但很难同时具备吞吐量大,共识时间短、容错性能好这一系列特点。因此,如何优化或设计新型共识算法已经成为区块链共识研究的关键。



技术实现要素:

为解决上述技术问题,本发明提供了一种基于共享存储的新型区块链共识方法,通过共享存储通讯模型与互斥机制实现共识,增加了系统的容错性、减少了系统信息交换的次数,从而提高共识效率降低共识成本。

为达到上述目的,本发明的技术方案如下:

一种基于共享存储的新型区块链共识方法,包括以下步骤:

s1.领导选举阶段:通过基于共享存储的互斥从validator节点中选出唯一的leader节点;

s2.区块生成阶段:由选举阶段产生的leader节点生成相应的新区块,并通知其它validator节点进行验证和leger节点进行对验证阶段产生的结果进行查看;

s3.区块验证阶段:系统中validator节点对新区块进行验证;

s4.区块链更新阶段:系统中leger节点和validator节点访问验证信息决定是否更新本地区块链,达成共识。

上述方案中,所述步骤s1具体步骤如下:

s11.若validator节点对应id中jionlist为ture则表示本validator节点参与此轮领导节点的竞争,若不满足则validator节点不参与此轮竞争,则不做任何处理;

s12.参与竞争的validator节点若发现变量k与自己的id不同,则将自己id对应的mutexlist设置为false,其中若id=k的validator节点没有竞争的意愿即joinlist[k]=false,则validator节点将自己的id赋值给k;

s13.参与竞争的validator节点若发现变量k与自己的id相同,则将自己id对应的mutexlist设置为ture,并等待系统中只有自己作为唯一的mutexlist值为ture的validator节点时,结束本轮循环,即在领导选举阶段,该validator节点成为了leader节点,完成了leader节点的选取。

进一步的技术方案中,所述步骤s2具体步骤如下:

s21.系统中trander节点发送交易数据到交易池当中,leader节点收集交易数据进行区块打包;

s22.并将打包好的区块写到放到区块的共享区域;

s23.区块打包好后leader节点给所有的validator节点和leger节点发送创建区块完成的信息,通知其它节点对于共享区域的访问。

进一步的技术方案中,所述步骤s3具体步骤如下:

s31.系统中的validator节点收到本轮leader节点发送来的区块创建成功消息后,将访问生成的区块并验证本轮leader节点生成的区块是否正确,若判断本轮生成区块正确则将validatelist[id]设置写为ture,否则设置为false;

s32.系统中的ledger节点收到本轮leader节点发送来的区块创建成功消息后,访问区块的共享区域,为区块链更新阶段做准备。

更进一步的技术方案中,所述步骤s4具体步骤如下:

s41.对于leger节点和validator节点而言,访问记录validator节点参与本轮竞争的joinlist数组和对区块验证结果的validatelist数组,如果本轮中参与竞争的validator节点里有一半以上认可leader节点所记录的数据,则更新本地的账本,否则数据无效将不更新;

s42.对于满足id=k条件的validator节点而言,即leader节点,要额外释放互斥变量mutexlist和参与变量joinlist,为新一轮的领导节点的选取提供条件;

s43.对所有id对应的validatelist数组进行释放,即将null赋值给对应的validatelist,为下一轮区块的验证提供条件。

进一步的,所述validator节点数量与信息交互量成线性关系。

有益效果

通过上述技术方案,本发明提供的一种基于共享存储的新型区块链共识方法与现有技术方案相比,具体具有以下技术特征及效果:

(1)本发明考虑了传统的p2p网络模型存在信息交互复杂的问题,不利于系统的可扩展性的发展。应用共享存储消息传递方式代替传统的p2p模式,实现了信息交互量由平方级向线性级进行转变,即由o(n2)向o(n)转变。

(2)本发明通过互斥选取唯一的leader矿工节点,从而保证了在区块链网络中账本的唯一性,从而避免链路分叉,并引入了互斥竞争避免传统竞争如pow、pos造成的资源浪费的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例所公开的一种基于共享存储的新型区块链共识方法阶段示意图;

图2为本发明实施例所公开的一种基于共享存储的新型区块链共识方法具体流程示意图;

图3为p2p网络模型四节点交互示意图;

图4为本申请四节点交互示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

本发明提供了一种基于共享存储的新型区块链共识方法,如图1所示,该方法引入了共享存储消息传递模式和互斥竞争机制,具备吞吐量大,共识时间短、容错性能好的特点,该技术为区块链网络中的节点共识问题提供了新思路,并且在一定程度上避免了区块链网络中的分叉问题和资源浪费问题。

如图2所示,具体实施例如下:

一种基于共享存储的新型区块链共识方法,包括以下步骤:

s1.领导选举阶段:

s11.若validator节点对应id中jionlist为ture则表示本validator节点参与此轮领导节点的竞争,若不满足则validator节点不参与此轮竞争,则不做任何处理;

s12.参与竞争的validator节点若发现变量k与自己的id不同,则将自己id对应的mutexlist设置为false,其中若id=k的validator节点没有竞争的意愿即joinlist[k]=false,则validator节点将自己的id赋值给k;

s13.参与竞争的validator节点若发现变量k与自己的id相同,则将自己id对应的mutexlist设置为ture,并等待系统中只有自己作为唯一的mutexlist值为ture的validator节点时,结束本轮循环,即在领导选举阶段,该validator节点成为了leader节点,完成了leader节点的选取。

s2.区块提议阶段:

s21.系统中trander节点发送交易数据到交易池当中,leader节点收集交易数据进行区块打包;

s22.并将打包好的区块写到放到区块的共享区域;

s23.区块打包好后leader节点给所有的validator节点和leger节点发送创建区块完成的信息,通知其它节点对于共享区域的访问。

s3.区块验证阶段:

s31.系统中的validator节点收到本轮leader节点发送来的区块创建成功消息后,将访问生成的区块并验证本轮leader节点生成的区块是否正确,若判断本轮生成区块正确则将validatelist[id]设置写为ture,否则设置为false;

s32.系统中的ledger节点收到本轮leader节点发送来的区块创建成功消息后,访问区块的共享区域,为区块链更新阶段做准备。

s4.区块链更新阶段:

s41.对于leger节点和validator节点而言,访问记录validator节点参与本轮竞争的joinlist数组和对区块验证结果的validatelist数组,如果本轮中参与竞争的validator节点里有一半以上的节点认可leader节点所记录的数据,则更新本地的账本,否则数据无效将不更新;

s42.对于满足id=k条件的validator节点而言,即leader节点,要额外释放互斥变量mutexlist和参与变量joinlist,为新一轮的领导节点的选取提供条件;

s43.对所有id对应的validatelist数组进行释放,即将null赋值给对应的validatelist,为下一轮区块的验证提供条件。

下面将本申请与传统的p2p网络模型数据当validator节点数量变化时,信息交互数量比较如表1所示:

表1本申请与传统的p2p网络模型数据比较表

从表1中可以看出,本申请所述validator节点数量与信息交互量成线性关系,validator节点数量与信息交互数量相同,随着节点数量的增多,其交互次数远少于p2p网络模型,有效的提高时效。

结合图3-4,以abcd四个validator节点为例,点对点传输模型在有拜占庭节点参与的情况下容错率在1/3,而本模型是基于共享存储传输模型在有拜占庭节点参与的情况下容错率在1/2。本模型中节点通过建立需要其它节点信息时才访问公共存储区域的信息交互模型,不仅减少了不必要的信息传输,而且限制了拜占庭节点中给其它节点乱发消息的行为(验证阶段的验证信息是实时公开每个节点看到的是同一个版本),从而增加了容错性。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1