一种区块链一致性维护方法及装置与流程

文档序号:14717649发布日期:2018-06-16 01:53阅读:282来源:国知局
一种区块链一致性维护方法及装置与流程

本发明涉及一种区块链一致性维护方法及装置,属于网络通信技术领域。



背景技术:

区块链在不可靠的分布式环境中维护了一个公共的总账,这个总账由一系列的匿名参与者来维护和扩展。近年来,区块链网络吸引了越来越多的工程人员,学者和投资者的注意。伴随着大量的资本投入,区块链得到了快速部署,已经成为了一项公共基础设施。

由于区块链没有可信任的中心节点,这使得设计和实现去中心化的域名系统,公钥证书体系和去中心化的文件存储成为现实。

然而目前基于区块链的应用,都需要在不安全的分布式环境中保持全局一致性,每一个具体的操作,都涉及了状态的转换,但是目前区块链技术并没有提供状态转换的合法性验证,因此无法实现区块链的一致性维护,此时将会导致多方面的问题:

1)以去中心化的域名系统为例,当域名注册存在冲突,即权威机构和个人同时申请一个权威域名,权威域名的归属问题是由获得区块写入机会的单个节点决定,单个节点一旦出错,将导致此权威域名被个人注册而无法更改。

2)去中心化的文件存储系统中,有版权问题或者不合法规的资源一旦上传成功,除了上传者本身,其他人很难删除。对于广泛运行的P2P网络而言,通常是在其部署爬虫网络来检测非法资源的路径,并将其加入黑名单,从而达到保护网络的目的。爬虫软件只能检测哪些资源是非法,而无法阻止资源的上传,并且引入第三方的检测方法,会带来更多的问题。

因此如何实现区块链的一致性维护是目前亟待解决的技术问题。



技术实现要素:

现有技术中存在的技术问题的根源在于,区块链在写入时,只需要提供正确工作量的证明,而不对其状态转换进行合法性验证,因此本发明的提供一种具有状态合法性验证的区块链一致性维护方法及装置。

区块链协议能够在不依赖中心信任节点的情况下,实现全局一致性。区块链中的矿工执行的是一种基于数学难题的哈希算法,以验证产生区块的合法性。

本发明在区块链之上,引入了一个新的验证层,区块由底层区块链产生,而区块的验证则由验证层完成。区块链发生的状态变更,都需要经过这个验证层的同意。

具有状态合法性验证的区块链协议为一系列基于区块链的上层应用,如基于区块链的比特币可疑交易监管,去中心化域名系统的域名抢注,去中心化文件系统的资源上传管理,提供了新的管理思路,确保了每一次状态转换都是经过验证的。

本发明将整个去中心化系统看做n个独立配置的节点,即{p1,p2,...,pn},构成的去中心化的系统。一个执行过程可以看做是一系列的状态和转换:π0,s0,π1,s1,...,πi,si,...。

从状态π0到状态π1,需要经过中间状态s0,每一次状态转换与一个单调递增的时间戳对应,ri<ri+1,其中ri是一个时间增长间隔dr的整数倍,一个时间戳称为一轮(round)。每一个节点在每一轮中只能执行一次计算指令(compute指令)。假设每一个节点对于一个随机函数oracle的计算能力是给定的,即每一个节点在每一轮只调用一次oracle函数。

匿名的节点之间通过broadcast(m)指令来传递消息。每条消息的最大延迟为Δ,如果消息在时间r广播,那么每一个节点在不超过r+Δ的时间里执行receive(m)指令。

任何一个状态转换需要满足如下条件:

1)状态转换由Quorum中的所有节点同意

一个状态转换需要经过两阶段,从状态π0到状态π1,需要经过中间状态s0,当一个节点发布了一个状态转换的消息后,收到这个消息的节点开始对这个状态转换广播自己的投票结果,同时节点开始收集其他节点的投票结果消息,如果存在一个法定人数(Quorum)集合,集合里面超过设定比例的节点同意,则网络能够被转换到状态π1。集合里的节点可以指全部节点,也可以通过选举出来的代表性节点,每一个投票节点收到的消息相同。

2)不确定性

区块链协议使用了公开的、可快速验证的谜题。每一个过程执行了一个coinflip指令产生一个随机数H:[0,1)→[0,1)是随机单向哈希函数。过程pi对某一个中间状态的投票结果也是随机的,赞成的概率为p',那么一个中间状态d的表决结果为Binom(k,n,p'),转换能够完成概率为

3)拜占庭错误

有f个出错的过程,这些拜占庭错误节点能够共谋对其他的正常节点发送错误消息。拜占庭出错过程反对正常过程,正常过程可能会赞成拜占庭过程。正常过程提出的方案通过的概率为拜占庭错误过程提出的方案能通过的概率为

