首页 / 专利库 / 资料储存系统 / 工作量证明 / 一种分叉问题的处理方法及装置

一种分叉问题的处理方法及装置

阅读:19发布:2020-05-22

专利汇可以提供一种分叉问题的处理方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种分叉问题的处理方法及装置,该方法包括 区 块 链 和区块链上的若干个公正 节点 ,区块链上固定设置有N个工作节点;当区块链存在分叉时,从n个公正节点中选择出m个节点(n>=m,其中m为奇数),让这m个节点自由选择跟随任意一个方向的链;当这m个节点都自由选择完毕时,分别统计两个分叉的方向上公正节点的个数,并选择两个方向上较多公正节点的链的方向为后续的全网链发展方向。本发明通过设置在固定检查点的区块链进行检测,能够及时识别区块链中的升级的节点,使得整个区块链的各个节点之间的信息始终保持一致,同时,通过验证的手段还能使得分叉的链条中选择最优的链条作为后续链的发展方向,提高区块链网的高效运行。,下面是一种分叉问题的处理方法及装置专利的具体信息内容。

1.一种分叉问题的处理方法,其特征在于,所述方法包括选择全网链发展方向和计算信用总分;
所述选择全网链发展方向的步骤包括:在链上固定设置有n个公正节点,当所述区块链存在分叉时,从n个公正节点中选择出m个节点(n>=m,其中m为奇数),让这m个节点自由选择跟随任意一个方向的链;
当这m个节点都自由选择完毕时,分别统计两个分叉的方向上公正节点的个数,并选择两个方向上较多公正节点的链的方向为后续的全网链发展方向,所述跟随方向包括全网链的发展方向和单个节点的跟随方向;
所述全网链的发展方向的决定方法包括:从n个公正节点中选择出m个节点,m个节点中较多的节点选择的方向作为全网链发展方向;
单个节点的跟随方向选择方法:分别计算两个链的信用总分,单个节点的跟随方向选择信用总分较大的那个链方向。
2.根据权利要求1所述的一种分叉问题的处理方法,其特征在于,所述计算信用总分的步骤包括:统计各个分叉链的打包每个块的节点的财、算力、效率、在链上从事的交易和挖矿的笔数,根据所述分叉链的所述节点的财力、算力、效率、在链上从事的交易和挖矿的笔数计算出一个数值,选择数值较大的方向作为后续链的方向,抛弃另一个子链。
3.根据权利要求2所述的一种分叉问题的处理方法,其特征在于,所述计算信用总分的步骤还包括计算方法,所述计算方法包括:统计分叉链的打包每个块的节点的财力、算力、效率、在链上从事的交易或者挖矿的笔数的计算公式,所述的计算公式包括:
Score=a*amount+b*computing power+c*Correct deal count
其中,amount为财力;computing power为算力;Correct deal count为历史正确处理交易数;Score为计算出的一个数值;a、b、c分别表示财力、算力以及历史正确处理交易数占据节点总分值的比例。
4.根据权利要求1所述的一种分叉问题的处理方法,其特征在于,所述处理方法还包括:当区块链出现分叉时,让后续的多个链继续往后自由选择跟随链的方向,并从n个公正节点中选择出m个节点(n>=m),各让这m/2个节点统计2个子链中之前每个区块中记录的打包该区块的节点的信用分值的总和,选分值总和大的子链方向为后续跟随的方向。
5.根据权利要求1所述的一种分叉问题的处理方法,其特征在于,所述处理方法还包括:
从网络上获取区块,并验证该区块,以此更新节点的账本;
当一个节点通过p2p网络获得一个新区块时,都执行验证程序,以识别所述新区块是不是有效的区块。
6.根据权利要求5所述的一种分叉问题的处理方法,其特征在于,所述执行验证程序包括:
验证工作量证明,即验证区块头的哈希值小于当前目标值;
验证Merkle树的根哈希值是否由区块体中的交易得到的,即重构区块Merkle树得到的树根,并验证是否和区块头中的hashMerkleRoot值相等;
验证区块的大小,即看区块大小是否在设定范围之内;
验证是否只有一个基准币交易,即一个区块;
验证所有的交易,即遍历区块内所有的交易,检查是否为合法的交易。
7.根据权利要求6所述的一种分叉问题的处理方法,其特征在于,当节点软件搜索检测点数据发现了某个区块高度是一个检测点监测点时,那该节点在验证同一个区块时,就会在验证规则中加入的区块的哈希值哈希值必须等于检测点里指定的哈希值;
如果不相等,加入的区块就是一个废块,会被抛弃掉。
8.根据权利要求7所述的一种分叉问题的处理方法,其特征在于,所述监测点检测点能用来部署协议分叉,所有节点都统一运行带有监测点检测点的完整节点软件,检测所述监测点检测点的区块是否被挖出。
9.一种分叉问题的处理装置,其特征在于,包括:
选择模块,用于选择区块链上的各个节点;
验证模块,用于执行验证程序;
执行模块,用于运行节点软件。
10.一种电子设备,其特征在于,包括处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行权利要求1-8任一项所述的分叉问题的处理方法。

