掌桥专利:专业的专利平台
掌桥专利
首页

一种混合跨链共识方法

文献发布时间:2023-06-19 11:45:49


一种混合跨链共识方法

技术领域

本发明属于区块链跨链技术领域,具体涉及一种混合跨链共识方法。

背景技术

共识是对一种共同的状态达成一致的方法。为了使区块链的状态继续创建并向前推进,网络中的所有节点都必须一致并达成共识。这是去中心化网络中的节点能够保持彼此同步的方式。如果一个去中心化的区块链中节点没有共识,就无法确保一个节点相信的真实状态被其他节点所共享。共识的目的是在参与者都有自己「主观观点」的网络中,提供关于状态的「客观观点」。它是这些节点进行通信并达成一致的过程,并且能够生产出新的块。

区块链最早的共识是Bitcoin的POW,这是挑战dificulty,谁最先产生合适的nonce。POW:proofofwork,翻译过来是工作量证明,即用一定量的工作量来换取记账权利,在比特币中,就是计算一个数学难题,谁先算出来并广播出来,谁就有权利记账。

因为POW共识有巨大的能源浪费,效率低的缺点,大家就开始实现类BFT共识,最知名的是Tendermint。Tendermint开源项目诞生于2014年,旨在解决比特币的工作证明共识算法的速度,可扩展性和环境问题。通过使用和改进1988年在麻省理工学院开发的经过验证的BFT算法,Tendermint团队是第一个在概念上展示股权证明加密货币的公司,它解决了第一代股权证明加密货币所遭受的无关紧要问题。正因为它的名气,才成就了后面的Cosmos。

共识引擎(也称为Tendermint核心)可通过“权益证明”共识确保在每台机器中按相同顺序记录每个事务。可以通俗地理解成由多个validator轮流出块,validator对候选块投票,当一个候选块得票超过2/3时,即认为该块完成共识。

又因为类BFT共识有多方网络交互,带来的网络压力和性能导致区块链上层应用无法拓展。接着就出来了EOS的DPOS,这个共识在类BFT上用“时间换空间”来提升效率,大家轮流出块,用大家出块了的BFT签名来统计BFT确认,当然这个,至今没有论文证明这符合严格的拜占庭协议。

跨链通信使得不同区块链之间的信息可以彼此沟通,同样的信息,要从一条链传递到另一条与之独立的链上,在不改变原链结构的前提下,两条异构的链如同基因隔离,传递的信息如果被对方节点认可,那么信息就失去了传递的意义,跨链技术就是建立两条链之间的纽带。而跨链通信中的共识指的是参与各链认可某一链的状态。

两条不同共识机制的区块链之间如何实现跨链呢?在网络层满足通信,共识层达成共识,激励层互相认可即可,但传统的共识方式比如PoW尽管在达成去中心化共识方面简单而有效,但使用该共识的工作量证明消耗了海量资源,而且还没有经济性或可证明的最终性,而且缺乏有效的措施来抵制垄断联盟;运行PoW的纯中本聪共识区块链只能实现概率最终性的概念,然后去达成最终的共识。概率最终性是指在网络和参与者的某些假设下,如果我们看到创建在给定区块上的几个区块,就可以估计该区块终结的概率。最终的共识意味着,在未来的某个时刻,所有节点都将同意一组数据的真实性。这一最终共识可能需要很长时间,也无法提前确定需要多长时间。

发明内容

鉴于上述,本发明提供了一种混合跨链共识方法,利用中继链承接跨链事务,并在跨链共识过程中分离出块和共识确认,设置区块生成机制生成区块,耦合GRANDPA协议将最终性从区块生产机制中分离出来,实现多个平行链高效跨链共识。

一种混合跨链共识方法,创建中继链承接跨链交易,并在中继链进行跨链共识出块维持跨链运行,具体步骤如下:

在多个平行链结构中创建中继链,在中继链中部署各平行链轻节点,轻节点抽样记录每个平行链中的区块头信息,所述中继链通过转接桥与平行链关联,获取各平行链的跨链信息;

