一种区块链生成过程中难度值创建方法与流程

文档序号:11520508阅读:920来源:国知局

本发明涉及互联网上区块链系统的生成,为一种区块链生成过程中难度值创建方法。



背景技术:

在区块链的生成过程中,难度值是一个关键参数值。在这其中,使用了hash计算方法。假定hash的位数为k,那么hash值的范围为0到2^k。例如hash值小于等于2^n,从概率上来看,需要尝试2^(k-n)次。那么难度值取2^(k-n),传统的pow区块链中难度值与区块内容无关,仅仅根据整个区块链网络中区块产生的速度作出调整,使得区块产生速度收敛于一个恒定值。但是区块产生速度直接影响了区块链的响应速度和吞吐量,因此,需要一种更好的方法定义难度值以及区块生成时间。



技术实现要素:

有鉴于此,本发明提供一种解决或部分解决上述问题的区块链生成过程中难度值创建方法。

为达到上述技术方案的效果,本发明的技术方案为:一种区块链生成过程中难度值创建方法,包含以下步骤:

1)提前定义标准区块生成时间、难度值、难度系数、待生成区块中交易的数量,标准区块生成时间用变量t表示,为区块生成时间的假设值,难度值用变量d表示,为在区块生成之前,对难度值的假设值;将难度系数用dc表示,取值范围的区间为[r,1],其中,r为变量,取值范围小于1;区块链中待生成区块的交易的数量用变量n表示,为自然数;

2)对区块链生成过程中难度值d1以及区块生成时间t1进行定义,具体公式如下:

d1=d×dc

t1=t×dc

3)指定难度系数dc的定义策略,通过定义策略对难度系数的值进行计算,从而通过第2)步的公式来进一步计算区块链生成过程中难度值d1以及区块生成时间t1,定义策略有三种:定义策略一、定义策略2、定义策略3;

a)定义策略一如下:

如果交易数量n等于0,难度系数dc等于1,如果交易数量n大于0,难度系数dc等于r;

根据定义策略一,当交易数量n等于0,带入第2)步,区块链生成过程中难度值d1等于0;当交易数量n大于0,区块链生成过程难度值d1等于标准区块生成时间t;

b)定义策略二如下:

设定区块链中待生成区块的交易的数量的最大值为nmax,难度系数dc的定义公式如下:

dc=1-(1-r)*n/nmax

根据定义策略二,使交易数量n与区块生成时间t1线性相关,并且成反比;

b)定义策略三如下:

对区块链中待生成区块的交易的紧急程度进行定义,用变量w来表示,取值范围在1与m之间,m的值大于1,为紧急程度的上限值;并且,记录当前区块中所有交易权重的最大值记作wm,其的均方根平均值记作wrms,那么难度系数dc的定义公式有如下两种:

dc=1-(1-r)*wm/m

dc=1-(1-r)*wrms/m

分别与当前区块中所有交易权重的最大值wm、均方根平均值wrms线性相关。

本发明的有益成果为:本发明提供了一种区块链生成过程中难度值创建方法,通过引入与区块内容(交易)相关的难度系数,从而影响区块链的响应速度和吞吐量,使其与实际需要联系更加紧密,克服了原有方法中仅仅根据区块产生速度调整的策略的局限性。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,能实现同样功能的产品属于等同替换和改进,均包含在本发明的保护范围之内。具体方法如下:

实施例1:区块链系统是一个公开的、分布式密码学记账系统。它基于密码学原理,而不基于信用,是完全通过点对点技术而实现的。在系统中,任何意见达成一致的双方,能够直接进行支付,从而实现不需要第三方中介参与,就能实现可靠交易。

区块链系统中资金是通过复杂的密码学算法与一系列协议设计产生,不受任何个人或组织扰的去中心化电子现金。每一笔交易的产生、消费都会经过区块链网络的全网确认。

区块链系统的数据记录形式为区块链系统通过详细记录每一笔交易使用的输入(input)和输出(output),与账簿类似,把交易内容全部储存。输入是用来付款的信息,输出指明收款的信息,无论输入和输出中包含付款者账户信息即比特币址,收款人账户信息,交易支出和收入数额信息。通过付款的信息中公钥对应的签名来证明用户对该电子现金的使用权。任何人都可以清晰地看到每一个用户的账户使用情况。在区块链系统中,虽然用户使用了假名来保护个人隐私,但公开的交易数据为攻击者的攻击提供了基础资料。

其中,关键数据结构包括其电子现金形式、地址、交易、区块链,而工作量证明是实现去中心化的技术基础。

电子现金形式:它是这样的一串数字签名:每一个所有者通过对前一次交易信息和下一位拥有者的公钥签署一个随机散列的数字签名,并将这个签名附加在这枚电子货币的末尾,构成这枚电子货币就发送给了下一位所有者。他人通过对签名进行检验,就能够验证该链条的所有者。

