抗并行挖矿和公开可验证出块权的区块链共识机制及系统

文档序号:31706225发布日期:2022-10-01 11:23阅读:351来源:国知局
抗并行挖矿和公开可验证出块权的区块链共识机制及系统

1.本发明属于区块链技术领域,具体涉及一种抗并行挖矿和公开可验证出块权的区块链共识机制及系统。


背景技术:

2.区块链是采用密码学手段保障的、只可追加的、通过区块链式结构组织的分布式账本。共识机制就是所有记账节点之间怎么达成共识,去认定交易记录有效性的手段。由此可知,共识机制是区块链技术的核心之一。比特币的共识机制常见的是工作量证明(proof of work),简称pow。其巧妙地通过算力来进行投票,因为算力要做大量的工作,故其名为工作量证明。但这也导致其固有的缺陷,其对记账权(亦称出块权)的竞争是通过工作量体现的,而单位时间内工作量的大小取决于算力。
3.基于工作量证明机制的挖矿行为造成了大量的资源浪费,达成共识所需要的周期也较长。还引起了别有用心者进行恶意挖矿攻击。恶意挖矿攻击是一种恶意行为,指未经授权的情况下劫持用户设备挖掘加密货币。因此,需要避免恶意挖矿和由此引发的恶意挖矿攻击,同时解决资源浪费,特别是电力能源浪费。


技术实现要素:

4.有鉴于此,本发明提出了一种抗并行挖矿和公开可验证出块权的区块链共识机制及系统,用于解决区块链现有的共识机制不能抵抗并行计算的问题。
5.本发明第一方面,公开一种抗并行挖矿和公开可验证出块权的区块链共识机制,包括如下步骤:
6.s1、初始化区块链网络参数的初始值,并向全网发布;
7.s2、区块链网络内的节点执行串行计算任务,得到困难性问题的解及证明,并根据交易任务构造新区块;
8.s3、通过伪随机数进行双哈希计算及判断,竞争出块权;
9.s4、获得出块权的节点出块,生成下一轮出块的参数值;
10.s5、获得出块权的节点将困难性问题的解及证明、新区块、伪随机数和下一轮出块的参数值广播至区块链网络的其他节点;
11.s6、其他节点验证解的正确性并进行双哈希计算及判断,根据判断结果确认新区块或重新竞争出块权。
12.在以上技术方案的基础上,优选的,所述步骤s1具体包括:
13.预设置可验证延迟函数vdf的安全参数1k的位数k和出块的延迟时间t的初始值;
14.基于安全参数的位数k,通过vdf中的setup算法生成一个公共参数pp的初始值;
15.基于公共参数pp和出块的延迟时间t,通过vdf中的gen算法生成困难性问题实例c的初始值;
16.向全网发布(pp,c,t,1k)的初始值。
17.在以上技术方案的基础上,优选的,所述步骤s2具体包括:
18.区块链网络内的节点运行可验证延迟函数中的eval算法计算得到困难性问题实例c的解y和及其对解y的证明π;
19.eval计算完成后,节点根据交易信息构造新区块的区块体,计算并填写区块头的各项元数据。
20.在以上技术方案的基础上,优选的,所述步骤s3具体包括:
21.利用伪随机数生成器生成一个的伪随机数r,r是一个正整数;
22.利用哈希函数sha256,通过双哈希不等式进行双哈希计算及判断,所述双哈希不等式的表达式为:
23.sha256[sha256(版本号+前一区块哈希值+当前区块所包含交易的梅克尔树根+时间戳 +当前挖矿难度+困难性问题的解y及证明π +可延迟验证函数vdf的所有参数(pp,c,t,1k)+伪随机数r)] 《目标值*伪随机数r
[0024]
若上述双哈希不等式成立,则当前节点认为自己获得区块链网络的出块权;否则,产生一个新伪随机数,重新进行双哈希计算及判断,直到上述双哈希不等式成立。
[0025]
在以上技术方案的基础上,优选的,所述步骤s4具体包括:
[0026]
获得出块权的节点将新区块出块;
[0027]
设置区块链网络下一轮出块的安全参数的位数k及下一轮出块的延迟时间t;
[0028]
基于下一轮出块的安全参数的位数k,通过vdf中的setup算法生成下一轮出块的公共参数pp的值;
[0029]
基于下一轮出块的公共参数pp及下一轮出块的延迟时间t,通过vdf中的生成算法gen生成下一轮出块的困难性问题实例c的值。
[0030]
在以上技术方案的基础上,优选的,所述步骤s6具体包括:
[0031]
通过vdf中的verify算法验证困难性问题实例c的解y及证明π是否正确,并判断双哈希不等式是否成立,若困难性问题实例c的解y及证明π正确且双哈希不等式成立,则确认新区块;否则拒绝确认新的区块,返回步骤s3重新确认出块权。
[0032]
在以上技术方案的基础上,优选的,所述步骤s6中,确认新区块之后还包括:
[0033]
其他节点利用获得出块权的节点发来的下一轮出块的参数值更新自己的出块参数值,返回步骤s2,进行下一轮出块权竞争。
[0034]
本发明第二方面,公开一种抗并行挖矿和公开可验证出块权的区块链系统,所述系统基于本发明第一方面所述的抗并行挖矿和公开可验证出块权的区块链共识机制实现。
[0035]
本发明第三方面,公开一种电子设备,包括:至少一个处理器、至少一个存储器、通信接口和总线;
[0036]
其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;
[0037]
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令,以实现如本发明第一方面所述的抗并行挖矿和公开可验证出块权的区块链共识机制。
[0038]
本发明第四方面,公开一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令使计算机实现如本发明第一方面所述的抗并行挖矿和公开可验证出块权的区块链共识机制。
[0039]
本发明相对于现有技术具有以下有益效果:
[0040]
1)本发明的出块权竞争实现方式为:区块链网络中除上一轮获得出块权的节点外的所有节点完成在规定时间内的串行计算任务后,通过伪随机数的来获得出块权,节点获得出块权后进行出块,生成下一轮出块参数,并将新区块、本轮困难性问题实例的解及证明、伪随机数和下一轮出块参数更新至全网其他节点,其他节点验证解的正确性并判断双哈希不等式是否成立,根据验证和判断结果确认该区块为新区块或重新竞争出块权。这种实现方式避免了中心化趋势,使出块权的获得变得随机,每个节点都有理轮上较为同等的机会获得出块权;
[0041]
2)本发明的共识机制能够使区块链系统挖矿抗并行计算,且可以公开验证节点的出块权,可避免恶意挖矿和由此引发的恶意挖矿攻击,同时能够避免pow 共识机制依赖节点所拥有的算力来竞争出块权导致的资源浪费,节省电力资源,还能降低中心化趋势,提升性能,提高区块链网络的安全性。
附图说明
[0042]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0043]
图1为本发明提出的一种抗并行挖矿和公开可验证出块权的区块链共识机制的执行流程图;
[0044]
图2为本发明实施例提供的竞争出块权的流程图;
[0045]
图3为本发明实施例提供的节点出块的流程图;
[0046]
图4为本发明实施例提供的抗并行挖矿和公开可验证出块权的区块链共识机制的详细流程图。
具体实施方式
[0047]
下面将结合本发明实施方式,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
[0048]
区块链现有的共识机制不能抵抗并行计算,导致比特币挖矿机和恶意挖矿行为的产生,此外,还有别有用心者劫持他人计算机算力进行比特币挖矿,进行恶意挖矿攻击,同时还造成资源浪费,尤其是电力资源的极度浪费。为解决该问题,同时保证区块链系统安全,达到挖矿获得比特币的可验证性,本发明以可验证延迟函数为工具,提出了一种抗并行挖矿和公开可验证出块权的共识机制。
[0049]
可验证延迟函数简称vdf,它是一种安全原语,无论并行度如何,其计算时间都是固定的,且验证速度很快。其计算时间跟cpu的算力无关,即无论是单个cpu串行计算还是多个cpu并性计算,它的计算时间几乎不会发生改变。对于通常意义上的算法,并行计算有可能极大地缩减其计算时间,例如比特币挖矿算法。vdf函数具有正确性、可靠性、串行性、高效验证性和唯一性。根据vdf的串行性和高效验证性,可抗并行计算,且可以高效验证结果
的正确性。
[0050]
vdf函数由一个算法元组(setup、gen、eval、verify)构成,另外,setup 算法和gen算法可以整合为一个新的setup算法,即vdf也可表示为算法元组 (setup、eval、verify)。以