本发明的技术方案为:

一种区块链一致性维护方法,其特征在于,对于去中心化系统中的每一节点Pi,当节点 Pi收到新的区块时,验证该区块是否满足工作量,如果满足,则对该区块中的每一个待完成的状态转换进行投票广播,利用接收到的投票广播的投票结果验证该区块是否满足合法性验证,如果该区块中的每一个待完成的状态转换均满足合法性验证,并且该区块的区块长度大于本地区块链的长度,则将这个区块作为新的区块加入到当前区块链中;其中,

所述验证区块是否满足合法性验证的方法为:接收其他节点对所述投票广播反馈的投票结果,对收到的投票结果进行统计,如果统计结果满足设定条件则验证通过。

进一步的,所述验证区块是否满足工作量的方法为:计算区块链工作量证明难题的解 nonce,根据该解nonce验证该区块是否满足工作量证明。

进一步的,调用coinflip过程得到区块链工作量证明难题的解nonce。

进一步的,所述去中心化系统中的出错节点比例f小于或等于0.38n;其中,n为待完成的状态转换总数。

进一步的,所述去中心化系统中的节点对于一个状态转换通过的概率至少为0.75。

进一步的,所述去中心化系统中设置一个法定人数集合Quorum,该法定人数集合Quorum 内投票结果中为同意的节点达到或超过该法定人数集合Quorum内节点总数一半时,视为统计结果满足设定条件,即验证通过。

进一步的,所述去中心化系统为去中心化的域名系统、公钥证书体系或去中心化的文件存储系统。

一种区块链一致性维护装置,其特征在于,包括接收区块消息处理模块,用于当节点收到新的区块时,调用执行计算过程处理模块验证该区块是否满足工作量,如果满足,则对该区块中的每一个待完成的状态转换进行投票广播,调用接收投票消息处理模块验证其是否满足合法性验证,如果该区块中的每一个待完成的状态转换均满足合法性验证,并且该区块的区块长度大于本地区块链的长度,则将这个区块作为新的区块加入到当前区块链中;接收投票消息处理模块,用于接收其他节点对所述投票广播反馈的投票结果,并对收到的投票结果进行统计,如果统计结果满足设定条件则验证通过。

进一步的,所述执行计算过程处理模块,用于计算区块链工作量证明难题的解nonce,根据该解nonce验证该区块是否满足工作量证明。

进一步的,所述节点对于一个状态转换通过的概率至少为0.75。

本发明的流程如图1所示,其内容如下:

●每一个节点Pi同时执行接收区块消息on receive,接收投票消息on receive_op和执行计算on compute过程。

●接收区块消息on receive过程当收到新的区块时,调用on compute过程验证该区块是否满足工作量,对于该区块中的每一个待完成的状态转换,执行on receive_op过程,验证其是否满足合法性验证。如果上述条件均满足,并且该区块的区块长度大于本地区块链的长度,则将这个区块作为新的区块加入当前区块链。

●对于新增区块中与原有区块链的差集中的中间状态,对其状态转换进行投票广播。

●接收投票消息on receive_op过程对收到的投票进行统计,如果超过半数,就返回成功,否则返回失败。

●执行计算on compute过程执行挖矿过程,首先调用coinflip过程(即挖矿过程)得到区块链工作量证明难题的解nonce,对于收到的待完成状态转换请求,调用on receive_op过程,如果其返回成功,则修改其状态。随后调用on compute过程,如果满足了正确的工作量证明,则广播这个区块。

一致性证明

在n个process中有f<n/2个出错节点,假设一个过程能够解决一个难题的概率为p,一个过程赞成某一个状态转换的概率为p’,那么正常过程能够完成状态转换的概率为 pc=(1-(1-p)n-f)*u,u为4.1中所示。出错的过程可以联合起来解决难题,一个出错的过程能够完成的概率转换为pf=fpv,v为4.1中所示。

经过轮后正常过程完成的状态转换次数服从二项分布:

出错过程完成的状态转换次数服从另外一个二项分布:

当np>5,n(1-p)>5,使用N(np,np(1-p))拟合Binom(n,p)得到:

区块链协议中每个过程只会选择最长的链,协议需要保证

Blockc-Blockf>0

而对于标准正态分布有如下性质:

prob=P{u-kσ<X<u+kσ}

当k=3时,prob=99.73%,当k=4时,prob=99.99%。

如果μ-kσ>0,则当k=4时,有99.99%概率满足Blockc-Blockf>0

为了使成立,需要满足

当k=4时,当取上述值时,有99.99%的概率能够达到最终一致性。算法的可终结性由决定。因此蒙特卡洛最终一致性得证。

