一种动态可控的区块链多人通道高效混合型共识方法及系统

文档序号:32312837发布日期:2022-11-23 13:03阅读:140来源:国知局
一种动态可控的区块链多人通道高效混合型共识方法及系统

1.本发明涉及区块链链外通道研究技术领域和区块链共识方法技术领域,并特别涉及一种动态可控的区块链多人通道高效混合型共识方法及系统。


背景技术:

2.区块链技术于2008年问世,随着应用领域的不断扩展,它去中心化、安全、不可篡改的特性为越来越多人带来在互联网上进行价值交换的便利。“人”对应了网络中主机节点运行的客户端上登陆的一个区块链账户地址。
3.然而区块链作为互联网应用的底层架构,通量与中心化系统差距甚大,无法适应有高性能要求的应用需求。这导致区块链的应用范围很小,只能局限于对通量要求不高的数据存储、产品溯源等领域。为了从根本上提升区块链通量,世界各地的学者研究了各种技术手段,旨在从区块链的结构设计上对区块链进行扩容。通道技术是一种区块链下扩容技术,它的思想在于:在区块链主链外建立另一层交易网络,将部分计算和存储压力转移出区块链,在不改变区块链基本协议和原有信任假设的情况下,达到提升通量的效果。最早出现的链下通道扩容方案是闪电网络,它采用在链外建立支付通道网络的方式,实现了交易的即时终结性和交易隐私性,多笔实际交易压缩为一笔,从而大幅减少链上操作。而后出现的雷电网络根据以太坊特点定制化的链外支付通道网络,兼容erc-20类代币。
4.闪电网络和雷电网络本质都是双人通道网络,交易双方节点通过在链上锁定资金来建立双人支付通道,而后可在通道中进行高频小额的交易,无需支付区块链上的高额交易费,实现了单笔交易的即时终结性和较低的开销。目前双人支付通道已经在公开可用的系统中运行,但链上锁定资金强绑定在特定通道上,无法实现与非直接相连节点的即时终结性交易,交易范围局限,此即双人通道引发的资金流动性不足问题。除此之外,双人通道网络中的交易成功率受网络拓扑、寻路算法、路径资金容量的影响较大,特别是实际应用环境中网络环境的不稳定性更加显著,交易成功率难以维稳。为了改进双人通道,多人通道诞生,它由多个节点组成,每个节点锁定的一笔资金可用于和通道内其他多个节点进行交易,资金流通性大大提升,同时引入轻量的共识方案来解决双花问题。多人通道的方案均采用引入轻量共识算法、周期性链上结算的方式来构建,在完成共识的数据对象上有各自的设计特点,各有所长,可用于不同场景下的区块链应用上。
5.根据区块数据是否满足最终一致性,现有区块链共识算法可以分为概率性共识与确定性共识两类。概率性共识算法的处理性能较低,且系统计算开销较大。确定性共识算法的性能较高,交易处理效率高,计算开销小,结合身份认证、数字签名等密码学技术,能够在特定假设下避免一系列攻击行为。链下多人通道多采用这类共识算法,以减轻链下系统的负担,切实提升系统通量。具体地,多人通道会周期性暂停交易处理,开展确定性共识过程,通过“节点通信+数字签名”的方式,对代表了通道状态的账本数据进行共识,得到的一致性状态数据可以作为链上结算的证据。
6.现有多人通道的共识方法设计各有差异,主要可分为两类:
7.一类是周期性对账本进行确定性共识,每个周期的共识点到来时,交易处理暂停,领导者协调组织节点完成强一致共识,进入新一轮周期,通道开始继续运行。然而作为强一致共识算法,确定性的共识要求通道必须暂停交易处理,直至共识完成才能继续正常运行;并且一个周期内出现的所有出错交易都只会在共识点处被诚实节点发现,也只能在此处才能进行交易回滚,甚至导致本应正常完成的交易也被迫回滚,造成资源浪费。
8.另一类是周期性对多人通道状态进行弱一致的共识,领导者周期性把账本广播给通道内所有节点,其他节点本地验证账本数据的局部正确性,不需要与链上交互实现共识,也无需保证账本的全局一致性,因此效率更高,但是本质上并没有主动实现通道内共识,而是被动地由诚实节点发现异常,导致错误交易被延迟发现,回滚代价过大。
9.除了以上问题,现存多人通道共识算法均缺乏动态调整机制,系统运行状态的不断改变会导致共识开销不断变化,为了长时间维持共识开销处于理想水平,动态调整运行参数的策略设计是不可或缺的。
10.因此,本发明认为现存的多人通道共识算法可以从减少共识开销、降低交易回滚率与提升算法运行灵活性的角度进行优化改进,以满足链下多人通道的系统设计与现实需求。


技术实现要素:

