一种可验证的DPoS共识方法及其系统与流程

文档序号:18160029发布日期:2019-07-13 09:17阅读:425来源:国知局
一种可验证的DPoS共识方法及其系统与流程

本申请涉及区块链技术领域,尤其涉及一种可验证的dpos共识方法及其系统。



背景技术:

目前,区块链、物联网以及人工智能并列为未来科技的三大技术。区块链技术是基于去中心化的对等网络,用开源软件把密码学原理、时序数据和共识机制相结合,来保障分布式数据库中各节点的连贯和持续,使信息能即时验证、可追溯,但难以篡改和无法屏蔽,从而创造了一套隐私、高效、安全的共享价值体系。

共识算法是区块链技术的核心组成部分,主要解决由构建和检验区块的主体是谁,以及如何维护区块链统一的问题。在中心化的结构体系中,整个系统的共识算法由中心来决定,各个参与方只需要服从这个中心即可,因此在中心化的系统中,共识算法的建立是极为高效的;而区块链技术是一种去中心化的系统,系统中每个参与节点地位平等,当出现分歧时,共识算法就成为解决此类问题的重要方法与手段。

目前,区块链技术常用的共识算法有工作量证明(proofofwork,pow)、权益证明(proofofstake,pos)、授权股权证明(delegatedproofofstake,dpos)与实用拜占庭容错算法(practicalbyzantinefaulttolerance,pbft)等。

然而,pow算法去中心化程度最高,需要大量的哈希计算,浪费太多电力能源,并且10分钟左右产生一个新的区块,效率较低;dpos算法是pos算法的升级,由节点投票选择若干代理节点,若干代理节点进行验证和记账,30秒左右产生一个新的区块,解决了pow算法效率低下的问题,但是代理节点一般低于100个,中心化程度较低,代理节点容易作恶,安全性相对于pow算法较低。

随着区块链的场景应用越来越广泛,如何找到一种共识方法,不仅能够提高区块的产生效率,而且能够提高区块链系统去中心化程度和安全性,成为亟待解决的问题。



技术实现要素:

为了解决上述问题,本申请提供一种可验证的dpos共识方法及其系统,该方法不仅能够提高区块的产生效率,而且能够提高区块链系统的去中心化程度和安全性。

本申请第一方面公开了一种可验证的dpos共识方法,应用于一种可验证的dpos共识系统中,所述系统包括超级节点、验证节点以及普通节点,所述超级节点用于打包区块和验证区块,所述验证节点用于验证区块,所述普通节点用于同步区块链上的数据;其中,至少一个所述普通节点选择n个超级节点,n为正整数,所述n个超级节点包括第一超级节点;所述方法包括:

所述第一超级节点接收至少一个所述普通节点发送的请求数据,所述请求数据包括请求信息、请求双方地址以及所述请求信息的哈希值;

所述第一超级节点对预设时间段内的第一请求数据打包成第一区块,并对所述第一区块进行验证;

所述第一超级节点对所述第一区块验证通过后,将所述第一区块发送给其余超级节点进行验证,所述其余超级节点为所述n个超级节点中除所述第一超级节点外的超级节点;

所述其余超级节点采用实用拜占庭容错算法对所述第一区块进行验证;

当所述其余超级节点对所述第一区块验证通过后,所述第一超级节点通过可验证的随机算法随机选择m个所述验证节点,m个所述验证节点采用实用拜占庭容错算法对所述第一区块进行验证,m为正整数;

当所述m个验证节点对所述第一区块验证通过后,所述第一区块上链。

在一种可能的实施方式中,超级节点n的取值范围为10-100。

在一种可能的实施方式中,所述请求信息包括交易信息和/或业务信息;其中,所述交易信息包括交易金额和买方的数字签名;所述业务信息包括业务数据,所述业务数据包括业务属性数据、价格数据以及所有者数据。

在一种可能的实施方式中,所述第一请求数据包括所述第一区块与所述第一区块之前区块之间的全部所述请求数据。

在一种可能的实施方式中,所述其余超级节点对所述第一区块验证通过后,所述第一超级节点确定所述第一区块的字节大于预设字节阈值时,所述第一超级节点将所述第一区块划分为至少两个分片区块;所述第一超级节点通过可验证的随机算法随机选择至少两个验证节点组,所述至少两个验证节点组采用实用拜占庭容错算法对所述至少两个分片区块进行验证;其中,一个验证节点组对应验证一个分片区块;所述第一超级节点接受所述至少两个验证节点组对所述至少两个分片区块的通过验证消息,所述第一区块上链。

在一种可能的实施方式中,所述n个超级节点按照顺序打包区块,所述第一超级节点连续打包l个区块后,再按顺序由下一个超级节点打包区块,l为正整数;其中,所述n个超级节点打包区块的顺序,由所述第一超级节点通过迪杰斯特拉算法计算全局路径后确定。

