[发明专利]一种基于许可链的共识分叉处理方法在审
申请号: | 201710685336.X | 申请日: | 2017-08-11 |
公开(公告)号: | CN107507006A | 公开(公告)日: | 2017-12-22 |
发明(设计)人: | 谢晗剑 | 申请(专利权)人: | 杭州秘猿科技有限公司 |
主分类号: | G06Q20/40 | 分类号: | G06Q20/40;G06Q20/06;G06Q20/22 |
代理公司: | 杭州求是专利事务所有限公司33200 | 代理人: | 黄欢娣,邱启旺 |
地址: | 310013 浙江省杭州市西*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 许可 共识 分叉 处理 方法 | ||
技术领域
本发明涉及许可链模型下的确定性共识算法领域,致力于解决由于共识算法设计或实现上的漏洞,导致特殊情况下许可链出现分叉、共识卡住的问题。
背景技术
区块链是一种新的分布式技术,由一个个顺序排列而成的交易组成块,再由一个个顺序排列而成的块组成链,每个块包含一个自增的高度作为编号,还有一个时间戳用于记载打包时间。
许可链一般是指有节点和账户准入的区块链,运行现实生活中的真实商业场景,甚至于银行等大型金融场景。这类业务一般对于确定性要求较高,不能容忍区块链产生分叉,交易被删除或者交易重新排序等问题。
所以许可链一般选用确定性的共识算法,需要对每个块进行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,按照共识算法的逻辑,分别递增轮次进行共识。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州秘猿科技有限公司,未经杭州秘猿科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710685336.X/2.html,转载请声明来源钻瓜专利网。