发明内容
针对现有技术存在的问题,本发明提供了一种跨异构链数据可达性处理方法、***、介质、设备、终端。
本发明是这样实现的,一种跨异构链数据可达性处理方法,所述跨异构链数据可达性处理方法通过从参与跨链的***中选举节点,组建周期更替的委员会,连通异构区块链进行跨链的信息安全互访;当不同的区块链***进行交互的时候,通过运行在委员会中的面向消息的验证共识机制,实现异构区块链间的数据信息安全互访。
进一步,所述跨异构链数据可达性处理方法具体包括:
(1)委员会的组建,设计份额分配算法,选举节点加入委员会,组建委员会,并周期更新;
(2)委员会内的消息共识机制,在委员会内,运行共识机制;定义区块链Lx间的距离,在委员会内,形成有向加权图;基于此权重向量,进行消息的验证背书。
进一步,所述设计份额分配算法,每个区块链***为Li,且令c=|C|(C表示委员会集合),ci表示Li中分派出的节点数量,中继链的容错率为/>则份额分配的原则如下:/>有1<ci≤0;在满足条件1的情况下,/>如果不满足条件1,即,ci>O,则多余出的节点,分配给其他较小的子集。
进一步,所述选举节点加入委员会,每个区块链***Li根据分配得到的节点数ci,从***内部选取节点,加入到委员会中;
在公有区块链***中,规定节点本地选择自己的形式标识(IP,PK),分别是IP地址和公钥,用于以后的认证通信;在委员会C的更新周期结束时生成一个公共随机字符串periodNonce,以确保PoW没有被预先计算;periodNonce是在上一个周期中生成的公共随机字符串,每个处理器在本地搜索满足以下约束的有效nonce:
O=H(periodNonce||IP||PK||nonce)≤δ;
其中,δ是网络中的一个预先定义的参数;确定节点身份之后,确定账本集合L*的基数,采用算力靠前的节点进入委员会。
进一步,所述组建委员会,并周期更新,在方案运行的最初阶段,需要一个初始化的过程,进行人为的创建中继链集合C,在组成初始委员会后,开启下一个周期的委员会选举工作;
在一个周期内,在委员会C中使用PBFT同步消息,其领导者会为每一个区块链***分配一个独有的ID,作为账本在中继链上的唯一编号;每一个都有自己的周期视图view,这个周期视图是自增的,表明当前节点是否在最新的周期内;
当运行到时间时,由领导者节点启动周期更替脚本,给委员会内的全部节点发出探测信号,如果没有收到回应,则表示是宕机节点,应该予以剔除。
进一步,所述委员会内的消息共识机制具体包括:对区块链之间距离的定义如下:区块链Li和区块链Lj之间的距离Dij为:
Dij=||Li-|Lj||;
if|Li|=|Lj|and i≠j,Dij=1;
形成中继链委员会的距离矩阵:
其中,Di=[Di1,Di2......Din]T,定义权重的计算方法为:
其中,Wij表示来自账本Li中的节点,对账本Lj中的节点的权重,ξ(*)表示归一化函数,归一化后,对系数乘10;属于同一个区块链***Lx的节点,在委员会内的权重都是1;
在根据节点间的距离,计算出权重向量表后,即可形成有向加权图,基于此,消息在委员会内的共识验证机制包括:
(1)参与跨链的区块链***中有两个***为和/>
(2)节点利用该区块链***在委员会中的节点,向账本/>发起请求,访问事务数据/>请求附带了账本/>在委员会C中的权重向量/>
(3)C中的某一个属于的节点s,在收到请求后,对事务数据/>进行封装,即数据格式化,然后根据向量/>按照从大到小的顺序,依次向委员会C中的其他节点群请求背书,权重越大,优先请求级别越高;
(4)委员会中,除了属于的其他节点,在收到背书请求后,诚实节点将完成对数据的验证,包括SPV验证数据的真实性、验证数据格式是否正确;当节点验证通过后,在验证过后的数据后面附带自己的签名,广播给y;
(5)当节点s收集到2*θ+1个背书签名后,和对事务数据提交给u,并且广播给所有节点,以供周期结束后,对当前已经查询的事务数据进行缓存。
本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:通过从参与跨链的***中选举节点,组建周期更替的委员会,连通异构区块链进行跨链的信息安全互访;当不同的区块链***进行交互的时候,通过运行在委员会中的面向消息的验证共识机制,实现异构区块链间的数据信息安全互访。
本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:通过从参与跨链的***中选举节点,组建周期更替的委员会,连通异构区块链进行跨链的信息安全互访;当不同的区块链***进行交互的时候,通过运行在委员会中的面向消息的验证共识机制,实现异构区块链间的数据信息安全互访。
本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的跨异构链数据可达性处理方法。
本发明的另一目的在于提供一种实施所述跨异构链数据可达性处理方法的跨异构链数据可达性处理***,所述跨异构链数据可达性处理***包括:
委员会组建机制模块,用于通过从参与跨链的***中选举节点,组建周期更替的委员会,以连通异构区块链进行跨链的信息安全互访;
委员会内消息共识机制模块,用于当不同的区块链***进行交互时,通过运行在委员会中的面向消息的验证共识机制,实现异构区块链间的数据信息安全互访。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明通过委员会连通异构区块链,相对公证人方法具有更稳健的信任度。为了可以及时清除宕机节点的影响,周期性的重组委员会,优先替换宕机节点,从而保证***的可靠性。另外,设计了面向消息的验证机制,提高了异构链间可信互访的速率。本发明实现了方案的原型,在当前主流区块链上进行了跨异构链信息互访的仿真实验,结果也证明了本发明的方案在链间的信息访问速率和***稳定性上,都有良好的表现。
通过实验显示:证明了本发明的方案在链间的信息访问速率和***稳定性上,都有良好的表现;对比于PBFT,本发明设计的消息验证共识机制可以更好的适应委员会的更替机制;在批处理消息互访请求时,有良好的处理能力,速度约为2000条/100s;***的稳定性很好。在周期更替的作用下,***的宕机率保持在很低的范围,约为0.05%;方案的恶意节点容错率接近PBFT,即,约为22%。
另外,对比于现有技术的方案,本发明有:
综合来看,与现有技术相比,本发明的有益效果是:
(1)本发明更便捷安全的实现异构区块链间的信息互访。使用委员会机制,组建区块链的“***”,将消息路由、验证和转换都封装成接口调用,使人们不需要过多关注跨链的细节问题。
(2)本发明更可靠和去中心化的***实现。各个区块链***选举各自的节点加入委员会中,去中心化程度高;周期更替宕机或恶意节点,提升***的可靠性。
(3)本发明可扩展性高。对于新加入的区块链***来说,在下一个周期开始时,可以动态的扩展加入到委员会中,很方便的实现动态加入或退出。
(4)本发明良好的信息处理能力。在委员会内,使用自主设计的面向消息的验证共识机制,处理消息的能力约为2000条/100s,且具有批处理消息的能力。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种跨异构链数据可达性处理方法、***、介质、设备、终端,下面结合附图对本发明作详细的描述。
如图1所示,本发明提供的跨异构链数据可达性处理方法包括以下步骤:
S101:通过从参与跨链的***中选举节点,组建周期更替的“委员会”,以连通异构区块链进行跨链的信息安全互访;
S102:当不同的区块链***进行交互的时候,通过运行在委员会中的“面向消息的验证共识”机制,实现异构区块链间的数据信息安全互访。
本发明提供的跨异构链数据可达性处理方法业内的普通技术人员还可以采用其他的步骤实施,图1的本发明提供的跨异构链数据可达性处理方法仅仅是一个具体实施例而已。
如图2所示,本发明提供的跨异构链数据可达性处理***包括:
委员会组建机制模块1,用于通过从参与跨链的***中选举节点,组建周期更替的“委员会”,以连通异构区块链进行跨链的信息安全互访。
委员会内消息共识机制模块2,用于当不同的区块链***进行交互的时候,通过运行在委员会中的“面向消息的验证共识”机制,实现异构区块链间的数据信息安全互访。
下面结合附图对本发明的技术方案作进一步的描述。
针对现有技术所存在的缺点,本发明基于委员会周期更替的原理,提出了一种新的跨异构链通信的通用框架以支持在多个异构区块链***间进行丰富的事务信息互访,如图3所示。具体而言,本发明使用周期更替的委员会,连通多个异构链进行信息的访问。由于引入委员会作为中继,传统的PBFT已经不适应本发明的场景,所以本发明修改了PBFT共识,设计了面向消息的验证机制,以适应委员会机制,并提升了消息验证速率。所以,本发明的核心内容集中在两部分:委员会的组建机制和委员会内的消息共识机制。
(1)委员会的组建,委员会的组建机制分为以下3个步骤,如图4所示。
1)设计“份额分配算法”。本发明中假设每个区块链***为Li,且令c=|C|(C表示委员会集合),ci表示Li中可以分派出的节点数量,中继链的容错率为/>则份额分配的原则如下:/>有1<ci≤O;在满足条件1的情况下,/>如果不满足条件1,即,ci>O,则多余出的节点,分配给其他较小的子集。
基于此,本发明提出了委员会的“份额分配算法”的伪代码,如图7所示。
2)选举节点加入委员会。每个区块链***Li根据分配得到的节点数ci,从***内部选取节点,加入到委员会中。选举的规则根据公有链和联盟链的不同而有差异。对联盟链来说,由于其有身份验证和证书通信等,本发明可以很轻松的选举出节点。如采用随机算法,按照每个节点IP分配一个序号,然后“根机构”产生随机数,选择对应的节点加入到委员会中。
本发明具体探讨公有链的选举规则。在公有区块链***中,规定节点本地选择自己的形式标识(IP,PK),分别是IP地址和公钥,用于以后的认证通信。为了使网络接受这个标识,处理器节点必须找到与其所选标识对应的PoW解决方案。作为PoW的“种子”,本发明需要在委员会C的更新周期结束时生成一个公共随机字符串periodNonce,以确保PoW没有被预先计算。现在假设periodNonce是在上一个周期中生成的公共随机字符串。则,每个处理器在本地搜索满足以下约束的有效nonce:
O=H(periodNonce||IP||PK||nonce)≤δ;
其中,δ是网络中的一个预先定义的参数,它决定了处理器节点要消耗多少花费以求解PoW难题。
在确定了节点身份之后,本发明也可以确定了账本集合L*的基数。之后,本发明可以采用算力靠前的节点进入委员会。
3)组建委员会,并周期更新。
在方案运行的最初阶段,本发明需要一个初始化的过程,进行人为的创建中继链集合C。在组成初始委员会后,立即开启下一个周期的委员会选举工作。注意,这个引导阶段只进行一次。
在一个周期内,在委员会C中使用PBFT同步消息,其领导者会为每一个区块链***分配一个独有的ID,作为账本在中继链上的唯一编号,便于之后的寻址。另外,每一个都有自己的周期视图view,这个周期视图是自增的,以表明当前节点是否在最新的周期内。
当运行到时间时,由领导者节点启动周期更替脚本。给委员会内的全部节点发出探测信号,如果没有收到回应,则表示是宕机节点,应该予以剔除。
(2)委员会内的消息共识机制
在“委员会”内,运行共识机制,以确保经过委员会的数据,都是真实可信的。但是,由于传统的PBFT共识在本发明这个场景下,无法做到防止节点间联合作恶的情况。所以,本发明提出了基于距离的消息验证机制。首先,是定义区块链Lx间的距离,在委员会内,形成“有向加权图”。之后,基于此权重向量,进行消息的验证背书。
首先,本发明对区块链之间距离的定义如下:区块链Li和区块链Lj之间的距离Dij为:
Dij=||Li|-|Lj||;
if|Li|=|Lj|and i≠j,Dij=1;
这样,即可形成中继链委员会的距离矩阵:
其中,Di=[Di1,Di2……Din]T,基于此,本发明定义权重的计算方法为:
其中,Wij表示来自账本Li中的节点,对账本Lj中的节点的权重,ξ(*)表示归一化函数,一般为了美观,归一化后,对系数乘10。本发明规定,属于同一个区块链***Lx的节点,在委员会内的权重都是1。如图4所示,是一个计算例子。
在根据节点间的距离,计算出权重向量表后,即可形成有向加权图。基于此,消息在委员会内的共识验证机制分为以下几步,如图5所示:
(1)假设参与跨链的区块链***中有两个***为和/>
(2)节点利用该区块链***在委员会中的节点,向账本/>发起请求,访问事务数据/>请求附带了账本/>在委员会C中的权重向量/>
(3)C中的某一个属于的节点s,在收到请求后,对事务数据/>进行封装,即数据格式化。然后根据向量/>按照从大到小的顺序,依次向委员会C中的其他节点群请求背书。权重越大,优先请求级别越高。
(4)委员会中,除了属于的其他节点,在收到背书请求后,诚实节点将完成对数据的验证,包括SPV验证数据的真实性、验证数据格式是否正确等等。当节点验证通过后,将会在验证过后的数据后面附带自己的签名,广播给y。
(5)当节点s收集到2*θ+1个背书签名后,即和对事务数据提交给u,并且广播给所有节点,以供周期结束后,对当前已经查询的事务数据进行缓存。
下面结合具体实施例对本发明的技术方案作进一步的描述。
异构区块链间的信息互访目前依然存在许多挑战,主要有共识差异带来的安全信任问题,底层数据格式不一致以及传统跨链方案中心化导致可靠性问题等。本发明提出了一种新的无信任跨链通信的通用框架,使用委员会周期更替的方法,支持在多个异构区块链***之间进行丰富的事务信息互访。本发明设计了委员会的周期组建机制,在周期性重组委员会的时候优先替换宕机节点,从而可以保证***的可靠性。此外,使用本发明设计的面向消息的验证机制,更好的提升了异构链间可信互访的速率。
本发明使用周期更替的委员会,连通多个异构链进行信息的访问。由于引入委员会作为中继,传统的PBFT已经不适应本发明的场景,所以本发明修改了PBFT共识,设计了面向消息的验证机制,以适应委员会机制,并提升了消息验证速率。
实施例1,份额分配算法
假设,现在有5个区块***A,B,C,D,E,其全部节点数量为:{A:15,B:15,C:18,D:13,E:20}。其中,委员会的限定数量为:c=|C|=10,则,经过份额分配计算的规则,本发明有:
由公式得到份额分配为:{a:2,b:2,c:3,d:2,e:3}。
实施例2,基于距离的权重向量计算实例
假设委员会集合是{a:1,b:2,c:2,d:2,e:3},则有距离矩阵:
根据此距离矩阵,可以得到一个权重向量表:
根据此向量表,即可构建基于距离的有向加权图,如图6所示。
实施例3,节点组建委员会后,其数据访问的经历过程:
假设委员会集合是{a:1,b:2,c:2,d:2,e:3},其中,委员会C中的容错节点数量为θ=2。则如果账本La中的节点向账本Le中的节点查询某条事务数据即n1→n8,如图6的(b)所示。n8∈e,会根据/>向除e外的所有节点,请求背书验证。验证一旦通过,节点会附带自己的签名。当n8收到2*θ+1,即,5个确认消息后,表面这条数据已经经过大部分诚实节点背书通过了。即可广播给n1,同时,同步到委员会内的内存池中,在周期结束时,这条消息有概率被进行封装、打包成块以备重复查询。
实施例4,公有链的节点选举过程
假设,现在假设有3个区块***A,B,C,其节点数量分别为:100,50,50.那么由“份额分配算法”,委员会大小为20时,将得到10,5,5的组合形式。以公有链A为例,将从100个节点中选举出10个节点。
这100个节点中,每个节点都将自己的IP地址和公钥,发布出去,作为自己的一个身份表示。此时,委员会的周期结束,由当前的委员会领导者计算出一个随机字符串periodNonce,则,每个节点都计算一个nonce,使得Hash(periodNonce||IP||PK||nonce)的值,前面至少有8个0。节点计算出结果后,将自己计算的nonce发送给委员会。委员会会根据收到的nonce,进行统计、排序。通过统计收到的nonce,可以计算出A***中真实有多少的节点数。比如,当有98个节点发送了有效的nonce后,那么,下一步开启委员会选举时,其“份额分配算法”中,***A的值,就由100,改成98。随后继续进行份额分配的计算。之后,委员会根据收到nonce是时间先后顺序,选择前10个节点加入到委员会中来。
下面结合实验对本发明的技术效果作详细的描述。
通过实验仿真数据以辅助证明本发明的有效性,实验评估可以回答下面几个问题:
设计的验证机制在消息从发起请求到完成提交的时间消耗方面,和PBFT对比有什么优势。
设计的面向消息的验证机制,对消息验证的处理能力(为一定数量的消息背书验证所需的时间)随着委员会节点的变化情况。
配合验证机制,委员会内节点的错误节点的容错率。
委员会内宕机节点数量随着周期时间的变化。
(1)和PBFT对比,本发明评估了单条消息从请求到完成提交的时间消耗。其中,节点数为4,7,10,13和16,其中,PBFT对应的错误节点数为1,2,3,4,5,本发明对应的错误节点数为0,1,2,2,3。本发明进行了多次实验并取平均值,图8显示了本发明的结果,本发明对消息的验证通过时间非常低。这主要是因为本发明对消息只广播了一次,而不是和PBFT一样广播了两次,所以,这并不代表本发明比PBFT有更多的优势,而是说明,在本发明的委员会跨链环境下,本发明的消息验证机制有更快的消息验证速度。
(2)性能,本发明评估了委员会节点处理消息的能力。本发明在节点数为4,7,10,13和16的委员会内,节点之间大量发送验证消息的请求,比如,有nu→ns(u,s属于不同的账本集合)的500,1000,1500,2000条请求,委员会将运行消息验证机制处理这些消息。图9显示,时间耗费随着节点数量和验证消息的数量的增加而增大,这是节点间广播消息的正常现象。另一方面,本发明看到,即使由大量的背书请求时,委员会也能有很好的处理能力。
(3)委员会可靠性
本发明假设计算机的每分钟可用率为f,如(f=99.95%),则它每分钟的宕机概率是1-f,如(0.05%)。本发明在大小为100个节点的委员会内,模拟了节点宕机随时间的变化(本发明假设,委员会更替周期为4小时)。如图10所示,本发明看到每次委员会的周期更新,都会将宕机节点更替掉,以保证委员会的可靠运行。
本发明假设委员会的组成形式为为{c0:18,c1:22,c2:27,c3:33}。在这100个节点中有f个节点是坏节点,则本发明的容错率对于c0→c3,每次消息请求时,委员会中的f个坏节点都是随机均匀分布的。从图11可以看出容错率θ≈22%,这是可以证明的,证明过程如下:
证明:本发明规定C中的最大集合为假设所以,本发明假设现在有节点向cmax集合请求数据,则,根据面向消息的验证规则,cmax中的节点不可以参与签名验证。本发明假设委员会C的容错节点为θ,则有:
整理,得到:
得证。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行***,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。