拥有地址对应私钥的人有该电子现金使用权。

地址:比特币地址是由椭圆曲线签名算法产生的的公钥,是经过多次sha256、ripemd-160计算,base58编码等变化得到的最终结果。比特币地址也是比特币用户在比特币网络上的账户,无论是付款、收款均通过对地址和地址对应的签名信息来实现。比特币地址与公钥联系紧密。

交易构造:每个交易(transaction)至少有一个交易输入(input)和一个交易输出(output)。每个输入使用上一个输出作为输入。每个未花费的输出等待一个最近的输入来使用它作为花费的输入,并且每一个输入只能使用一次。

区块链:区块链是比特币系统的数据库,它记录着比特币网络上被确认过的每一笔交易记录。区块链上的数据由节点通过工作量证明计算产生,具有唯一、不可更改特性,所有发生被确认的交易都会被记录并保存到区块链上。

工作量证明(proof-of-work):比特币矿工使用cpu、gpu或专业的芯片进行数学计算,通过穷举随机数nonce计算“最小的哈希值”的解。满足下面的式子:

sha256(sha256(version+pre_hash+merkle_root+ntime+nbits+x))<difficult

数据块中交易数据都与最小的哈希值有关,难度值随着当前比特币的产出难度由软件进行调整。难度值越小,解“最小的哈希值”难度越大,从而比特币的生成就越慢。哈希算法的单向不可逆特性使得要计算x的值,就只能通过暴力穷举每一个值来寻找符合条件的值。而计算机不断消耗计算资源寻找该值的过程就称为工作量证明(pow)。直到找到符合条件的x后,节点会向全网广播该数据块的信息,新块会被添加到区块链的末端。不断地将上一个区块信息附加到下一个块链作为输入,构成一个时间戳服务器形成不断延伸的区块链。攻击者若想更改数据,就要付出更高的代价进行挖矿更改块链的数据。工作量证明是去中心化技术的基础,也是唯一可信性质的基础。

难度值(difficulty)是矿工们在挖矿时候的重要参考指标,它直接决定了矿工大约需要经过多少次哈希运算才能产生一个合法的区块。一般,区块大约每10分钟生成一个,而如果要在不同的全网算力条件下,新区块的产生保持都基本维持在这个速率之上,因此,难度值必须根据全网算力的变化进行调整。简单地说,难度值被设定在无论挖矿能力如何变化,新区块产生速率都保持在10分钟一个。

实施例2:区块链中矿工挖矿

在挖矿中使用了工作量证明机制,根据协议要求,在记录用于创建新区块的交易单的同时,需要寻找一个幸运数字(nonce),使得包含这个幸运数字在内的新区块内容经过sha-256算法得到的哈希值小于特定的阀值。由于哈希算法的单向性,这个幸运数字无法通过公式得到,只能通过反复尝试来寻找。sha-256算法生成的哈希值是一个256位的二进制数,通过调整阀值的大小,就可控制寻找幸运数字的难度。

由于整个p2p网络的节点数目及运算能力在不断变化,这一个难度阀值采用移动平均的方法來确定,每产生2016个区块后进行一次调整,目标是使每个区块生成的时间间隔保持在10分钟左右。由于寻找幸运数字过程的随机性,这只是一个期望值,实际的区块生成间隔约在几十巧或几十分钟之间。

上面那个过程寻找幸运数字并打包发布区块,被称为挖矿(mining)。将某个节点的挖矿过程总结如下:

1)本地区块链中最后一个区块的内容为输入,以计算其哈希值;

2)接收其他节点发布或转发的交易单,进行筛选与检测,用于剔除掉已经被包含在区块链中的旧交易单、余额不足的或有其他错误的交易单;

3)随机选取一个数字,将这个数字与前面得到的哈希值、合法的交易单内容一起作为输入,再得到一个新的哈希值;

4)检测该个新的哈希值是否小于当前的难度阔值,如果答案是肯定的,则挖矿成功,生成一个新的区块并向全网广播;

5)如果哈希值不符合条件(大于阀值),则从第2)步重新开始;

6)如果在挖矿的过程中,收到了其他节点传来的新合法区块(合法表示符合格式要求,且其中的交易单都是新的),则将这个区块加到本地区块链的末尾,从第一步开始重新挖矿。

以上所述仅为本发明之较佳实施例,并非用以限定本发明的权利要求保护范围。同时以上说明,对于相关技术领域的技术人员应可以理解及实施,因此其他基于本发明所揭示内容所完成的等同改变,均应包含在本权利要求书的涵盖范围内。

本发明的有益成果为:本发明提供了一种区块链生成过程中难度值创建方法,通过引入与区块内容(交易)相关的难度系数,从而影响区块链的响应速度和吞吐量,使其与实际需要联系更加紧密,克服了原有方法中仅仅根据区块产生速度调整的策略的局限性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1