参数讨论

容易看到,当出错节点比例f越大时,越大,即协议需要运行更长时间才能保证一致性。

实验验证了上述协议能够在较少的运行时间内(即)能够达到最终一致性,并且通过实验数据计算出了相对确切的出错节点数目上限。

1)出错节点比例上限

假设正确节点和出错节点的方案是大概率通过,令p≈1/n根据公式:

当n=1000时,通过调整f从n/4到n/2-1,观察图2中随出错节点比例f变化的情况。当f小于0.39n时,协议在较少时间内能够达到一致性。当f大于0.43n时,协议同样在较少时间内能够达到一致性,但是此时系统的一致性是由出错节点达成的。而在f介于0.38n和 0.43n时,协议需要运行很长的时间。

本发明需要保证正常节点的转换率大于出错节点的转换率,这是系统正确达成最终一致性的必要条件。pc和pf随出错节点比例f变化曲线如图3所示,可以看出要使得pc>pf,则f<0.41n。

由于实验假定了因此图2只有并且f<0.41n的部分是有效的,将其重新绘制如图4所示。当f=0.38n时,协议能够在相对少的时间内达到一致性。

2)节点投票通过概率的选择

根据之前的实验,选取f=0.38n作为合理的出错节点个数。根据之前的公式:

将p'作为自变量,绘制u和v随其变化的曲线,如图5所示。当p'>0.75的时候,u和v差不多都趋近于1。所以,当节点对于一个状态转换通过的概率至少为0.75时,上述协议才能够有效运行。

与现有技术相比,本发明的积极效果为:

1)本发明在区块链之上,引入了一个新的验证层,区块由底层区块链产生,而区块的验证则由验证层完成,区块链发生的状态变更,都需要经过这个验证层的同意,从而本发明使得基于区块链的去中心化应用具备状态验证;

2)具有状态合法性验证的区块链协议为一系列基于区块链的上层应用,如基于区块链的比特币可疑交易监管,去中心化域名系统的域名抢注,去中心化文件系统的资源上传管理,提供了新的管理思路,确保了每一次状态转换都是经过验证的。

3)只需要一次两两信息交换,即能够实现38%的容错率。

附图说明

图1为本发明的方法流程图;

图2为执行轮数随出错节点比例变化曲线;

图3为正确和出错状态转换概率随出错节点比例变化曲线;

图4为执行轮数随出错节点比例f(f<0.38n)变化曲线;

图5为正常和出错节点投票通过概率随赞成概率变化曲线;

图6为域名注册交易广播到区块链;

图7为节点接收区块并发起投票流程图。

具体实施方式

为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明。

基于上述具有状态合法性验证的区块链方法,能够实现去中心化的根区域文件管理。

根服务器管理机构组成了区块链,需要一些政策的支持来选择系统初始化时的区块链节点,这些初始的根服务器管理机构能够代表世界大多数国家的意见。在系统运行的过程中,只要新的根服务器管理机构能够提供正确的工作量证明来产生合法区块,这个机构就能够参与投票。参与到这个区块链网络的诚实根服务器管理机构,必须接受大多数节点的投票结果。

如图6所示。当域名申请者通过域名管理客户端软件,提出域名注册申请,将该注册申请发送到根服务器管理机构组成的区块链中,然后根服务器管理机构组成的区块链将当前注册交易处于未确认的中间状态。交易的输出项置为nulldata类型,所注册域名以及注册者信息被嵌入到交易中,接着通过注册用户提供的密钥对这个交易进行签名,随后向其他的根服务器管理机构广播这个交易,开始挖矿的过程。

根服务器管理机构一直执行挖矿过程的同时,接收来自域名管理客户端软件的交易广播消息,每一个根服务器管理机构执行如下过程:

1)根据自身策略决定是否将这个中间状态的注册交易加入到区块中;

2)获取上一轮投票中,超过半数的域名修改请求,将其设置为最终状态,加入到当前区块中。

当节点解决了工作量证明难题,随后向区块链网络广播这个区块。如图7所示,其他根服务器管理机构验证这个工作量证明,解析出域名修改请求,执行如下过程:

1)如果域名注册为中间状态,则向其他节点广播针对这个域名注册的投票结果,并且拒绝这个域名注册,等待后续区块;

2)如果域名注册为最终状态,则验证本地收到的其他节点的投票结果,如果超过半数,则将其加入到本地的区块链中;否则,拒绝这个请求。

当包含此注册请求的区块经过6个区块的确认后,这个解决工作量证明难题的管理机构被授权修改DNS解析系统中的区域文件,从而完成域名注册。

以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

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