表示确定性评估,

r表示随机评估,该算法具体原理如下:
[0051]
pp

rsetup(1k),setup算法采用安全参数1k作为输入,并输出公共参数 pp。
[0052]
(pp,c,t)

rgen(pp,t),gen算法采用公共参数pp和时间参数t作为输入,并输出随机挑战c。
[0053]
(y,π)

eval(pp,c,t),eval算法采用公共参数pp和挑战c作为输入,并在t个连续步骤中得到解y和证明π。
[0054]
{accept,reject}

verify(pp,c,t,y,π),verify算法是根据挑战c、证明π和时间参数t验证解y的正确性。如果y是正确的,verify输出accept,否则,verify 输出reject。
[0055]
请参阅图1,本发明提出的一种抗并行挖矿和公开可验证出块权的区块链共识机制的执行流程图,本发明的抗并行挖矿和公开可验证出块权的区块链共识机制包括如下步骤:
[0056]
s1、初始化区块链网络的参数值,并向全网发布。
[0057]
具体的,本发明区块链网络的参数包括pp,c,t,1k等,pp为一个公共参数,c为困难性问题实例(即挑战c),t为出块的延迟时间,1k为vdf的安全参数,k是安全参数的位数。
[0058]
步骤s1具体包括如下分步骤:
[0059]
s11、预设置可验证延迟函数vdf的安全参数1k的位数k和出块的延迟时间t的初始值;
[0060]
s12、基于安全参数的位数k,通过vdf中的setup算法生成一个公共参数 pp的初始值;
[0061]
s13、基于公共参数pp和出块的延迟时间t,通过vdf中的gen算法生成困难性问题实例c的初始值;
[0062]
s14、向全网发布(pp,c,t,1k)的初始值,用于生成创世块。
[0063]
s2、区块链网络内的节点执行串行计算任务,得到困难性问题的解及证明,并根据交易任务构造新区块。
[0064]
具体的,本发明的区块链网络初始化后,所有节点运行在规定时间内的串行计算任务,得到困难性问题实例的解和及其对解的证明,并生成新区块。
[0065]
步骤s2具体包括如下分步骤:
[0066]
s21、区块链网络内的节点运行可验证延迟函数中的eval算法,计算得到困难性问题实例c的解y和及其对解y的证明π,即:(y,π)

eval(pp,c,t)。
[0067]
其中,证明π可以缺省、为空,这是因为vdf的子算法有多种候选方案,有的候选方案中此证明π为空,是不需要的。这里eval算法的计算是耗时的。
[0068]
s22、eval算法计算完成后,节点根据交易信息构造新区块的区块体,计算并填写区块头的各项元数据。
[0069]
s3、通过伪随机数进行双哈希计算及判断,竞争出块权;
[0070]
具体的,本发明利用vdf函数的高效验证性和双哈希不等式,公开高效验证出块权和新区块的有效性。
[0071]
步骤s3具体包括如下分步骤:
[0072]
s31、利用伪随机数生成器生成一个的伪随机数r,r是一个正整数;即r
←ꢀ
land(),rand()是一个伪随机数生成器。伪随机数r的值可以较大,以使步骤s32 的双哈希计算及判断次数不超过设定次数。
[0073]
s32、利用哈希函数sha256,通过如下双哈希不等式进行双哈希计算及判断,该双哈希不等式的表达式如公式(1)所示:
[0074]
sha256[sha256(版本号+前一区块哈希值
[0075]
+当前区块所包含交易的梅克尔树根+时间戳+当前挖矿难度
[0076]
+困难性问题的解y及证明π
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0077]
+可延迟验证函数vdf的所有参数(pp,c,t,1k)+伪随机数r)]
[0078]
<目标值*伪随机数r
[0079]
若上述双哈希不等式成立,则当前节点认为自己获得区块链网络的出块权,也称记账权,转至步骤s4;否则,随机产生一个新伪随机数,与原有的伪随机数累加并赋值给r,即r