在一种可能的实施方式中,第一超级节点连续打包l个区块,l的取值范围为1-100。

在一种可能的实施方式中,当所述第一超级节点打包第一区块,且确定所述第一区块的字节大于预设字节阈值时,所述第一超级节点将所述第一区块划分为至少两个分片区块;其中,至少两个分片区块包括第一分片区块和所述第二分片区块,第一分片区块由所述第一超级节点打包,所述第二分片区块由所述第一超级节点通过可验证的随机算法随机选择所述其余超级节点中的一个超级节点打包。

在一种可能的实施方式中,当所述其余超级节点对所述第一区块进行验证时,和/或当m个所述验证节点对所述第一区块进行验证时;所述第一超级节点对预设时间段内的第二请求数据打包成第二区块,并对所述第二区块进行验证。

在一种可能的实施方式中,当所述其余超级节点对所述第一区块验证通过后,所述其余超级节点通过可验证的随机算法随机选择m个所述验证节点,m个所述验证节点对所述第一区块进行验证,m为正整数;或

当所述其余超级节点对所述第一区块验证通过后,所述第一超级节点通过可验证的随机算法随机选择m1个所述验证节点,m1个所述验证节点通过可验证的随机算法随机选择m2个所述验证节点,m1、m2均为正整数,且m1+m2=m,m个所述验证节点对所述第一区块进行验证。

在一种可能的实施方式中,验证节点m的取值20-200。

在一种可能的实施方式中,所述第一区块的验证包括对所述第一区块中全部请求数据进行哈希验证和请求双方的身份验证。

本申请第二方面提供一种可验证的dpos共识系统,所述系统包括n个超级节点,验证节点以及普通节点;其中,至少一个所述普通节点选择n个超级节点,n为正整数,所述n个超级节点包括第一超级节点;

所述超级节点用于打包区块和验证区块,所述验证节点用于验证区块,所述普通节点用于同步区块链上的数据;

所述第一超级节点接收至少一个所述普通节点发送的请求数据,所述请求数据包括请求信息、请求双方地址以及所述请求信息的哈希值;

所述第一超级节点对预设时间段内的第一请求数据打包成第一区块,并对所述第一区块进行验证;

所述第一超级节点对所述第一区块验证通过后,将所述第一区块发送给其余超级节点进行验证,所述其余超级节点为所述n个超级节点中除所述第一超级节点外的超级节点;

所述其余超级节点采用实用拜占庭容错算法对所述第一区块进行验证;

当所述其余超级节点对所述第一区块验证通过后,所述第一超级节点通过可验证的随机算法随机选择m个所述验证节点,m个所述验证节点采用实用拜占庭容错算法对所述第一区块进行验证,m为正整数;

当所述m个验证节点对所述第一区块验证通过后,所述第一区块上链。

本申请的方法不仅能够提高区块的产生效率,而且能够提高区块链系统的安全性;相对于dpos共识机制来说,增加了去中心化程度。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。

图1为本申请实施例提供的一种可验证的dpos共识方法流程示意图;

图2为本申请实施例提供的一种可验证的dpos共识系统结构示意图;

图3为本申请实施例提供的一种区块分片进行打包或验证的结构示意图。

具体实施方式

为了更清楚的阐释本申请的整体构思,下面结合说明书附图以示例的方式进行详细说明。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的顺序在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本申请实施例中所称的节点,可以理解为响应外界特定触发条件,并按一定规则做状态转换的抽象机器,可以是手机、平板电脑、掌上电脑、个人pc电脑等可以按照应用软件且能够联网的设备。

如图1所示,一种可验证的dpos共识方法,应用于如图2的可验证的dpos共识系统中。

所述系统包括超级节点、验证节点以及普通节点,所述超级节点用于打包区块和验证区块,所述验证节点用于验证区块,所述普通节点用于同步区块链上的数据;其中,至少一个所述普通节点选择n个超级节点,n为正整数,所述n个超级节点包括第一超级节点。

需要说明的是,超级节点以及验证节点都有普通节点的功能;上述n个超级节点可以由若干位权益人通过电脑(没有同步区块链上的数据)投票产生,也可以由若干位权益人通过普通节点(同步了区块链上的数据)投票产生。

所述方法包括步骤s101-s106。

s101,所述第一超级节点接收至少一个所述普通节点发送的请求数据,所述请求数据包括请求信息、请求双方地址以及所述请求信息的哈希值。

在一个示例中,所述请求信息包括交易信息和/或业务信息;其中,所述交易信息包括交易金额和买方的数字签名;所述业务信息包括业务数据,所述业务数据包括业务属性数据、价格数据以及所有者数据。