多个平行链均通过转接桥与该中继链相连,每个平行链提供其轻节点在中继链中部署,通过关联中继链,各个平行链之间的跨链信息承接至中继链中进行跨链事务共识,中继链是专门运行各平行链跨链事务的区块链;

在中继链中集合验证节点参与竞选出块节点,利用区块生成机制在验证节点中选取出块节点,出块节点将跨链信息打包形成区块;

用户可以通过注册验证节点参与竞选选出块节点,以及后续的链确认投票,以此获取激励,故在中继链中有多个验证节点,从该验证节点集合中随机计算选出出块节点,出块节点将经验证确认并解析后的跨链信息打包成区块。

所述区块生成机制耦合GRANDPA协议在出块节点产生区块后确认最终区块和最终链,将区块生成机制产生的区块建立在GRANDPA协议最终确定的链上;

在启动区块生成机制进行出块时,由于会随机选出多个出块节点,出块节点根据自己认为最高的区块进行出块,多个区块子在多个插槽中连接在区块链上一区块上,会形成区块分叉的现象,故结合GRANDPA协议来确认最终连接在上一区块上的区块和最终的主区块链,后续形成的区块以此为基础依次提交区块。

在中继链上循环上述步骤进行跨链共识出块。

在本发明中各平行链进行可持续的跨链事务,故中继链需要持续打包共识跨链信息,维持平行链跨链业务。

进一步地,所述在多个平行链结构中创建中继链,在中继链中部署各平行链轻节点,所述中继链通过转接桥与平行链关联,具体如下:

在中继链中部署各平行链的轻节点合约,利用MMR证明及概率抽样验证跨链信息在相应平行链中已经被最大共识确认;

中继链通过转接桥承接多个平行链的跨链交易,所述转接桥部署Sync同步程序用于同步跨链信息至中继链验证节点。

部署轻节点是在轻节点验证的基础上进一步的优化,在各平行链挖矿共识出块的过程中,若存在节点恶意出块,则会出现区块分叉的现象,该过程为了验证在区块分叉时跨链信息是否存在在无效的区块链中,若存在无效区块链,即使跨链信息真实存在,也无法进行正常的跨链交易,防止无效跨链交易,保障跨链交易的安全性,而MMR(Merkle MountainRange)是Peter Todd提出的一种Merkle tree,长相类似一组连续的山峰组成,其被设计为节点插入后就不能被修改,支持动态插入。对于普通Merkle树对于每个新加入节点都需要重新计算merkle root,如果节点数量很大的话这个计算量会非常巨大,而MMR支持动态加入新节点并计算root。MMR可以极大的减少merkle证明的数据量,可以大幅度的减轻存储和网络的负担,提升验证效率。

通过轻节点虽然可以验证跨链信息,但无法传递跨链交易事务,故关联转接桥,转接桥中部署同步程序,将平行链中的跨链事务同步备份至中继链中进行解析并进一步进行跨链打包共识。

进一步地,所述区块生成机制是在验证节点之间运行并确定出块节点的区块生成机制,其中,验证节点具有出块节点投票权限,为中继链中用户通过抵押资产注册并参与竞选出块节点的候选节点,基于区块生成机制随机性周期分配区块生成插槽给验证节点的具体流程如下:

在一个周期内,把区块共识时间分割成若干片段,每个片段生成其相应随机数,将每个片段分为多个时间间隔并作为区块生成插槽以及插槽编码;

验证节点是成为插槽的出块节点,具体为:基于随机数生成函数生成随机值,将所述输出值与预设值进行比较,若小于预设值,则验证节点作为出块节点,并获得出块权限,并在对应的slot插槽中生成主区块;若不小于预设值,则该验证节点为非出块节点,其中,随机数生成函数的输入数据包括参数为所述片段的随机数、插槽编码和验证节点的私钥,所述预设值为正比于验证节点参与竞选出块节点的抵押金数额;

