一种基于许可链的共识分叉处理方法技术

技术编号:16875081 阅读:33 留言:0更新日期:2017-12-23 12:41
本发明专利技术公开了一种基于许可链的共识分叉处理方法,首先在系统内规定“选择分叉”特殊交易,并设定发起权限规则,在系统出现分叉的情况下,由链下人员决定需要保留的区块,按照发起权限规则发送“选择分叉”交易,节点收到交易后,比对自己的分叉,如果正确则重置共识算法,从第0轮开始重新共识,如果错误则删除分叉块,同步正确分叉的区块,之后从第0轮开始重新共识。本发明专利技术解决了由于共识算法设计或实现上的漏洞,导致许可链出现分叉、共识卡住的问题。

A consensus forking method based on license chain

The invention discloses a processing method of bifurcation license chain consensus based on the provisions of \first choice bifurcate\ special transactions within the system, and set the permissions in the system initiated, bifurcation conditions, by the chain decided the need to retain the block, initiated in accordance with permissions, send \choose bifurcate\ transactions, the nodes that receive after the transaction, compare your fork, if the correct replacement consensus algorithm, from the beginning of the zeroth round to consensus, if the error deleting fork block, right after the bifurcation of the synchronization block, from the beginning of the zeroth round of the new consensus. The invention solves the problem that the license chain is bifurcated and the consensus is jammed because of the loopholes in the design or implementation of the consensus algorithm.

【技术实现步骤摘要】
一种基于许可链的共识分叉处理方法
本专利技术涉及许可链模型下的确定性共识算法领域,致力于解决由于共识算法设计或实现上的漏洞,导致特殊情况下许可链出现分叉、共识卡住的问题。
技术介绍
区块链是一种新的分布式技术,由一个个顺序排列而成的交易组成块,再由一个个顺序排列而成的块组成链,每个块包含一个自增的高度作为编号,还有一个时间戳用于记载打包时间。许可链一般是指有节点和账户准入的区块链,运行现实生活中的真实商业场景,甚至于银行等大型金融场景。这类业务一般对于确定性要求较高,不能容忍区块链产生分叉,交易被删除或者交易重新排序等问题。所以许可链一般选用确定性的共识算法,需要对每个块进行100%的确定性投票,不会产生分叉和不一致的情况。一般选用基于PBFT的算法,比如Tendermint等。但是确定性共识算法博大精深,分布式系统纷繁复杂,即使一个在论文级别设计的完好的共识算法,考虑到了所有的可能情况,依然有可能在代码实现上产生漏洞。如果由于共识算法设计本身的问题,或者实现方面的问题,导致系统出现分叉,比如总共4个节点,出现2v2分叉或者3v1分叉等,导致两组节点在同一个高度出了不同的区块。一般情况下,确定性共识算法都无法在产生分叉的情况下自我修正,并继续共识,这样就会导致共识永远不会再达成,系统卡住。目前的处理方法一般是首先选择一组包含正确分叉的节点,然后由运维人员,手工删除其他节点错误的区块或者删除全链,然后同步正确的区块。最终由于两组节点的共识轮次差异,还需将全部节点停机,再重启,才能继续共识。
技术实现思路
本专利技术的目的在于针对现有技术的不足,提供一种基于许可链的共识分叉处理方法。本专利技术的目的是通过以下技术方案实现的:一种基于许可链的共识分叉处理方法,该方法包括:(1)制定发起有效的“选择分叉”交易的权限规则;(2)在出现分叉的情况下,用户在链下决定需要保留的区块,用区块高度h和块头哈希b两个参数进行标识,按照步骤1所述的权限规则发起“选择分叉”交易tx;(3)节点收到交易tx后,首先验证管理权限规则,如果不通过,则丢弃交易,如果通过则比对本地节点高度为h的区块:如果该区块的块头哈希为b,则保留该高度为h的区块;否则,删除该高度为h的区块,并同步高度为h,块头哈希为b的区块。(4)各节点重置共识算法,按照从轮次0开始对合法的高度为h+1区块进行共识;(5)出块节点在打包h+1的区块时,将“选择分叉”交易tx放在交易列表的首位,其他同步节点在收到h+1的区块时,都需要验证交易tx,如果“选择分叉”交易tx在交易列表的首位,则为合法的分叉后第一个块,否则为非法块。进一步的,所述“选择分叉”交易的权限规则可以是一个单签名的的管理员地址,也可以是一个多重签名地址,也可以是复杂设计的智能合约。本专利技术的有益效果在于:本专利技术舍弃了目前许可链里确定性共识算法出现漏洞情况下的手工维护方法,通过管理员权限的特殊“选择分叉”交易,进行分叉块的选择和共识轮次的重置,最终将“选择分叉”交易打包入下一个区块,作为存证。附图说明附图1为本专利技术总体架构图。具体实施方式如图1所示,本专利技术涉及一种基于许可链的共识分叉处理方法,首先在系统内规定“选择分叉”特殊交易,并设定发起权限规则,在系统出现分叉的情况下,由链下人员决定需要保留的区块,按照发起权限规则发送“选择分叉”交易,节点收到交易后,比对自己的分叉,如果正确则重置共识算法,从第0轮开始重新共识,如果错误则删除分叉块,同步正确分叉的区块,之后从第0轮开始重新共识。具体如下:一、制定发起“选择分叉”交易的管理权限规则协议:1:在制定许可链的协议时,需要制定发起有效的“选择分叉”交易的权限规则。本专利技术不限制权限规则的具体设计,可以是一个单签名的的管理员地址,也可以是一个多重签名地址,也可以是复杂设计的智能合约。2:将该协议写入许可链客户端代码,链从创世块启动,并按照选定的共识算法持续出块。二、遇到共识卡住的情况,根据管理权限规则,发起“选择分叉”交易:1:遇到共识卡住时,节点分组G1在块高度h,出了一个块头哈希为b1的区块,节点分组G2在块高度h,出了一个块头哈希为b2的区块,其中b1和b2不一致,出现分叉。2:节点分组G1和G2,按照共识算法的逻辑,分别递增轮次进行共识。3:相关人员在链下决定要保留的区块,其块头哈希为b1,要废弃的区块,其块头哈希为b2。4:根据管理权限规则,发起“选择分叉”交易tx,包含数据为:块高度h、要保留的区块的块头哈希b、要废弃的区块的块头哈希b’,并广播。三、分组G的节点收到“选择分叉”交易后,重置高度为h+1的区块的共识:1:节点在收到“选择分叉”交易后,首先验证管理权限规则,如果不通过,则丢弃交易,如果通过则继续下面的操作。2:节点比对自己节点高度为h的区块,如果块头哈希为b,则得知自己在保留的分叉上。3:节点重置共识算法,从轮次0开始重新开始高度为h+1区块的共识。四、分组G’的节点收到“选择分叉”交易后,删除废弃的区块,同步保留的区块,开始高度为h+1区块的共识:1:节点在收到“选择分叉”交易后,首先验证管理权限规则,如果不通过,则丢弃交易,如果通过则继续下面的操作。2:节点比对自己节点高度为h的区块,如果块头哈希为b’,则得知自己在废弃的分叉上。3:节点删除高度为h的区块。4:节点同步高度为h,块头哈希为b的区块。5:节点开始高度为h+1的区块的共识。五、全部节点生成并验证高度为h+1的区块:1:出块节点在打包h+1的区块时,必须将“选择分叉”交易tx放在交易列表的首位。2:不论是分组G或者分组G’的其他同步节点,在收到h+1的区块时,都需要验证交易tx,如果在交易列表的首位,则为合法的分叉后第一个块,否则为非法块。上述处理过程中,“选择分叉”交易的广播采用底层p2p网络,并直接在高度h生效并执行,但在高度h+1打包并存证,所以其执行过程并未经过共识。本文档来自技高网...
一种基于许可链的共识分叉处理方法