此外,业务数据可以是结构化数据,可以包括业务数据的版本信息、价格信息、浏览次数信息、收藏次数信息、数据所有者信息以及数据创建者信息等中的一个或多个;并且,业务数据带有时间戳,是以时间轴连续的数据,例如:版本信息包括1.0版本、2.0版本,价格信息包括初始价格和变动价格。

s102,所述第一超级节点对预设时间段内的第一请求数据打包成第一区块,并对所述第一区块进行验证。

此时,预设时间段是指两个区块生成之间的时间。

在一个示例中,所述第一请求数据包括所述第一区块与所述第一区块之前区块之间的全部所述交易数据。

在一个示例中,所述n个超级节点按照顺序打包区块,所述第一超级节点连续打包l个区块后,再按顺序由下一个超级节点打包区块,l为正整数;其中,所述n个超级节点打包区块的顺序,由所述第一超级节点通过动态规划方法确定。

此外,上述提到的每轮打包区块之前,需要确定打包区块的超级节点的顺序,以使得在各超级节点在每一轮打包区块过程中,全局路径最短;此时,可以采用动态规划方法解决该旅行商问题(travelingsalesmanproblem,tsp),即已知任意两个节点的距离,求如何从一个节点遍历所有节点,路径最短的问题。动态规划方法可以采用最短路径迪杰斯特拉dijkstra算法,也可以采用全局最短路径floyd-warshall算法。

还需要说明的是,n个超级节点组成p2p网络,n个超级节点之间的数据传输,同样采用动态规划的方式来提高数据传输效率。每个超级节点传输数据时,不再直接向另外一个超级节点通信,而是通过动态规划方法选择两个超级节点之间的最短路径进行通信,能减少两个超级节点间的数据传输时间,从而提高网络效率。

本申请对超级节点和超级节点连续打包区块的个数,不进行限定。在一个示例中,超级节点n的取值范围为10-100;第一超级节点连续打包l个区块,l的取值范围为1-100。

s103,所述第一超级节点对所述第一区块验证通过后,将所述第一区块发送给其余超级节点进行验证,所述其余超级节点为所述n个超级节点中除所述第一超级节点外的超级节点。

s104,所述其余超级节点采用实用拜占庭容错算法对所述第一区块进行验证。

需要说明的是,实用拜占庭容错算法(practicalbyzantinefaulttolerance,pbft)可以容忍小于1/3个无效或者恶意节点,本申请实施例对该算法不进行详细说明。

s105,当所述其余超级节点对所述第一区块验证通过后,所述第一超级节点通过可验证的随机算法随机选择m个所述验证节点,m个所述验证节点采用实用拜占庭容错算法对所述第一区块进行验证,m为正整数。

在一个示例中,当所述其余超级节点对所述第一区块进行验证时,和/或当m个所述验证节点对所述第一区块进行验证时;所述第一超级节点对预设时间段内的第二请求数据打包成第二区块,并对所述第二区块进行验证。

换句话说,上述其余超级节点对上述第一区块进行验证,与第一超级节点对第二请求数据打包生成第二区块过程,可以同时进行,不需要等待第一区块验证过程完全结束后,才开始产生第二区块,从而提高了区块的产生效率;同时,上述m个验证节点对第一区块进行验证,与第一超级节点产生第二区块的过程,也可以同时进行。

此时,利用可验证随机算法(verifiablerandomfunction,vrf)选择m个验证节点对第一区块进行验证,可以防止超过三分之一的超级节点做恶;如果有超过三分之一的超级节点做恶,第一超级节点随机选择的m个验证节点对第一区块拒绝验证,或者验证不通过,第一区块不能成功上链。

从而,第一超级节点采用vrf算法对上链的区块进行验证,能够提升区块链系统的安全性;并且,上述讨论可知,第一超级节点采用vrf算法对上链的区块进行验证时,第一超级节点还可以继续打包生成第二区块,既还能够提升区块链系统的区块生成效率。

需要指出的是,m个验证节点也采用pbft算法对第一区块进行验证。

此外,由于m个验证节点能够存储整条区块链,相对于现有的dpos算法(dpos算法中,只有100个左右的代理权益节点才有验证的功能),增加了区块链系统的去中心化程度。验证节点发现第一区块验证不通过时,将第一区块废弃,从该第一区块的上一个区块重新进行区块生成和验证流程;并且将其余超级节点中判断该第一区块验证通过的超级节点,作为做恶节点;然后,验证节点将该做恶节点拉入黑名单,新增超级节点对做恶的超级节点进行替换。本申请的区块链系统中,根据上述机制,可以防止任意数量的超级节点做恶。