在一个分配周期结束后,根据最新的验证节点抵押资产情况,在新的验证节点集合中重新选择验出块节点,重新选择出块节点的片段随机数来自上一个插槽的随机值混合。

所述区块生成机制是一种基于slot(插槽)的算法;

随机数生成函数会生成伪随机数及其正确生成的证明,由于验证节点不会拥有相同的私钥,所以每个节点都可以为每个slot生成唯一的伪随机值,以此来实现验证节点被被选取成出块节点的随机性,并且利用该方法验证节点可自行在线下计算是否可成为出块节点,无需占用链上资源。

若小于预设值,该验证节点被选为出块节点,获得出块权限,出块节点在其对应的slot插槽中生成主区块;

若大于或等于预设值,则该验证节点在所述编码的插槽中没有出块机会,验证节点可进行下一轮其他插槽的出块节点竞选;

所述预设值是正比于验证节点参与竞选出块节点的抵押金数额。该预设值的目的是限制出块节点选取的数量,防止多个投入抵押比较小的验证节点成为出块节点,保证出块的安全性。

特别地,由于随机数生成函数是随机生成数字的,所以可能造成在某一slot中没有出块节点或者有多个验证节点算出自己的随机数输出值小于预设值进而产生多个出块的情况。

所述区块生成机制还包括如下:

设置备用出块机制,针对没有生成主区块的空插槽,采用轮询调度算法将选取出的出块节点依次编号,并按照编号顺序依次为指定的空插槽生成次区块;

如果出块节点没有在slot开始时站出来,那么就启动备用出块机制创建次区块,就是说如果没有收到任何区块,则通过备用机制出块,这种后退方式将确保每个slot都有一个区块产生,并有助于确保一致的出块时间。

针对多个出块节点在同一插槽内生成多个主区块并广播到网络,产生多个区块分叉,此时具体是哪个出块节点先获胜,取决于网络拓扑和延迟,这分叉的多个链将继续生产区块,利用GRANDPA协议进行最终性区块链抉择,敲定并截断区块分叉。

在一个周期结束后,每个片段将根据最新的验证节点抵押费用情况,在新的验证节点集合中重新选择验出块节点,重新选择出块节点的随机数来自上一个Slot的随机值混合。

进一步地,所述区块生成机制耦合GRANDPA协议在出块节点产生区块后确认最终区块和最终链,将区块生成机制产生的区块建立在GRANDPA协议最终确定的链上,

GRANDPA与其他拜占庭式容错算法不同之处在于,验证节点是对区块链投票,而不是对区块进行投票。GRANDPA间接地应用投票,GRANDPA算法寻找有足够选票,且足以认定为最终区块的最高区块号。因为它消除了妨碍其他区块链终结性小工具的瓶颈。与其他PBFT衍生协议一样,GRANDPA的复杂度为O(n2)。也就是说,如果将节点数增加一倍,发送的消息数会增加四倍。共识系统将区块生产与最终性流程分离,使你可以给每个区块发送消息。通过将区块生产隔离在另一个模块中,生产区块的效率变高了,并在一轮中可以最终确认其中的好几个区块。

GRANDPA具体实现如下:

验证节点进行预投票并为最高的区块进行广播,统计广播的预投票集;

每个验证节点根据预投票集,计算出得到最终确定的最高区块,若预投票集计算出的最高区块为最终确认的区块链的延长链,则验证节点将延长链投递预提交;

获取到至少三分之二的预提交,则确认为最终链,截断其他区块分叉,并在最终链上提交区块生成插槽生成的区块,完成本次跨链共识。

进一步地,在中继链上循环上述步骤进行跨链共识出块,进行一次跨链共识出块具体如下:

验证并承接跨链信息:

响应平行链跨链请求,转接桥传递跨链消息至中继链验证节点,验证节点调用与相应平行链相关的轻节点验证确认跨链信息后;