【技术保护点】
一种基于许可链的共识分叉处理方法,其特征在于,该方法包括:(1)制定发起有效的“选择分叉”交易的权限规则;(2)在出现分叉的情况下,用户在链下决定需要保留的区块,用区块高度h和块头哈希b两个参数进行标识,按照步骤1所述的权限规则发起“选择分叉”交易tx;(3)节点收到交易tx后,首先验证管理权限规则,如果不通过,则丢弃交易,如果通过则比对本地节点高度为h的区块:如果该区块的块头哈希为b,则保留该高度为h的区块;否则,删除该高度为h的区块,并同步高度为h,块头哈希为b的区块。(4)各节点重置共识算法,按照从轮次0开始对合法的高度为h+1区块进行共识;(5)出块节点在打包h+1的区块时,将“选择分叉”交易tx放在交易列表的首位,其他同步节点在收到h+1的区块时,都需要验证交易tx,如果“选择分叉”交易tx在交易列表的首位,则为合法的分叉后第一个块,否则为非法块。

【技术特征摘要】
1.一种基于许可链的共识分叉处理方法,其特征在于,该方法包括:(1)制定发起有效的“选择分叉”交易的权限规则;(2)在出现分叉的情况下,用户在链下决定需要保留的区块,用区块高度h和块头哈希b两个参数进行标识,按照步骤1所述的权限规则发起“选择分叉”交易tx;(3)节点收到交易tx后,首先验证管理权限规则,如果不通过,则丢弃交易,如果通过则比对本地节点高度为h的区块:如果该区块的块头哈希为b,则保留该高度为h的区块;否则,删除该高度为h的区块,并同步高度为h,块...

【专利技术属性】
技术研发人员:谢晗剑
申请(专利权)人:杭州秘猿科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1