说明书全文

一种分叉问题的处理方法及装置

技术领域

[0001] 本发明涉及链技术领域,尤其涉及一种分叉问题的处理方法及装置。

背景技术

[0002] 区块链中,导致区块链分叉的情形有:多个节点同时成功挖矿,其他节点在记账时,会首先记录自己看到的块,因而各节点记录的区块存在不一致性;由于区块链的整体性升级,有些节点在没来的及升级,出现了遵从不同机制产生的分叉;由于区块链分叉问题的存在,导致区块链中各节点记录的信息容易不一致。
[0003] 如CN109379396A现有技术公开了一种区块链系统中防止出现硬分叉现象的方法在现有的区块链系统中,当区块链系统要进行功能扩展或者其他需求需要对组成的节点进行升级时,经常会出现部分节点不接受升级的情况发生,进而导致该部分不接受升级的节点仍然在旧有的区块链系统上进行区块的生产,而升级后的节点在新的区块链系统上进行区块的生产,使得区块链系统出现硬分叉,进而导致两个版本系统的同时存在致使用户被分流。导致区块链中各节点记录的信息容易不一致,引起多用户之间被分流,不利于区块链网的高效运行。
[0004] 为了解决本领域普遍存在区块链中各节点记录的信息容易不一致、工作效率低、验证分叉手段缺乏、无法选择最优的后续链发展方向等等问题,作出了本发明。

发明内容