将跨链信息共识出块:

运行区块生成机制获取出块权限成为出块节点,并在分配的区块生成插槽内打包跨链信息生成主区块;

确认最终主链并提交共识区块:

同时利用GRANDPA协议投票选出最终确定区块链,并在最终确定区块链上提交生成的主区块,完成本次跨链共识,并记录最终确定的区块链为共识主链。

特别地,所述在中继链上循环上述步骤进行跨链共识出块,还包括:在新一轮的跨链共识中,以上一轮最终确定的共识主链作为新一轮的区块生成插槽生成区块的基点。

作为一种可实施方式,还包括以下步骤:

在中继链中设置验证节点安全管理机制,基于验证节点安全管理机制周期性更新选取验证节点集合,每个周期结束时,奖励上周期内做出正确投票或出块的验证节点,惩罚恶意投票的验证节点。

中继链区块由平行链的有效性证明组成,这意味着当中继链验证平行链的状态转换并在最终的中继链中包含证明时,平行链的块也是最终的。

在这里中继链中验证节点参与竞选出块节点需要抵押费用超出其获取出块的激励,防止恶意出块;在验证节点进行确认区块链投票时同样需要抵押费用,并且采用均等加权投票的方式,即使持有更多的押金,未必能获得更多投票份额,防止少数验证节点获得较大的网络份额。

本发明设计一种混合跨链共识方法,具有以下优势:

(1)设置转接桥及中继链承接跨链事务,并通过轻节点验证跨链信息,保证跨链出块的安全性;

(2)利用区块生成机制结合GRANDPA协议分离共识出块和最终性确认,同时获得实时出块与可证明区块链最终性,快速地生成区块,把较慢的确定最终性的任务放在单独的进程中运行,同时不必承担交易处理慢或暂停的风险;

(3)避免了跨链共识出块遵循错误分叉的可能,以及可证明最终性中无法产生新的块的问题。

(4)设置安全管理机制利用经济管理的方式有效保障跨链共识的安全性。

附图说明

图1为本发明跨链共识结构示意图;

图2为本发明共识时间分片示意图;

图3为本发明随机分配插槽示意图;

图4为备用出块机制示意图

图5为GRANDPA协议实现原理图;

图6为混合共识机制示意图。

具体实施方式

为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。

实施例1

一种混合跨链共识方法,创建中继链承接跨链交易,并在中继链进行跨链共识出块维持跨链运行,具体步骤如下:

如图1所示为本发明跨链共识结构示意图,在多个平行链结构中创建中继链,在中继链中部署各平行链轻节点,轻节点抽样记录每个平行链中的区块头信息,所述中继链通过转接桥与平行链关联,获取各平行链的跨链信息;

任一用户注册验证节点,通过抵押其所持有代币资产在中继链上,参与竞选出块节点,在中继链中集合所有参与竞选的验证节点,并在验证节点上运行区块生成机制,选取出块节点,出块节点将验证后的跨链信息打包形成区块;

所述区块生成机制耦合GRANDPA协议在出块节点产生区块后确认最终区块和最终链,将区块生成机制产生的区块依次建立在GRANDPA协议最终确定的链上;

循环上述步骤进行维持多个平行链的跨链共识出块。

实施例2

进一步说明本发明的具体实施过程如下:

在多个平行链结构中创建中继链,在中继链中部署各平行链轻节点,所述中继链通过转接桥与平行链关联,具体如下:

在中继链中部署各平行链的轻节点合约,利用MMR证明及概率抽样确认跨链信息在相应平行链中已经共识确认,具体如下:

1)每个平行链中添加MMR证明的Merkle树变体,每个MMR证明在当前区块高度处将前一个区块的哈希散列值追加到当前的MMR证明中,并在当前区块头中记录更新后的MMR根,并且平行链节点在其当前区块头中标注跨链验证请求及其所持有区块长度、区块个数声明;