11.本发明的目的在于,解决现有多人通道周期性共识算法效率低下的问题,提出一种混合型共识算法,满足区块链下多人通道设计与实现的需求。
12.针对现有技术的不足,本发明提出一种动态可控的区块链多人通道高效混合型共识方法,其中包括:
13.步骤1、在区块链主链外建立区块链多人通道,该区块链多人通道内包括普通节点、领导节点和候选领导节点;该区块链多人通道每过持续调整周期,便到达调整点,调用模块4,且该持续调整周期由多个共识周期构成,该区块链多人通道每过该共识周期,便到达共识点,调用模块3,且该共识周期包括至少一个检查周期,检查周期结束后到达检查点,该区块链多人通道每到该检查点,便调用模块2;
14.步骤2、所有普通节点对自身账本状态进行验证,所有候选领导节点对账本进行验证,若验证过程中发现账本错误,则发现账本错误的节点发起链上申诉,并增加该共识周期内的检查周期数量,否则普通节点和候选领导节点分别本地更新最新账本概要和明细;
15.步骤3、该区块链多人通道暂停交易处理,该领导节点协调组织节点进行强一致共识,若共识中发现错误,则发现账本错误的节点发起链上申诉,并缩减该共识周期,否则该区块链多人通道内节点根据选举规则,选举出新的领导节点;
16.步骤4、领导节点根据账本数据得到前一调整点到当前调整点的指标参数,输入通道内共识开销模型,得到下一持续调整周期内共识周期内检查点数量和该共识周期长度。
17.所述的动态可控的区块链多人通道高效混合型共识方法,其中该区块链多人通道内普通节点、领导节点和候选领导节点的账本均采用merkle树结构,merkle树结构中叶节点字段包括账户地址、通道内余额、收入交易树根和支出交易树根;整个账本的字段包括多人通道唯一标识符、账本树所表示状态在多人通道的周期数、经merkle树构造方法生成的账本树根、领导节点的签名、叶节点组成的数组;其中该收入交易树根和该支出交易树根中
交易凭证字段包括多人通道唯一标识符、交易发生的共识周期、交易的全局唯一标识符、交易双方地址、交易金额、发送方签名和领导节点的签名。
18.所述的动态可控的区块链多人通道高效混合型共识方法,其中
19.该步骤2包括:
20.该领导节点向在通道中所有节点广播最新账本概要,并另外向候选领导者节点集合组播所有交易凭证,所有节点在本地异步地验证账本状态,其中普通节点验证的具体内容包括领导者签名正确性、余额之和与上一状态共识结果一致性、本地交易树根与领导者发送的账本树结点包含的交易树根一致性;候选领导者节点验证增量交易的签名正确性、收支数额与账户状态是否对应,验证通过后在候选领导者集合内部进行账本状态的一致性检验;验证过程全部通过后,所有节点在本地各自更新账本状态,至此检查点过程结束;
21.该步骤3包括:
22.该领导节点向在通道中所有节点广播共识消息,所有接收到共识消息的节点对其进行验证,验证的内容包括:领导者签名正确性、余额之和与上一状态共识结果一致性、本地交易树根与领导者发送的账本树结点包含的交易树根一致性、验证加入退出节点账本数据是否与账户资金对应且已经在链上锁定;当该共识点为该调整点时,执行该步骤4,候选领导节点验证领导节点发送的检查点数量和共识周期长度是否正确;当该共识点处于该持续调整周期中时,候选领导节点验证领导者节点发送的下一周期检查点数量和共识周期长度是否符合调整策略;所有验证通过后,节点对共识消息的散列值进行签名,并发送给领导节点,领导节点接收到所有节点的签名后,将所有签名广播,节点收到其他节点的签名,检查其正确性并运行领导者选举算法;
23.其中验证过程不通过时,诚实节点需将持有的正确账本状态作为证据上传链上,借助智能合约发起链上争议处理过程。
24.所述的动态可控的区块链多人通道高效混合型共识方法,其中该步骤4包括:领导者根据账本数据得到ni、ti、c
total
(ti,ni)和c
malice,i
,并通过该共识开销模型得到上一快速调整点到当前调整点的多组vace指标值及其自变量:
[0025][0026]ctotal
(ti,ni)=γtini[0027][0028]cmalice,i
=λti[0029]
其中ni为第i个共识周期中,多人通道包含的节点数;e
censensus
(ni)为共识周期i的共识点处,强一致共识的开销;e
rollback
(ni)为共识周期i中单笔失败交易回滚所花费的开销,e
rollback
(ni)为共识周期i中单笔失败交易回滚所花费的开销;ti为共识周期i的共识周期长度;c
total
(ti,ni)为共识周期i内所有被处理的交易数量,c
malice,i
为共识周期i内恶意事件发生的次数;λ为共识周期i内恶意事件发生的强度;γ为共识周期内交易总数量关于网络规模ni的函数参数;每一个影响因素对应的指数分别为ai(i=0,1,

,7),a2,a3,a4,a5,a6《0,a0,a1,a7》0;运行状态变量
分别为第i-1轮共识完成后通道内节点余额的方差、第i-1个共识周期成功完成的交易数量、第i-1个共识周期成功完成的交易额总量、第i个共识周期的候选领导者节点数量、第i个共识周期的普通节点数量、第i个共识周期包含的检查点数量;
[0030]
该领导节点通过拟合计算参数γ,ai(i=0,1,

,7),得到该系统运行状态变量的表达式,求得该表达式在新一个共识周期关于检查点个数和共识周期长度的极小值,取整该极小值作为下一持续调整周期内共识周期内检查点数量和该共识周期长度。
[0031]
本发明还提出了一种动态可控的区块链多人通道高效混合型共识系统,其中包括:
[0032]
初始模块,用于在区块链主链外建立区块链多人通道,该区块链多人通道内包括普通节点、领导节点和候选领导节点;该区块链多人通道每过持续调整周期,便到达调整点,调用共识调整模块,且该持续调整周期由多个共识周期构成,该区块链多人通道每过该共识周期,便到达共识点,调用强共识模块,且该共识周期包括至少一个检查周期,检查周期结束后到达检查点,该区块链多人通道每到该检查点,便调用弱共识模块;
[0033]
弱共识模块,用于使所有普通节点对自身账本状态进行验证,所有候选领导节点对账本进行验证,若验证过程中发现账本错误,则发现账本错误的节点发起链上申诉,并增加该共识周期内的检查周期数量,否则普通节点和候选领导节点分别本地更新最新账本概要和明细;
[0034]
强共识模块,用于使该区块链多人通道暂停交易处理,该领导节点协调组织节点进行强一致共识,若共识中发现错误,则发现账本错误的节点发起链上申诉,并缩减该共识周期,否则该区块链多人通道内节点根据选举规则,选举出新的领导节点;
[0035]
共识调整模块,用于使领导节点根据账本数据得到前一调整点到当前调整点的指标参数,输入通道内共识开销模型,得到下一持续调整周期内共识周期内检查点数量和该共识周期长度。
[0036]
所述的动态可控的区块链多人通道高效混合型共识系统,其中该区块链多人通道内普通节点、领导节点和候选领导节点的账本均采用merkle树结构,merkle树结构中叶节点字段包括账户地址、通道内余额、收入交易树根和支出交易树根;整个账本的字段包括多人通道唯一标识符、账本树所表示状态在多人通道的周期数、经merkle树构造方法生成的账本树根、领导节点的签名、叶节点组成的数组;其中该收入交易树根和该支出交易树根中交易凭证字段包括多人通道唯一标识符、交易发生的共识周期、交易的全局唯一标识符、交易双方地址、交易金额、发送方签名和领导节点的签名。
[0037]
所述的动态可控的区块链多人通道高效混合型共识系统,其中
[0038]
该弱共识模块用于:
[0039]
该领导节点向在通道中所有节点广播最新账本概要,并另外向候选领导者节点集合组播所有交易凭证,所有节点在本地异步地验证账本状态,其中普通节点验证的具体内容包括领导者签名正确性、余额之和与上一状态共识结果一致性、本地交易树根与领导者发送的账本树结点包含的交易树根一致性;候选领导者节点验证增量交易的签名正确性、收支数额与账户状态是否对应,验证通过后在候选领导者集合内部进行账本状态的一致性检验;验证过程全部通过后,所有节点在本地各自更新账本状态,至此检查点过程结束;
[0040]
该强共识模块用于:
[0041]
该领导节点向在通道中所有节点广播共识消息,所有接收到共识消息的节点对其进行验证,验证的内容包括:领导者签名正确性、余额之和与上一状态共识结果一致性、本地交易树根与领导者发送的账本树结点包含的交易树根一致性、验证加入退出节点账本数据是否与账户资金对应且已经在链上锁定;当该共识点为该调整点时,调用该共识调整模块,候选领导节点验证领导节点发送的检查点数量和共识周期长度是否正确;当该共识点处于该持续调整周期中时,候选领导节点验证领导者节点发送的下一周期检查点数量和共识周期长度是否符合调整策略;所有验证通过后,节点对共识消息的散列值进行签名,并发送给领导节点,领导节点接收到所有节点的签名后,将所有签名广播,节点收到其他节点的签名,检查其正确性并运行领导者选举算法;
[0042]
其中验证过程不通过时,诚实节点需将持有的正确账本状态作为证据上传链上,借助智能合约发起链上争议处理过程。
[0043]
所述的动态可控的区块链多人通道高效混合型共识系统,其中该共识调整模块,用于根据账本数据得到ni、ti、c
total
(ti,ni)和c
malice,i
,并通过该共识开销模型得到上一快速调整点到当前调整点的多组vace指标值及其自变量:
[0044][0045]ctotal
(ti,ni)=γtini[0046][0047]cmalice,i
=λti[0048]
其中ni为第i个共识周期中,多人通道包含的节点数;e
censensus
(ni)为共识周期i的共识点处,强一致共识的开销;e
rollback
(ni)为共识周期i中单笔失败交易回滚所花费的开销,e
rollback
(ni)为共识周期i中单笔失败交易回滚所花费的开销;ti为共识周期i的共识周期长度;c
total
(ti,ni)为共识周期i内所有被处理的交易数量,c
malice,i
为共识周期i内恶意事件发生的次数;λ为共识周期i内恶意事件发生的强度;γ为共识周期内交易总数量关于网络规模ni的函数参数;每一个影响因素对应的指数分别为ai(i=0,1,

,7),a2,a3,a4,a5,a6《0,a0,a1,a7》0;运行状态变量》0;运行状态变量分别为第i-1轮共识完成后通道内节点余额的方差、第i-1个共识周期成功完成的交易数量、第i-1个共识周期成功完成的交易额总量、第i个共识周期的候选领导者节点数量、第i个共识周期的普通节点数量、第i个共识周期包含的检查点数量;
[0049]
该领导节点通过拟合计算参数γ,ai(i=0,1,

,7),得到该系统运行状态变量的表达式,求得该表达式在新一个共识周期关于检查点个数和共识周期长度的极小值,取整该极小值作为下一持续调整周期内共识周期内检查点数量和该共识周期长度。
[0050]
本发明还提出了一种存储介质,用于存储执行所述任意一种动态可控的区块链多人通道高效混合型共识方法的程序。
[0051]
本发明还提出了一种客户端,用于所述任意一种动态可控的区块链多人通道高效混合型共识系统。
[0052]
由以上方案可知,本发明的优点在于:本发明提出的混合共识算法(hybrid consensus algorithm,hca)在现存的多人通道周期性共识算法中引入检查点,从减少长期运行的共识开销入手,实现了可控加长两阶段共识周期的同时,保证交易回滚率不大幅上升,并且通过分析对导致交易回滚的恶意事件出现的随机过程进行建模,提出能够代表多人通道内成功完成交易平均共识开销的指标——有效平均共识开销,进一步设计了利用此指标为共识算法运行参数的调整提供参考的动态调整算法。相较现有多人通道周期性共识算法,本发明提出的hca算法不仅保证区块链中数据真实、不可篡改,维护数据安全性,还保证区块链系统在用户可接受的网络、计算、存储、时延开销下稳定且高效地运行,尤其是显著提升共识效率、降低交易回滚率,并保证了这两者能够长期稳定在较理想水平。
附图说明
[0053]
图1为本发明混合型共识算法共识周期示意图;
[0054]
图2为多人通道的运行周期划分示意图;
[0055]
图3为检查点验证流程图;
[0056]
图4为共识点状态共识流程图。
具体实施方式
[0057]
发明人在进行区块链下多人通道的通量提升研究时,发现现有共识算法的开销大多在于周期性共识点的强共识过程,为了减少共识开销,可控地加长共识周期是一个高效的选择,但这样做会导致因异常事件出现而需要回滚的交易大量堆积在共识点处统一被发现和回滚到上一个共识周期,这使得部分正常交易也因被回滚而失败,增加了整个系统的交易回滚率,严重影响多人通道通量。发明人通过分析现实系统的运行状况,发现几乎所有导致回滚的异常事件均由网络中节点的恶意行为导致,而恶意节点是否发起作恶又是由他们对系统状态的观察结果决定的。因此发明人考虑对系统状态进行建模,并且假设恶意节点一旦观察到系统处于攻击成功率较高的状态时,就一定发起攻击。再通过对多人通道共识开销的合理建模,可以为共识算法参数的动态调整提供参考。所以发明人一方面对周期性共识算法进行改进,在共识周期内引入检查点验证过程,得到一种全新的混合型共识算法(hybrid consensus algorithm,hca);一方面通过对系统状态和共识开销进行分析建模,设计了一套共识算法运行参数的动态调整策略。
[0058]
hca算法设计对现有周期性共识和更换领导者通道方案的共识算法进行改进,在强一致共识周期内引入多个检查点验证过程,在检查点处由候选领导者节点和普通节点异步验证账本,实现账本数据局部正确性和一致性,并完成账本备份,一旦发生交易回滚,只需要回滚至上个账本验证点即可,而不需要回滚整个共识周期,保证加长共识周期后交易回滚率水平仍然较低,从而达成共识开销减少的效果。与此同时,辅助hca算法高效运行的算法运行参数动态调整策略会根据系统实际的运行状况,建立受异常事件发生等多种因素影响的通道内共识开销的数学模型,通过函数拟合等数值计算工具对hca算法的运行参数(调整检查点个数和共识周期长度)进行调整,实现了hca算法运行参数的优选和动态可调,有利于系统的持续高效运行。
[0059]
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说
明书附图作详细说明如下。
[0060]
本发明所提出的混合型共识算法的核心是检查点验证过程的引入,以及算法运行参数的动态调节机制,检查点验证过程的设计与混合型共识算法的动态调整机制是本发明的关键技术点。
[0061]
(1)检查点验证过程引入
[0062]
多人通道中具有多个节点,每个节点均为区块链客户端中的一个区块链账户地址。在检查点验证过程,所有普通节点对自身账本状态进行局部正确性的异步验证,即普通节点只验证自己本地保存的账本概要中,自己账户的这一部分是不是和领导者发送的自己账户的那一部分一致。所有候选领导者节点对账本进行异步验证,同时实现账本备份。在此过程中发现账本错误,需要立刻回滚至上一个检查点处。异步代表每个节点独立验证账本,验证的结果及进度都不需要和别的节点进行同步并达成一致,当发现异常情况就直接诉诸上一层网络——区块链,进行争议处理,未发现异常则结束整个异步验证流程。
[0063]
具体而言,本发明hca的一个状态共识周期内包含了两种共识过程:状态共识、检查点验证。如图1所示,一个状态共识周期包含一个或多个检查点过程,开始和结束分别为上一周期和本周期的状态共识过程。
[0064]
1.账本数据结构设计
[0065]
本发明为hca设计了账本结构,这种账本基于默克尔merkle树结构,本发明称其为账本树。账本树是对原生merkle树的改进,改进之处在于使代表节点账户的叶子节点包含更丰富的信息,具体包含的字段如表1所示:
[0066]
表1账本树叶节点字段
[0067][0068]
整个账本树的字段如表2所示:
[0069]
表2账本树字段
[0070][0071]
交易凭证的字段如下表3所示:
[0072]
表3交易凭证字段
[0073][0074]
账本树以及交易凭证是链下通道状态存储的基本数据结构,它的正确性和一致性是hca算法的执行目标,在算法的不同阶段,这些数据的局部正确性与一致性会在检查点得到检验和校正,并周期性在共识点达成全局正确及一致。链下通道内不同角色节点维护的账本类型分为两种:概要账本、明细账本。前者仅包括账本树(表1和2的内容),后者包括账本树以及相应交易凭证(表1、2和3的内容)。
[0075]
具体来说理想情况下,整个通道内的概要账本和明细账本是全局一致的,不同角色需维护不同类型:普通节点只维护账本概要,候选领导和领导者维护账本概要和明细。但非理想情况下,账本有可能出现全局不一致情况,例如领导者伙同候选领导者作恶,导致不同普通节点持有的概要账本不一致,但此时还未到达下一个强一致状态共识点,这样的不一致还没有被发现,因此存在延迟纠正现象,通道内存在着不一致的错误账本。
[0076]
2.检查点验证
[0077]
检查点要对多人通道账本进行轻量的验证,由诚实节点验证账本,候选领导者备份账本并共识,其过程异步执行,不引入额外的时间开销。目的是对领导者节点进行心跳检测,并提供一种加长共识周期、提升通量但不显著增加交易回滚的处理策略。
[0078]
具体过程如下:首先,领导者节点在通道中向所有节点广播最新账本概要,并另外向候选领导者节点集合组播上一检查点或共识点至当前时刻,所有处理完成的交易凭证。然后,普通节点验证账本中自己的账户状态是否与本地计算结果一致,整个通道的余额是否与上一共识点结果一致,保证了账本的局部正确性。候选领导者节点除了验证自己账户状态的正确性,还要验证所有增量交易是否合法,并在候选领导者集合内部进行账本状态的同步,保证了账本的全局正确性和一致性。以上验证过程全部通过后,所有节点更新本地存储的账本,至此检查点过程结束。
[0079]
检查点过程会出现的故障及作恶情况包括:1.领导者不响应异常:其他节点没有在给定的时间内收到领导者广播的账本消息,可能是因为网络延迟、宕机或离线、恶意不响应;遇到这种情况,节点再次向领导者请求账本,若超时未响应就要由散列值最大的候选领导者组织发起链下账本共识,以生成可供链上结算的同步账本;2.交易遗漏或错误,此种情况由其他节点发现,属于领导者账本构造错误,需要发起链上申诉及回滚(链上申诉过程与现有多人通道方案相同,不再赘述);3.领导者发送给候选领导者的账本概要或交易凭证不一致,此种情况可能是领导者独立或串谋部分候选领导者发起双花攻击,需要发起链上申诉及回滚。
[0080]
注意:全部候选领导者和领导者串谋双花无法在检查点处被诚实节点发现,只能依靠共识点的状态共识发现和回滚。
[0081]
3.状态共识
[0082]
状态共识,要进行账本全局状态的强同步,需要所有节点在线,目的是实现通道内所有节点对链下状态的一致性视图,能够解决双花问题,保证安全性,同时处理节点的加入退出、关闭通道请求,完成领导者周期性更换。此状态共识结束后产生的链下一致性状态,可以用于区块链上的资产结算。本发明提出并采用新的账本数据结构,导致共识消息、验证内容与以往不同。
[0083]
具体过程如下:首先,领导者节点在通道内部广播共识消息,共识消息字段如下表4所示:
[0084]
表4共识消息字段
[0085][0086]
所有接收到共识消息的节点对其进行验证,验证的内容除了对增量交易的状态验证,还要验证新加入或退出的节点锁定资金与链上账户状态是否对应。
[0087]
除此之外,状态共识点是hca算法调整运行参数的时机,具体地,将整个多人通道的运行划分为多个持续调整周期,每个持续调整周期内包含多个共识周期,持续调整周期之间由快速调整点连接,如图2所示。
[0088]
若当前共识点为快速调整点,候选领导者需要本地运行hca算法动态调整机制(将在下一部分详述),验证本地计算结果与领导者发送的结果之间的误差是否小于事先制定的标准;若当前共识点处于持续调整期间,即并非快速调整点,候选者只需要验证领导者节点发送的运行参数是否符合调整策略的规定即可。
[0089]
以上所有验证通过后,节点对共识消息的散列(hash)值进行签名,发送给领导者。领导者接收到所有节点的签名后,将所有签名广播,节点收到其他节点的签名,检查其正确性并运行领导者选举算法。领导者选举算法在整个通道的生命周期中周期性运行,在共识节点处进行选举,选举的具体过程大多基于随机算法,额外增加节点评分、权重衡量、密码学安全保障等模块,以增强选举算法安全性、效率、开销等表现。不同系统适用的选举算法也不同,具体技术选型受到区块链资产类型、多人通道参与者信任度、多人通道功能接口等众多因素影响,需要根据具体产业化要求进行实现。
[0090]
以上过程中可能出现的异常情况包括:1.普通节点恶意不发送签名,领导者在给定时间收集不到所有签名;2.领导者恶意构造错误账本,节点对共识消息的验证不通过,领导者节点在给定时间内无法收集到所有签名,只收到了协同作恶节点的签名;3.领导者恶意设置不符合调整策略规定的运行参数,被候选领导者发现。这些情况均可由链上的争议处理模块处理,需要诚实节点向链上提交争议处理请求。
[0091]
(2)hca算法运行参数动态调节机制
[0092]
该调节机制是基于hca算法在多人通道的实际运行情况,利用发明人对多人通道系统状态和共识开销进行的建模,动态寻找较优运行参数的机制。具体地,发明人定义了衡量多人通道共识开销的有效平均共识开销(valid average consensus expense,vace)指标,同时通过对系统状态的数值化建模,将离散化的多人通道状态转化为可实时计算的连续性数值,可以作为对恶意事件的发生概率的评价,辅助参与vace参数的拟合估计,从而可进一步得到hca算法的较优运行参数,实现其在实际运行过程中的阶段性动态调整。
[0093]
1.有效平均共识开销
[0094]
本发明提出了一个衡量单个多人通道共识开销的指标,称为有效平均共识开销。下表5为此指标的基础变量定义:
[0095]
表5 vace指标基础变量定义
[0096][0097][0098]
注:由于节点机器性能的差异,以上提到的开销仅包括网络通信开销。
[0099]
vace指标的物理意义为多人通道一个共识周期内成功处理完成的交易所花费的平均共识开销,则针对一个多人通道,其在第i个共识周期的有效平均共识开销的表达式如下:
[0100][0101]
首先,考虑一个共识周期内,总交易数量为共识周期长度和网络规模的线性函数,表达式如下:
[0102]ctotal
(ti,ni)=γtiniꢀꢀ
(2)
[0103]
其次,在多人支付通道网络中,恶意节点会视通道状态如何来发起恶意攻击,当多人通道状态转变为某些特殊状态,恶意节点会发起攻击。据此,考虑到多种影响系统状态的因素,如下表6所示:
[0104]
表6导致回滚的恶意事件发生强度的影响因素变量
[0105][0106]
考虑这些影响因素与导致回滚的恶意事件发生强度的相关性,分别设置它们的函数形式为多项式,因此导致回滚的恶意事件发生强度为:
[0107][0108]
每一个影响因素对应的指数分别为ai(i=0,1,

,7),其中a2,a3,a4,a5,a6《0,a0,a1,a7》0.
[0109]
在同一个共识周期i内,将导致交易回滚的恶意事件的发生视为一个计数过程,由于节点可视的系统状态为第i-1个共识周期的共识结果,所以可以认为在共识周期i内,恶意事件发生的计数过程是齐次泊松过程,其均值函数mi(t)=λt。那么在共识周期i中,导致回滚发生的恶意事件数量期望为mi(ti)=λti,即一个周期内恶意事件发生的次数c
malice,i
=λti。
[0110]
综上可见,vace指标是网络规模、共识周期长度、通道交易情况等经过量化的系统运行状态的函数,其中包含的未定参数可根据多人通道系统的现实运行状况进行估计。
[0111]
2.hca算法运行参数动态调整策略
[0112]
在多人通道的实际运行中,基于上文定义的有效平均共识开销指标,可以从多个共识周期的账本和运行状况数据方便地得到ni、ti、c
total
(ti,ni)和c
malice,i
的值,从而可以再每个状态共识点直接计算得到对应的vace值,便可对参数γ,ai(i=0,1,

,7)进行拟合估计,从而为之后的hca算法运行参数的调整提供参考。拟合所使用的数据是上一个持续调整期内产生的,拟合得到的参数用于计算下一持续调整期的开端要使用的运行参数。
[0113]
在每个状态共识点,领导者和候选领导者会依据当前共识点所处的时期(持续调整期或快速调整点)来各自运行动态调整算法,计算下一周期的运行参数,从而实现参数的持续动态调整,具体调整策略如下:
[0114]
1)在持续调整期间,遵循以下规则调整检查点个数和共识周期长度:
[0115]
a)当上一个共识周期的检查点发现并回滚了出错交易,则增加本周期的检查点数量,否则减少;
[0116]
b)当上一个共识周期的共识点发现并回滚了出错交易,则缩减共识周期长度,否则加长;
[0117]
2)在快速调整点时,根据前一个持续调整期内多个共识点的共识结果,得到vace指标的值和自变量,通过函数拟合来估计参数γ及ai(i=0,1,

,7)的值,从而得到vace关于表6中系统运行状态变量的函数表达式,然后使用微分方程的数值解计算方法求得vace在新一个共识周期关于检查点个数和共识周期长度的极小值,在此极小值附近取整数解作
为新一个共识周期(即新一个持续调整期的第一个共识周期)的运行参数。
[0118]
以上调整策略形成了hca算法运行参数的动态调整算法,其伪代码如算法1所示。
[0119][0120][0121]
综上,周期性出现的快速调整点将hca算法的运行共识周期长度和检查点数量调整至一个使得通道的平均有效共识开销较小的值,使整个通道的运行状况具有良好的自适应性,为通道的高效运行提供持续性保障。
[0122]
图3是检查点验证过程流程图。本发明检查点验证与现有技术多人通道的弱一致共识过程之间的区别在于:新型账本数据结构的引入和候选领导者集合同步验证过程的引入。具体来说:
[0123]
首先,领导者节点在通道中向所有节点广播最新账本概要,并另外向候选领导者节点集合组播所有交易凭证。当节点由于网络堵塞、硬件故障的因素未收到最新账本时,向除了领导者节点以外的其他节点请求最新账本数据。所有节点在本地异步地验证账本状态。普通节点验证的具体内容包括领导者签名正确性、余额之和与上一状态共识结果一致性、本地交易树根与领导者发送的账本树结点包含的交易树根一致性;候选领导者节点验证增量交易的签名正确性、收支数额与账户状态是否对应,验证通过后在候选领导者集合内部进行账本状态的一致性检验。这些验证过程全部通过后,所有节点在本地各自更新账本状态,至此检查点过程结束。当以上验证过程不通过时,诚实节点需将持有的正确账本状态作为证据上传链上,借助智能合约发起链上争议处理过程。
[0124]
图4是共识点状态共识的流程图。首先,领导者节点在通道内部广播共识消息,所有接收到共识消息的节点对其进行验证,验证的内容包括:领导者签名正确性、余额之和与上一状态共识结果一致性、本地交易树根与领导者发送的账本树结点包含的交易树根一致性、验证加入退出节点账本数据是否与账户资金对应且已经在链上锁定。当前共识点为快速调整点时,候选领导者需要本地运行hca动态调整算法,验证结果与领导者发送的检查点数量和共识周期长度之间的误差是否小于事先制定的标准;当前共识点处于持续调整期间时,候选领导者需另外验证领导者节点发送的下一周期检查点数量和共识周期长度是否符合调整策略的规定。以上所有验证通过后,节点对共识消息的散列值进行签名,并发送给领导者。领导者接收到所有节点的签名后,将所有签名广播,节点收到其他节点的签名,检查其正确性并运行领导者选举算法。以上过程中的验证不通过情况,均由诚实节点发起链上
争议过程来处理。
[0125]
以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
[0126]
本发明还提出了一种动态可控的区块链多人通道高效混合型共识系统,其中包括:
[0127]
初始模块,用于在区块链主链外建立区块链多人通道,该区块链多人通道内包括普通节点、领导节点和候选领导节点;该区块链多人通道每过持续调整周期,便到达调整点,调用共识调整模块,且该持续调整周期由多个共识周期构成,该区块链多人通道每过该共识周期,便到达共识点,调用强共识模块,且该共识周期包括至少一个检查周期,检查周期结束后到达检查点,该区块链多人通道每到该检查点,便调用弱共识模块;
[0128]
弱共识模块,用于使所有普通节点对自身账本状态进行验证,所有候选领导节点对账本进行验证,若验证过程中发现账本错误,则发现账本错误的节点发起链上申诉,并增加该共识周期内的检查周期数量,否则普通节点和候选领导节点分别本地更新最新账本概要和明细;
[0129]
强共识模块,用于使该区块链多人通道暂停交易处理,该领导节点协调组织节点进行强一致共识,若共识中发现错误,则发现账本错误的节点发起链上申诉,并缩减该共识周期,否则该区块链多人通道内节点根据选举规则,选举出新的领导节点;
[0130]
共识调整模块,用于使领导节点根据账本数据得到前一调整点到当前调整点的指标参数,输入通道内共识开销模型,得到下一持续调整周期内共识周期内检查点数量和该共识周期长度。
[0131]
所述的动态可控的区块链多人通道高效混合型共识系统,其中该区块链多人通道内普通节点、领导节点和候选领导节点的账本均采用merkle树结构,merkle树结构中叶节点字段包括账户地址、通道内余额、收入交易树根和支出交易树根;整个账本的字段包括多人通道唯一标识符、账本树所表示状态在多人通道的周期数、经merkle树构造方法生成的账本树根、领导节点的签名、叶节点组成的数组;其中该收入交易树根和该支出交易树根中交易凭证字段包括多人通道唯一标识符、交易发生的共识周期、交易的全局唯一标识符、交易双方地址、交易金额、发送方签名和领导节点的签名。
[0132]
所述的动态可控的区块链多人通道高效混合型共识系统,其中
[0133]
该弱共识模块用于:
[0134]
该领导节点向在通道中所有节点广播最新账本概要,并另外向候选领导者节点集合组播所有交易凭证,所有节点在本地异步地验证账本状态,其中普通节点验证的具体内容包括领导者签名正确性、余额之和与上一状态共识结果一致性、本地交易树根与领导者发送的账本树结点包含的交易树根一致性;候选领导者节点验证增量交易的签名正确性、收支数额与账户状态是否对应,验证通过后在候选领导者集合内部进行账本状态的一致性检验;验证过程全部通过后,所有节点在本地各自更新账本状态,至此检查点过程结束;
[0135]
该强共识模块用于:
[0136]
该领导节点向在通道中所有节点广播共识消息,所有接收到共识消息的节点对其进行验证,验证的内容包括:领导者签名正确性、余额之和与上一状态共识结果一致性、本
地交易树根与领导者发送的账本树结点包含的交易树根一致性、验证加入退出节点账本数据是否与账户资金对应且已经在链上锁定;当该共识点为该调整点时,调用该共识调整模块,候选领导节点验证领导节点发送的检查点数量和共识周期长度是否正确;当该共识点处于该持续调整周期中时,候选领导节点验证领导者节点发送的下一周期检查点数量和共识周期长度是否符合调整策略;所有验证通过后,节点对共识消息的散列值进行签名,并发送给领导节点,领导节点接收到所有节点的签名后,将所有签名广播,节点收到其他节点的签名,检查其正确性并运行领导者选举算法;
[0137]
其中验证过程不通过时,诚实节点需将持有的正确账本状态作为证据上传链上,借助智能合约发起链上争议处理过程。
[0138]
所述的动态可控的区块链多人通道高效混合型共识系统,其中该共识调整模块,用于根据账本数据得到ni、ti、c
total
(ti,ni)和c
malice,i
,并通过该共识开销模型得到上一快速调整点到当前调整点的多组vace指标值及其自变量:
[0139][0140]ctotal
(ti,ni)=γtini[0141][0142]cmalice,i
=λti[0143]
其中ni为第i个共识周期中,多人通道包含的节点数;e
censensus
(ni)为共识周期i的共识点处,强一致共识的开销;e
rollback
(ni)为共识周期i中单笔失败交易回滚所花费的开销,e
rollback
(ni)为共识周期i中单笔失败交易回滚所花费的开销;ti为共识周期i的共识周期长度;c
total
(ti,ni)为共识周期i内所有被处理的交易数量,c
malice,i
为共识周期i内恶意事件发生的次数;λ为共识周期i内恶意事件发生的强度;γ为共识周期内交易总数量关于网络规模ni的函数参数;每一个影响因素对应的指数分别为ai(i=0,1,

,7),a2,a3,a4,a5,a6《0,a0,a1,a7》0;运行状态变量》0;运行状态变量分别为第i-1轮共识完成后通道内节点余额的方差、第i-1个共识周期成功完成的交易数量、第i-1个共识周期成功完成的交易额总量、第i个共识周期的候选领导者节点数量、第i个共识周期的普通节点数量、第i个共识周期包含的检查点数量;
[0144]
该领导节点通过拟合计算参数γ,ai(i=0,1,

,7),得到该系统运行状态变量的表达式,求得该表达式在新一个共识周期关于检查点个数和共识周期长度的极小值,取整该极小值作为下一持续调整周期内共识周期内检查点数量和该共识周期长度。
[0145]
本发明还提出了一种存储介质,用于存储执行所述任意一种动态可控的区块链多人通道高效混合型共识方法的程序。
[0146]
本发明还提出了一种客户端,用于所述任意一种动态可控的区块链多人通道高效混合型共识系统。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1