[0005] 本发明的目的在于,针对目前区块链存在的分叉问题所存在的不足,提出了一种分叉问题的处理方法。
[0006] 为了克服现有技术的不足,本发明采用如下技术方案:
[0007] 一种分叉问题的处理方法,所述方法包括选择全网链发展方向和计算信用总分;
[0008] 所述选择全网量法阵方向的步骤包括:在区块链上固定设置有n个公正节点,当所述区块链存在分叉时,从n个公正节点中选择出m个节点 (n>=m,其中m为奇数),让这m个节点自由选择跟随任意一个方向的链;
[0009] 当这m个节点都自由选择完毕时,分别统计两个分叉的方向上公正节点的个数,并选择两个方向上较多公正节点的链的方向为后续的全网链发展方向,所述跟随方向包括全网链的发展方向和单个节点的跟随方向;
[0010] 所述全网链的发展方向的决定方法包括:从n个公正节点中选择出m 个节点,m个节点中较多的节点选择的方向作为全网链发展方向;
[0011] 单个节点的跟随方向选择方法:分别计算两个链的信用总分,单个节点的跟随方向选择信用总分较大的那个链方向。
[0012] 可选的,所述计算信用总分的步骤包括:统计各个分叉链的打包每个块的节点的财、算力、效率、在链上从事的交易和挖矿的笔数,根据所述分叉链的所述节点的财力、算力、效率、在链上从事的交易和挖矿的笔数计算出一个数值,选择数值较大的方向作为后续链的方向,抛弃另一个子链。
[0013] 可选的,所述计算信用总分的步骤还包括计算方法,所述计算方法包括:统计分叉链的打包每个块的节点的财力、算力、效率、在链上从事的交易或者挖矿的笔数的计算公式,所述的计算公式包括:
[0014] Score=a*amount+b*computing power+c*Correct deal count
[0015] 其中,amount为财力;computing power为算力;Correct deal count为历史正确处理交易数;Score为计算出的一个数值;a、b、c分别表示财力、算力以及历史正确处理交易数占据节点总分值的比例。
[0016] 可选的,所述处理方法还包括:当区块链出现分叉时,让后续的多个链继续往后自由选择跟随链的方向,并从n个公正节点中选择出m个节点 (n>=m),各让这m/2个节点统计2个子链中之前每个区块中记录的打包该区块的节点的信用分值的总和,选分值总和大的子链方向为后续跟随的方向。
[0017] 可选的,所述处理方法还包括:
[0018] 从网络上获取区块,并验证该区块,以此更新节点的账本;
[0019] 当一个节点通过p2p网络获得一个新区块时,都会执行验证程序,以识别这个区块是不是有效的区块。
[0020] 可选的,
[0021] 所述执行验证程序包括:
[0022] 验证工作量证明,即验证区块头的哈希值小于当前目标值;
[0023] 验证Merkle树的根哈希值是否由区块体中的交易得到的,即重构区块Merkle树得到的树根,并验证是否和区块头中的hashMerkleRoot值相等;
[0024] 验证区块的大小,即看区块大小是否在设定范围之内;
[0025] 验证是否只有一个基准币交易,即一个区块;
[0026] 验证所有的交易,即遍历区块内所有的交易,检查是否为合法的交易。
[0027] 可选的,当节点软件搜索检测点数据发现了某个区块高度是一个监测点时,那该节点在验证同一个区块时,就会在验证规则中加入的区块的哈希值必须等于监测点里指定的哈希值;
[0028] 如果不相等,加入的区块就是一个废块,会被抛弃掉。检测点检测点哈希值检测点[0029] 如果不相等,那就是一个废块,会被抛弃掉。
[0030] 可选的,所述监测点能用来部署协议分叉,所有节点都统一运行带有监测点的完整节点软件,检测所述监测点的区块是否被挖出。检测点检测点检测点
[0031] 另外,本发明还提供一种分叉问题处理装置,包括:
[0032] 选择模块,用于选择区块链上的各个节点;
[0033] 验证模块,用于执行验证程序;
[0034] 执行模块,用于运行节点软件。
[0035] 还提供一种电子设备,包括处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行所述的分叉问题的处理方法。
[0036] 本发明所取得的有益效果是:
[0037] 1.通过设置在固定检查点的区块链进行检测,能够及时识别区块链中的升级的节点,使得整个区块链的各个节点之间的信息始终保持一致;
[0038] 2.通过采用多种验证方式,使得验证整个区块链的节点是不是有效的,使得整个区块链的工作效率得以提高;
[0039] 3.通过验证的手段还能使得分叉的链条中选择最优的链条作为后续链的发展方向从而提高整个区块链网的整体效率的高效。附图说明
[0040] 从以下结合附图的描述可以进一步理解本发明。图中的部件不一定按比例绘制,而是将重点放在示出实施例的原理上。在不同的视图中,相同的附图标记指定对应的部分。
[0041] 图1为本发明的一种分叉问题的处理方法的流程图
[0042] 图2为本发明的一种分叉问题的处理方法的后续跟随方向的流程图。
[0043] 图3为本发明的一种分叉问题的处理方法的验证方式的流程图。
[0044] 图4为本发明的一种分叉问题的处理方法的验证方法流程图。