r+rand(),重复s32进行双哈希计算及判断,直到上述双哈希不等式(1)成立。其中,版本号、前一区块哈希值、当前区块所包含交易的梅克尔树根、时间戳、当前挖矿难度、目标值均为区块链网络中的常见参数,可通过常规手段获取或计算得到。该双哈希计算及判断某种程度上是可以忽略耗时的。
[0080]
图2为本发明实施例提供的竞争出块权的详细流程图,对应以上步骤s2~s3。本发明利用某种vdf函数的串行性,解决了工作量证明不能抗并行计算的缺陷,和因依靠算力来竞争出块权而导致的资源浪费、恶意挖矿行为及恶意挖矿攻击的劣势,又能达到规定的计算延迟时间。同时,使用伪随机数生成器生成伪随机数r并利用双哈希计算及双哈希不等式来获得新区块的出块权,避免了中心化趋势,使出块权的获得变得随机。
[0081]
s4、获得出块权的节点出块,生成下一轮出块的参数值。
[0082]
步骤s4具体包括:
[0083]
s41、获得出块权的节点将新区块出块;
[0084]
s42、设置区块链网络下一轮出块的安全参数的位数k及下一轮出块的延迟时间t;
[0085]
s43、基于下一轮出块的安全参数的位数k,通过vdf中的setup算法生成下一轮出块的公共参数pp的值,即pp

rsetup(1k);
[0086]
s44、基于下一轮出块的公共参数pp的值及下一轮出块的延迟时间t,通过 vdf中的gen算法生成下一轮出块的困难性问题实例c的值,即(pp,c,t)
←ꢀ
rgen(pp,t)。
[0087]
新的(pp,c,t,1k)即组成区块链网络下一轮出块的参数值。
[0088]
s5、获得出块权的节点将困难性问题的解及证明、新区块、伪随机数和下一轮出块的参数值广播至区块链网络的其他节点。
[0089]
具体的,将新区块、eval算法计算得到的困难性问题实例c的解y及证明π、伪随机数r和下一轮出块的参数值(pp,c,t,1k)广播至区块链网络的所有其他节点。本轮获得出块权并出块的节点不参与下一轮出块。
[0090]
图3为本发明实施例提供的节点出块的详细流程图,对应以上步骤s4~s5。
[0091]
s6、其他节点验证解的正确性并进行双哈希计算及判断,根据验证结果和判断结果决定是否确认新区块或返回步骤s3重新竞争本轮出块权。
[0092]
具体的,通过vdf中的verify算法验证困难性问题实例c的解y及证明π是否正确,即验证accept

verify(pp,c,t,y,π)是否成立,并判断双哈希不等式(1) 是否成立。若困难性问题实例c的解y及证明π正确且双哈希不等式成立,则确认新区块,其他节点利用获得出块权的节点发来的下一轮出块的参数值更新自己的出块参数值,进行下一轮出块;否则,拒绝确认新区块,并返回步骤s3重新确认本轮出块权。
[0093]
本发明利用vdf函数的高效验证性和双哈希不等式,公开高效验证出块权和新区块的有效性。本发明可避免恶意挖矿和由此引发的恶意挖矿攻击,同时解决资源浪费,特别是电力资源浪费,并保证区块链系统安全,达到挖矿获得出块权的可验证性。
[0094]
下面结合具体实例对本发明的技术方案做出说明
[0095]
目前,vdf有众多候选方案,选用一种实用的vdf为例,即vdf= (setup,gen,eval,verify),这种实用vdf的证明为空且具有高效的验证效率,即证明π为空(缺省)和verify算法的时间复杂度为o(1)。具体实现原理如下:
[0096]
1)setup算法:
[0097][0098][0099]
2)gen算法:
[0100][0101]
3)eval算法:
[0102]
[0103]
4)verify算法:
[0104][0105]
其中,函数返回两个或多个整数的最大公约数,mod为取余运算符,“∧”均为逻辑运算符,分别表示“非”、“且”。
[0106]
假设区块链网络中共有n个节点(亦称“矿工”),每个节点都可以通过区块链网络与全网其他节点进行通信,且都运行同一vdf函数,以选用上述实用 vdf为例,结合图3说明本发明的具体实现方式。
[0107]
如图3所示为本发明共识机制的详细流程图,包括初始化、竞争出块权、节点出块、确认新区块5个部分。初始化之后,有节点计算困难性问题实例的解y,即挑战c的解y。计算出解y的节点,随即利用伪随机发生器产生一个伪随机数r,然后进行双哈希计算及判断,若双哈希不等式成立则获得出块权出块,设置下一轮出块的参数,并将新区块、解y、伪随机数r和下一轮出块的参数广播至全网其他节点,本轮的出块节点不参与下一轮出块。全网其他节点验证解y 的正确性,判断双哈希不等式(1)是否成立。若解y正确且双哈希不等式成立,则确认该新区块,并开始下一轮出块权竞争。
[0108]
步骤1:区块链网络初始化。为了便于理解可将安全参数的位数设置得较小,但一般位数设置为1024或2048位。设k=8,t=100000,然后通过vdf中的setup 算法生成pp的初始值pp=18209,通过gen算法生成c的初始值c= (2663,8268,13120)。
[0109]
步骤2:区块链网络内的节点,运行vdf中的eval算法计算得到困难性问题实例c的解y,即:y