在一个示例中,当所述其余超级节点对所述第一区块验证通过后,所述其余超级节点通过可验证的随机算法随机选择m个所述验证节点,m个所述验证节点所述第一区块进行验证,m为正整数。

在一个示例中,当所述其余超级节点对所述第一区块验证通过后,所述第一超级节点通过可验证的随机算法随机选择m1个所述验证节点,m1个所述验证节点通过可验证的随机算法随机选择m2个所述验证节点,m1、m2均为正整数,且m1+m2=m,m个所述验证节点对所述第一区块进行验证。

本申请对于验证节点的取值不进行限定。在一个示例中,验证节点m的取值20-200。

s106,当所述m个验证节点对所述第一区块验证通过后,所述第一区块上链。

需要指出的是,上述任一区块被验证后,被验证的区块上链;区块上链之后,并没有成为不可逆块;只有该上链区块后续有多个区块(例如:后续有6个区块)被确认上链后,该区块才成为不可逆块。

在一个示例中,上述第一区块的验证包括对所述第一区块中全部请求数据进行哈希验证和请求双方的身份验证。

验证方式例如:通过交易中,发送方的公钥验证发送方是否通过私钥进行了签名,通过第一区块中区块头的哈希merkle数根验证第一区块中的交易数据是否被篡改。需要说明的是,对区块的验证是本领域技术人员的常规技术手段,本申请对此不进行详细说明。

在一个示例中,所述其余超级节点对所述第一区块验证通过后,所述第一超级节点确定所述第一区块的字节大于预设字节阈值时,所述第一超级节点将所述第一区块划分为至少两个分片区块;所述第一超级节点通过可验证的随机算法随机选择至少两个验证节点组,所述至少两个验证节点组采用实用拜占庭容错算法对所述至少两个分片区块进行验证;其中,一个验证节点组对应验证一个分片区块;所述第一超级节点接受所述至少两个验证节点组对所述至少两个分片区块的通过验证消息,所述第一区块上链。

如图3所示,区块的字节数大于字节阈值,区块被分成分片区块1、分片区块2以及、分片区块3、分片区块n,采用vrf算法随机选择验证节点组6、验证节点组3以及验证节点组8对该区块进行验证。

在一个示例中,当所述第一超级节点打包第一区块,且确定所述第一区块的字节大于预设字节阈值时,所述第一超级节点将所述第一区块划分为至少两个分片区块;其中,至少两个分片区块包括第一分片区块和所述第二分片区块,第一分片区块由所述第一超级节点打包,所述第二分片区块由所述第一超级节点通过可验证的随机算法随机选择所述其余超级节点中的一个超级节点打包。

如图3所示,区块字节大于字节阈值,该区块被划分为分片区块1、分片区块2、分片区块3、分片区块n,第一超级节点通过vrf算法随机选择超级节点vrf对分片区块1打包,超级节点2对分片区块2打包,超级节点9对分片区块3打包。

需要说明的是,字节数阈值可根据需要设定。

如图2所示,一种可验证的dpos共识系统,所述系统包括n个超级节点,验证节点以及普通节点。

至少一个所述普通节点选择n个超级节点,n为正整数,所述n个超级节点包括第一超级节点。

所述超级节点用于打包区块和验证区块,所述验证节点用于验证区块,所述普通节点用于同步区块链上的数据;并且接收至少一个所述普通节点发送的请求数据,所述请求数据包括请求信息、请求双方地址以及所述请求信息的哈希值;且对预设时间段内的第一请求数据打包成第一区块,并对所述第一区块进行验证;且对所述第一区块验证通过后,将所述第一区块发送给其余超级节点进行验证,所述其余超级节点为所述n个超级节点中除所述第一超级节点外的超级节点。

其余超级节点采用实用拜占庭容错算法对所述第一区块进行验证;当所述其余超级节点对所述第一区块验证通过后,所述第一超级节点通过可验证的随机算法随机选择m个所述验证节点,m个所述验证节点采用实用拜占庭容错算法对所述第一区块进行验证,m为正整数。

当所述m个验证节点对所述第一区块验证通过后,所述第一区块上链。

在一个示例中,所述请求信息包括交易信息和/或业务信息;其中,所述交易信息包括交易金额和交易双方的数字签名;所述业务信息包括业务数据,所述业务数据包括业务属性数据、价格数据以及所有者数据。

在一个示例中,当所述其余超级节点对所述第一区块进行验证时,和/或当m个所述验证节点对所述第一区块进行验证时;所述第一超级节点对预设时间段内的第二请求数据打包成第二区块,并对所述第二区块进行验证。

本申请的方法不仅能够提高区块的产生效率,而且能够提高区块链系统的安全性;相对于dpos共识机制来说,增加了去中心化程度。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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