具体实施方式

[0045] 为了使得本发明的目的.技术方案及优点更加清楚明白,以下结合其实施例,对本发明进行进一步详细说明;应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。对于本领域技术人员而言,在查阅以下详细描述之后,本实施例的其它系统.方法和/或特征将变得显而易见。旨在所有此类附加的系统.方法.特征和优点都包括在本说明书内. 包括在本发明的范围内,并且受所附权利要求书的保护。在以下详细描述描述了所公开的实施例的另外的特征,并且这些特征根据以下将详细描述将是显而易见的。
[0046] 本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”.“下”“.左”“. 右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或组件必须具有特定的方位. 以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
[0047] 实施例一:一种分叉问题的处理方法,包括区块链和区块链上的若干个公正节点,所述区块链上固定设置有N个工作节点;
[0048] 当所述区块链存在分叉时,从n个公正节点中选择出m个节点(n>=m,其中m为奇数),让这m个节点自由选择跟随任意一个方向的链;
[0049] 当这m个节点都自由选择完毕时,分别统计两个分叉的方向上公正节点的个数,并选择两个方向上较多公正节点的链的方向为后续的全网链发展方向。在经公正节点的选择,选择跟随链的方向,并统计分叉链的打包每个块的节点的财力、算力、效率、在链上从事的交易或者挖矿的笔数,根据这些计算出一个数值,选择数值较大的方向作为后续链的方向,抛弃另一个子链。所述跟随方向包括全网链的发展方向和单个节点的跟随方向,所述全网链的发展方向的决定方法包括:从n个公正节点中选择出m个节点,m个节点中较多的节点选择的方向作为全网链发展方向;单个节点的跟随方向选择方法:分别计算两个链的信用总分,单个节点的跟随方向选择信用总分较大的那个链方向。如图1中的步骤101-105处理方法还包括:当区块链出现分叉时,让后续的多个链继续往后自由选择跟随链的方向,并从n个公正节点中选择出m个节点(n>=m),各让这m/2个节点统计2 个子链中之前每个区块中记录的打包该区块的节点的信用分值的总和,选分值总和大的子链方向为后续跟随的方向。如图2中步骤201-203所示,在所述公正节点选择跟随链方向后,并统计分叉链的打包每个块的节点的财力、算力、效率、在链上从事的交易或者挖矿的笔数的计算公式,根据这些计算出一个数值(记为Score),选择数值较大的方向作为后续链的方向,抛弃另一个子链,所述的计算公式包括:
[0050] Score=a*amount+b*computing power+c*Correct deal count。其中,amount为财力;computing power为算力;Correct deal count为历史正确处理交易数;Score为计算出的一个数值;a、b、c分别表示财力、算力以及历史正确处理交易数占据节点总分值的比例。
[0051] 如图3中的步骤304-303所示。所述处理方法还包括:从网络上获取区块,并验证该区块,以此更新节点的账本;当一个节点通过p2p网络获得一个新区块时,都会执行验证程序,以识别这个区块是不是有效的区块。
[0052] 如图4中的步骤401-404所示,所述验证的标准包括:验证工作量证明,即验证区块头的哈希值小于当前目标值;验证Merkle树的根哈希值是否是由区块体中的交易得到的,即重构区块Merkle树得到的树根,并验证是否和区块头中的hashMerkleRoot值相等;验证区块大,即看区块大小是否在设定范围之内;验证是否只有一个Coinbase交易,即一个区块;验证所有的交易,即遍历区块内所有的交易,检查是否是合法的交易。当节点软件搜索检测点检测点数据发现了某个区块高度是一个检测点时,那这个节点在验证这一个区块时,就会在验证规则中加入这个区块的哈希值必须等于检测点里指定的哈希值;如果不相等,那就是一个废块,会被抛弃掉。所述检测点可以用来部署协议分叉,所有节点都统一运行带有检测点的完整节点软件,检测所述检测点的区块是否被挖出。
[0053] 实施例二:一种分叉问题的处理方法,包括区块链和区块链上的若干个公正节点,所述区块链上固定设置有N个工作节点;当所述区块链存在分叉时,从n个公正节点中选择出m个节点(n>=m,其中m为奇数),让这m个节点自由选择跟随任意一个方向的链;当这m个节点都自由选择完毕时,分别统计两个分叉的方向上公正节点的个数,并选择两个方向上较多公正节点的链的方向为后续的全网链发展方向。具体的,在经公正节点的选择,选择跟随链的方向,并统计分叉链的打包每个块的节点的财力、算力、效率、在链上从事的交易或者挖矿的笔数,根据这些计算出一个数值,选择数值较大的方向作为后续链的方向,抛弃另一个子链。具体的,选择出最优的区块的链条作为全网链的发展方向,在选择的过程中,要经过所述验证方式进行验证的操作,使得分叉的区块链条能进行识别并挑选出最优的链条。
[0054] 所述跟随方向包括全网链的发展方向和单个节点的跟随方向,所述全网链的发展方向的决定方法包括:从n个公正节点中选择出m个节点,m 个节点中较多的节点选择的方向作为全网链发展方向;单个节点的跟随方向选择方法:分别计算两个链的信用总分,单个节点的跟随方向选择信用总分较大的那个链方向。具体的,在选择全网链的发展方向和单个节点的跟随方向的过程中,N个所述公正节点进行选择,特别的,N个所述公正节点均来自官方的节点。并进行后续的处理工作,在处理的工程中,采用的本实施例提供的处理方法。处理方法还包括:当区块链出现分叉时,让后续的多个链继续往后自由选择跟随链的方向,并从n个公正节点中选择出m个节点(n>=m),各让这m/2个节点统计2个子链中之前每个区块中记录的打包该区块的节点的信用分值的总和,选分值总和大的子链方向为后续跟随的方向。具体的,选分值总和大的子链方向为后续跟随的方向。在处理的过程中需要注意节点的选取,具体的:m/2个节点的结果也是通过投票原则的2/3取得的。在所述公正节点选择跟随链方向后,并统计分叉链的打包每个块的节点的财力、算力、效率、在链上从事的交易或者挖矿的笔数的计算公式,根据这些计算出一个数值(记为Score),选择数值较大的方向作为后续链的方向,抛弃另一个子链,所述的计算公式包括: Score=a*amount+b*computing power+c*Correct deal count。具体的,其中,a、 b、c分别表示财力、算力以及历史正确处理交易数占据节点总分值的比例;a、b、c分别表示财力、算力以及历史正确处理交易数占据节点总分值的比例。举一个例子对上述的计算公式进行解释,以加深对计算公式的理解。例如,子链A方向的总和为ScoreA: 其中, Scorei表示打包子链A方向第i
个块的分值。
[0055] 子链B方向的总和为ScoreB: 其中,Scorej表示打包子链B方向第j个块的分值。
[0056] If ScoreA>ScoreB:
[0057] 跟随子链A方向
[0058] If ScoreA
[0059] 跟随子链B方向
[0060] 所述处理方法还包括:从网络上获取区块,并验证该区块,以此更新节点的账本;当一个节点通过p2p网络获得一个新区块时,都会执行验证程序,以识别这个区块是不是有效的区块。具体的,任何一个下载并安装运行的完整节点都会从网络中获取区块,并验证区块,以此更新节点的账本。当一个节点通过p2p网络获得一个新区块时,都会执行验证程序,以识别这个区块是不是有效的区块。所述验证的标准包括:验证工作量证明,即验证区块头的哈希值小于当前目标值;验证Merkle树的根哈希值是否是由区块体中的交易得到的,即重构区块Merkle树得到的树根,并验证是否和区块头中的hashMerkleRoot值相等;验证区块大,即看区块大小是否在设定范围之内;验证是否只有一个基准交易,即一个区块;验证所有的交易,即遍历区块内所有的交易,检查是否是合法的交易。当节点软件搜索检测点数据发现了某个区块高度是一个检测点时,那这个节点在验证这一个区块时,就会在验证规则中加入这个区块的哈希值必须等于检测点里指定的哈希值;如果不相等,那就是一个废块,会被抛弃掉。具体的,检测点就是指定一个区块高度的区块哈希必须等于某个哈希值。
所述检测点可以用来部署协议分叉,所有节点都统一运行带有检测点的完整节点软件,检测所述检测点的区块是否被挖出。在这一过程中,需要增加检测点检查点验证规则,比特币节点在绝大多数情况下都是按上面的标准的验证区块程序进行验证区块的,但可以加入额外的规则,就是加入一个检测点。检测点是一个数据,这个数据就是一个区块高度值和对应的哈希值构成,所有检测点会被存储在一个叫检测点数据的数据块里。下面是网络上的历史检测点值。
[0061] 实施例三:在实施例二的基础上,本实施例还提供一种验证方法,具体的,本实施例中,该区块链分叉链条的节点采用智能合约可基于预设的同态加密验证算法来进行合数验证。其中,同态加密是基于数学难题的计算复杂性理论的密码学技术。对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。本实施例中,基于预设的同态加密验证算法可验证两个分叉链条之间的每个节点的财力,从而验证最优链条是否正常。例如,在一种实施方式中,该区块链节点对应的智能合约可以采用加法同态加密验证算法进行合数验证,假设R和S是域,称加密函数E:R→S为加法同态,如果存在有效算法⊕,使得E(x+y)=E(x)⊕E(y)或者x+y= D(E(x)⊕E(y))成立,该有效算法⊕即为加法同态加密验证算法。在这一过程中,最优所述链条还能运用区块链技术进行多方参与的交易事件例如转账交易、支付交易等事件时,在去中心化的区块链系统当中,由于没有绝对权威机构节点,因此对每笔交易都必须进行集体验证。本实施例中采用同态加密验证算法来进行合数验证,既能有效地验证运用区块链技术进行多方参与的交易是否正常,又能防止多方账户的余额泄露,有效地保证了交易信息的安全。
[0062] 综上所述,本发明的一种分叉问题的处理方法,通过设置在固定检查点的区块链进行检测,能够及时识别区块链中的升级的节点,使得整个区块链的各个节点之间的信息始终保持一致;通过采用多种验证方式,使得验证整个区块链的节点是不是有效的,使得整个区块链的工作效率得以提高;通过验证的手段还能使得分叉的链条中选择最优的链条作为后续链的发展方向从而提高整个区块链网的整体效率的高效。虽然上面已经参考各种实施例描述了本发明,但是应当理解,在不脱离本发明的范围的情况下,可以进行许多改变和修改。也就是说上面讨论的方法,系统和设备是示例。各种配置可以适当地省略,替换或添加各种过程或组件。例如,在替代配置中,可以以与所描述的顺序不同的顺序执行方法,和/或可以添加,省略和/或组合各种部件。而且,关于某些配置描述的特征可以以各种其他配置组合,如可以以类似的方式组合配置的不同方面和元素。此外,随着技术发展其中的元素可以更新,即许多元素是示例,并不限制本公开或权利要求的范围。
[0063] 在说明书中给出了具体细节以提供对包括实现的示例性配置的透彻理解。然而,可以在没有这些具体细节的情况下实践配置例如,已经示出了众所周知的电路,过程,算法,结构和技术而没有不必要的细节,以避免模糊配置。该描述仅提供示例配置,并且不限制权利要求的范围,适用性或配置。相反,前面对配置的描述将为本领域技术人员提供用于实现所描述的技术的使能描述。在不脱离本公开的精神或范围的情况下,可以对元件的功能和布置进行各种改变。
[0064] 综上,其旨在上述详细描述被认为是例示性的而非限制性的,并且应当理解,以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