eval(18209,(2663,8268,13120),100000),可得 y=(131,139)。这里实用vdf的证明为空,故eval算法的输出只有解y。
[0110]
步骤3:eval计算完成后,节点根据交易信息构造新区块的区块体,计算并填写区块头的各项元数据。
[0111]
步骤4:利用伪随机数生成器rand()生成一个伪随机数r=500。
[0112]
步骤5:进行双哈希计算及判断。将解y、(pp,c,t,1k)、伪随机数r、梅克尔树根、时间戳、当前挖矿难度、目标值等参数值代入双哈希不等式(1)中,判断是否成立。判断了10次,双哈希不等式(1)才成立,最终累加得到的伪随机数 r=10000。
[0113]
步骤6:当前节点获得区块链系统出块权,也称记账权。
[0114]
步骤7:当前节点出块,设置t=100000和k=8并通过 pp

rsetup(1k)和(pp,c,t)

rgen(pp,t)生成下一轮的出块参数pp=40913、 c=(8469,3472,21042)。
[0115]
步骤8:将新区块、eval计算得到的困难性问题实例(2663,8268,13120)的解(131,139)、伪随机数10000和下一轮的出块参数 (40913,(8469,3472,21042),100000,18)广播至区块链网络全网其他n-1个节点。本轮的出块节点不参与下一轮的出块。
[0116]
步骤9:其他n-1个节点,首先运行vdf中的verify算法验证困难性问题实例(2663,8268,13120)的解(131,139),可得:
[0117]
accept

verify(18209,(2663,8268,13120),100000,(131,139))
[0118]
因此困难性问题实例的解成立;其次,利用伪随机数10000及其他参数计算可得双哈希不等式(1)成立。故都成立,执行步骤10。
[0119]
步骤10:其他n-1个节点,利用出块节点发来的下一轮的出块参数 (40913,(8469,3472,21042),100000,18)更新自己的出块参数,并确认该出块节点所产生的区块为新的区块链区块,返回步骤2开始下一轮出块权的竞争。
[0120]
本发明基于可验证延迟函数vdf和安全哈希函数sha256实现了一种抗并行挖矿和公开可验证出块权的区块链共识机制,该共识机制不仅实现了抗并行挖矿,使得出块权的获取变得随机,不依赖节点算力,并在一定程度上抵抗恶意挖矿攻击,使之失去意义,而且具有公开可验证性,任何节点都可以快速高效验证出块权及新区块是否有效。另外,通过时间参数t还可以控制出块的间隔时间。
[0121]
与上述一种抗并行挖矿和公开可验证出块权的区块链共识机制的实施例相对应,本发明还提出一种抗并行挖矿和公开可验证出块权的区块链系统,该系统是基于前述的一种抗并行挖矿和公开可验证出块权的区块链共识机制实现。
[0122]
以上系统实施例是基于前述的一种抗并行挖矿和公开可验证出块权的区块链共识机制实现的,系统实施例简述之处请参阅前述步骤s1~s6的具体实施方式即可。
[0123]
本发明还公开一种电子设备,包括:至少一个处理器、至少一个存储器、通信接口和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令,以实现本发明前述的方法。
[0124]
本发明还公开一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机实现本发明实施例所述方法的全部或部分步骤。所述存储介质包括:u盘、移动硬盘、只读存储器rom、随机存取存储器ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0125]
以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以分布到多个网络单元上。本领域普通技术人员在不付出创造性的劳动的情况下,可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0126]
以上所述仅为本发明的较佳实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1