2)轻节点根据概率密度函数从相应的平行链节点中随机抽取对数个区块头进行验证,并在抽取过程中预设抽取概率,指定靠近当前区块头的概率为1,对于每个被抽取的区块,其所在节点提供相应的区块头和相应MMR证明;

3)轻节点检查抽取到的每个区块头中的MMR根是否提交到当前区块的MMR子树中,若存在则说明当前区块经抽取到的每个节点共识,说明跨链信息再平行链中是共识确认的;

通过轻节点虽然可以验证跨链信息,但无法传递跨链交易事务,故中继链通过转接桥承接多个平行链的跨链交易,所述转接桥是部署Sync同步程序用于同步跨链信息至中继链验证节点,待进一步的跨链打包共识。

在验证节点中运行区块生成机制,随机性周期分配区块生产插槽给验证节点,使其成为出块节点,具备为分配的插槽生成区块的权限,其具体流程如下:

在一个周期内,把区块共识时间分割成若干片段P,为每个片段生成其相应随机数r,在每个片段中分为多个时间间隔作为区块生成插槽slot,并生成对应插槽编码n;如图2所示,以创世纪块为起始,将创建区块的后续时间划分为不同的epoch,再将不同的epoch划分为更小时间间隔的slot,其中

利用随机数生成函数VRF(verifiable random function,可以理解为随机抽奖函数)输出随机值,其中随机数生成函数的输入参数包括所述片段的随机数r、slot编码n和验证节点的私钥sk,随机数生成函数的输出值与预设值进行比较:

定义VRF如下:(d,π)←VFR(input,sk)

这里input是输入数据,sk是验证节点的密钥,VRF的输出有两项:d作为输出数据,π则可以证明输出数据是合法的。在实际使用中,(d,π)不需要事先告诉其他人,可以直接拿来用。在以后需要的时候再把(d,π)发给对方。只要对方拥有验证节点的公钥,就可以证明输出的结果是合法的。

具体如下:π=sign

π就是验证节点对输入数据的签名。输出数据则是对π做哈希的结果。因为对方有验证节点的公钥和输入数据,可以直接验证签名的真伪。

如果恶意节点能够影响VRF输出结果,它就可以增加被选上的概率,从而得到更多的出块奖励。因此验证节点首先需要提前把公钥发布在区块链上。

验证节点需要提前两个片段例如在P

r

这里ρ是在P

每一个验证节点可以自己计算出VRF的输出数据,然后进行判定

如图3所示,在随机分配插槽的过程中,每一个slot里都会通过VRF从众多的节点中抽出一部分有资格出块的节点。每一个slot选出的出块节点都可能不同,有可能多个,也可能一个都没有被选上。总体来说一个节点被选上的概率与它抵押的代币数量成正比。

所述区块生成机制还包括如下:

设置备用出块机制,针对没有生成主区块的空插槽,采用轮询调度算法将整个周期内选取出的出块节点依次编号(由于每个片段包含多个插槽,每个时间周期包含多个片段),若极端情况下整个片段都没有出块节点,则延用上周期的出块节点使用备用机制,故按照编号顺序依次为指定的空插槽生成次区块,如图4所示。

采用Aura(Round Robin)算法(轮询调度算法):就是将选取出的出块节点依次编号,并按照编号顺序依次为指定的空slot生成区块,每次调度执行i=(i+1)mod n,并选出第i个出块节点。

如果出块节点没有在slot开始时站出来,那么就启动备用出块机制创建次区块,就是说如果没有收到任何区块,则通过备用机制出块,这种后退方式将确保每个slot都有一个区块产生,并有助于确保一致的出块时间。

针对多个出块节点在同一插槽内生成多个主区块并广播到网络,产生多个区块分叉,此时具体是哪个出块节点先获胜,取决于网络拓扑和延迟,这分叉的多个链将继续生产区块,利用GRANDPA协议进行最终性区块链抉择,敲定并截断区块分叉。

在一个周期结束后,每个片段将根据最新的验证节点抵押费用情况,在新的验证节点集合中重新选择验出块节点,重新选择出块节点的随机数来自上一个Slot的随机值混合。

所述区块生成机制耦合GRANDPA协议在出块节点产生区块后确认最终区块和最终链,将区块生成机制产生的区块建立在GRANDPA协议最终确定的链上,通过将区块生产隔离在另一个模块中,生产区块的效率变高了,并在一轮中可以最终确认其中的好几个区块。比如检查Kusama节点中的以下日志消息:

Idle(24peers),best:#664257(0x706c…76b7),finalized#664253(0xe4ab…4d2a)

Imported#664258(0xee71…6321)

Idle(24peers),best:#664258(0xee71…6321),finalized#664256(0x809a…a5d8)

发现在一轮中,GRANDPA最终确定了三个区块(664,254至664,256)。

一个slot中如果已经有了出块节点的话,那么他就会生成一个主区块(primaryblock),就不会再有次区块了。因此,每一个slot中必定会有一个区块,它要么是主区块,要么是次区块。如图5所示,在临时分叉的链中可能既有主区块(图中用1表示)也有次区块(图中用2表示)

如图5所示为GRANDPA协议实现示意图,具体实现如下:

验证节点首先进行预投票,为其认为最高的区块广播,并统计链上广播的预投票集,将最多广播数的区块添加到区块链上;新链会比上一次最终确定的链长出几个区块,其中诚实验证节点数量不少于2/3的总验证节点数。

等待网络延迟后,每个验证节点根据预投票集,计算出得到最终确定的最高区块,若预投票集计算出的最高区块延长了上条最终确认的区块,则验证节点将对这条链投递预提交;

每个验证人累计接收2/3及以上预提交,则确认预提交的链为最终链,截断其他区块分叉,并在最终链上提交区块生成插槽生成的区块,完成本次跨链共识。如图5所示,在6个验证节点(1-6)中有4个(2,3,4,5)验证节点选择链2进行预提交,则最终选择链2作为最终链,链1和3进行截断。

另外,区块生成机制形成的共识会始终在GRANDPA最终确定的链上生成区块。在最后确定的区块后面可能会有分叉,最终共识会通过在具有最多主区块(如图6中标有1的区块)的链上创建区块以提供概率确定性。

如图6所示,其中黑色的区块是已经被最终确定的区块。图中标有1的区块代表要区块,标有2的区块代表次区块。在该图中,最下面的链没有建立在最新确认的区块上所以直接忽略。最上面的一条链虽然是最长链,但是它的主要区块确是最少的,因此它不符合条件。而第二条链中它的区块总数虽然短,但其主区块数确是最多的,因此会选择第二条链作为最终链。

实施例3

在中继链上循环上述步骤进行跨链共识出块,进行一次跨链共识出块具体流程如下:

1)验证并承接跨链信息:

响应平行链跨链请求,转接桥传递跨链消息至中继链验证节点,验证节点调用与相应平行链相关的轻节点验证确认跨链信息后;

2)将跨链信息共识出块:

运行区块生成机制获取出块权限成为出块节点,并在分配的区块生成插槽内打包跨链信息生成主区块;

3)确认最终主链并提交共识区块:

同时利用GRANDPA协议投票选出最终确定区块链,并在最终确定区块链上提交生成的主区块,完成本次跨链共识,并记录最终确定的区块链为共识主链。

在中继链上循环上述步骤进行跨链共识出块,还包括:在新一轮的跨链共识中,以上一轮最终确定的共识主链作为新一轮的区块生成插槽生成区块的基点。

另外,在中继链中设置验证节点安全管理机制,周期性更新选取验证节点集合,每个周期结束时,奖励上周期内做出正确投票或出块的验证节点,惩罚恶意投票的验证节点。

上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。

相关技术
  • 一种混合跨链共识方法
  • 一种基于公共节点共识的区块链跨链方法
技术分类

06120113043329