基于分片技术的区块链系统并行共同挖矿方法转让专利

申请号 : CN202010306927.3

文献号 : CN111526194B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 钟萍钟琪铠张一鸣王博

申请人 : 中南大学

摘要 :

本发明公开了一种基于分片技术的区块链系统并行共同挖矿方法,包括分片之间并行共同挖矿的挖矿模式和分片内部自适应出块模式。本发明通过分片技术来使区块链系统获得一定的可拓展能力,并采用所有分片共同挖矿的方式,由所有节点的哈希算力来保证各分片内部的安全性;在目标值中添加分片号并且在部分分片挖矿成功后重新生成新的h0继续挖矿的方式,能将各分片的出块时间独立于其他分片,实现各分片出块的自由;而且通过以在目标值的计算公式中加入交易频率值的方式,为交易频率高的分片提供更快速的响应,从而提高用户满意度;因此,本发明能够兼顾区块链系统的数据处理能力和安全性,而且可靠性高,实用性好。

权利要求 :

1.一种基于分片技术的区块链系统并行共同挖矿方法,包括如下步骤:分片之间并行共同挖矿的挖矿模式:i

S1. 区块链系统根据需要自行分成2个分片,i为正整数;

S2. 用户自由选择进入到最合适的分片;

S3. 用户节点将所有分片的上一个区块的区块头数据通过Merkel树归纳总结生成h0,作为所有分片共同挖矿所使用的区块头数据;

S4. 用户节点收集交易信息,并不断试探随机数η,直至哈希值hash(h0,η)小于特定分片的目标值,从而获取该分片的记账权,此时该分片出块;所述特定分片是分片号为哈希值hash(h0,η)前i位的分片;

S5. 将步骤S4中出块的区块的新区块头与未出块的分片的旧区块头通过Merkel树归纳总结,从而生成新的h0,作为所有分片继续公共挖矿所使用的区块头数据;

S6. 重复步骤S4 S5,继续挖矿;

~

分片内部自适应出块模式:

A. 在目标值的计算公式中添加初始交易频率值,形成新的目标值计算公式;

B. 当区块链系统中的某个分片出块,此时更新一次该出块的分片的交易频率值,从而保证交易频率与该分片中的交易数量正相关;

C. 根据步骤B得到的交易频率值,采用步骤A得到的新的目标值计算公式,计算得到该出块的分片的新的目标值,从而保证新的目标值与交易频率正相关;

D. 用户节点收集交易信息,不断计算直到获得哈希值hash(h0,η)<τi,首个计算得出hash(h0,η)<τi的用户将获得i号分片的出块权;τi为分片的目标值;

E. 当区块链系统中某个分片再次出块时,重复步骤B 步骤D。

~

2.根据权利要求1所述的基于分片技术的区块链系统并行共同挖矿方法,其特征在于步骤S4所述的用户节点收集交易信息,并不断试探随机数η,直至哈希值hash(h0,η)小于特定分片的目标值,从而获取该分片的记账权,此时该分片出块,具体为将哈希值与分片的目标值τi进行比较:若hash(h0,η)<τi,则用户获得该分片的记账权,同时该分片出块;否则,用户修改η的值,并再次计算哈希值,直至一个用户计算出hash(h0,η)<τi的结果。

3. 根据权利要求2所述的基于分片技术的区块链系统并行共同挖矿方法,其特征在于步骤A所述的在目标值的计算公式中添加初始交易频率值,形成新的目标值计算公式,具体为采用如下算式作为新的目标值计算公式:

8*(exponent‑3)

target=fnew*coefficient*2其中,target为目标值,fnew为新交易频率,coefficient为区块头数据bits字段的后六位十六进制数,exponent系数为区块头数据bits字段的前二位十六进制数;coefficient系数和exponent系数用于控制区块链系统整体的出块速度,fnew系数用于使交易频率更高的分片得到更快的出块速度。

4.根据权利要求3所述的基于分片技术的区块链系统并行共同挖矿方法,其特征在于步骤B所述的更新一次该出块的分片的交易频率值,具体为采用如下规则进行更新:设定每分钟交易数量为100的分片对出块时间的要求为十分钟,则采用如下公式更新交易频率 ,其中fnew为更新后的交易频率,fold为更新前的交易频率,nnew为新区块内的交易数,t为新区块出块的时间。

说明书 :

基于分片技术的区块链系统并行共同挖矿方法

技术领域

[0001] 本发明属于区块链技术领域,具体涉及一种基于分片技术的区块链系统并行共同挖矿方法。

背景技术

[0002] 区块链技术实质上是一种由分布式数据存储、点对点传输、共识机制、加密算法等计算机技术共同协作而形成的分布式账本技术。
[0003] 现阶段,虽然区块链行业的生态已经初步成型,但是区块链技术仍面临着诸多问题与技术瓶颈,如区块链系统安全性问题,不可拓展问题,隐私保护问题与区块链监管问题
等。特别是目前区块链系统的安全性问题与不可拓展问题,极大的限制了区块链技术的发
展与应用。
[0004] 在已有的支付系统中,Visa支付网络的每秒处理事务数(Transactions Per Second,TPS)平均在4k左右,支付宝在2017年的高峰流量甚至超过了256kTPS。而现有的区
块链系统的吞吐量远远不足,例如比特币的吞吐量只有7TPS,以太网的吞吐量大约为
15TPS,这与市场所需求的吞吐量性能差距过大。
[0005] 这些区块链系统吞吐量低且无法横向拓展的主要原因是:为了保证去中心化,每个节点都需要处理所有交易并且复制整个网络的通信、存储和状态表示。在这样节点负载
过高的系统中增加处理器的数目是无法增加系统的处理能力的,因此区块链系统就无法横
向拓展。
[0006] 针对于区块链系统不可拓展的现状,研究区块链技术的学者提出了多种解决方案。如链下通道,分片技术,有向无环图等等。但是这些方案都牺牲了区块链系统的安全性
或去中心化特性。而作为分布式的记账系统,安全性和去中心化特性都是不可牺牲的。
[0007] 因此,目前尚没有一种可靠的兼顾数据处理能力和区块链安全性或去中心化特性的拓展技术。

发明内容

[0008] 本发明的目的在于提供一种可靠性高、实用性好且兼顾数据处理能力和安全性的基于分片技术的区块链系统并行共同挖矿方法。
[0009] 本发明提供的这种基于分片技术的区块链系统并行共同挖矿方法,包括如下步骤:
[0010] 分片之间并行共同挖矿的挖矿模式:
[0011] S1.区块链系统根据需要自行分成2i个分片,i为正整数;
[0012] S2.用户自由选择进入到最合适的分片;
[0013] S3.用户节点将所有分片的上一个区块的区块头数据通过Merkel树归纳总结生成h0,作为所有分片共同挖矿所使用的区块头数据;
[0014] S4.用户节点收集交易信息,并不断试探随机数η,直至哈希值hash(h0,η)小于特定分片的目标值,从而获取该分片的记账权,此时该分片出块;所述特定分片为分片号为哈
希值hash(h0,η)前i位的分片;
[0015] S5.将步骤S4中出块的区块的新区块头与未出块的分片的旧区块头通过Merkel树归纳总结,从而生成新的h0,作为所有分片继续公共挖矿所使用的区块头数据;
[0016] S6.重复步骤S4~S5,继续挖矿;
[0017] 分片内部自适应出块模式:
[0018] A.在目标值的计算公式中添加初始交易频率值,形成新的目标值计算公式;
[0019] B.当区块链系统中的某个分片出块,此时更新一次该出块的分片的交易频率值,从而保证交易频率与该分块中的交易数量正相关;
[0020] C.根据步骤B得到的交易频率值,采用步骤A得到的新的目标值计算公式,计算得到该出块的分片的新的目标值,从而保证新的目标值与交易频率正相关;
[0021] D.用户节点收集交易信息,不断计算直到获得哈希值hash(h0,η)<τi;第一个计算得出hash(h0,η)<τi的用户将获得i号分片的出块权;
[0022] E.当区块链系统中某个分片再次出块时,重复步骤B~步骤D。
[0023] 步骤S4所述的用户节点收集交易信息,并不断试探随机数η,直至哈希值hash(h0,η)小于特定分片的目标值,从而获取该分片的记账权,此时该分片出块,具体为将哈希值与
分片的目标值τi进行比较:若hash(h0,η)<τi,则用户获得该分片的记账权,同时该分片出
块;否则,用户修改η的值,并再次计算哈希值,直至一个用户计算出hash(h0,η)<τi的结果。
[0024] 步骤A所述的在目标值的计算公式中添加初始交易频率值,形成新的目标值计算公式,具体为采用如下算式作为新的目标值计算公式:
[0025] target=fnew*coefficient*28*(exponent‑3)
[0026] 其中,target为目标值,fnew为新交易频率,coefficient为区块头数据bits字段的后六位十六进制数,exponent系数为区块头数据bits字段的前二位十六进制数;
coefficient系数和exponent系数用于控制区块链系统整体的出块速度,fnew系数用于使交
易频率更高的分片得到更快的出块速度。
[0027] 步骤B所述的更新一次该出块的分片的交易频率值,具体为采用如下规则进行更新:
[0028] 设定每分钟交易数量为100的分片对出块时间的要求为十分钟,则采用如下公式更新交易频率: 其中fnew为更新后的交易频率,fold为更新前的交易
频率,nnew为新区块内的交易数,t为新区块出块的时间。
[0029] 本发明提供的这种基于分片技术的区块链系统并行共同挖矿方法,通过分片技术来使区块链系统获得一定的可拓展能力,并采用所有分片共同挖矿的方式,由所有节点的
哈希算力来保证各分片内部的安全性;与此同时,在目标值中添加分片号并且在部分分片
挖矿成功后重新生成新的h0继续挖矿的方式,能将各分片的出块时间独立于其他分片,实
现各分片出块的自由;而且通过以在目标值的计算公式中加入交易频率值的方式,为交易
频率高的分片提供更快速的响应,从而提高用户满意度;因此,本发明方法能够兼顾区块链
系统的数据处理能力和安全性,而且可靠性高,实用性好。

附图说明

[0030] 图1为本发明方法的方法流程示意图。
[0031] 图2为本发明方法中的数据h0的生成流程示意图。

具体实施方式

[0032] 如图1所示为本发明方法的方法流程示意图:本发明在保证区块链系统去中心化和高安全性的前提下为区块链系统提升拓展能力。根据优先保证区块链系统高安全性的目
标,在决定区块链安全性的挖矿流程上,使用区块链系统中的所有用户共同挖矿来保证系
统的高安全性。在其它不会对区块链安全性产生影响的方面,则采用分片的技术,减少每一
个节点的事务负载,从而提高区块链的拓展能力。
[0033] 因此,本发明提供的这种基于分片技术的区块链系统并行共同挖矿方法,包括如下步骤:
[0034] 分片之间并行共同挖矿的挖矿模式:
[0035] S1.区块链系统根据需要自行分成2i个分片,i为正整数;
[0036] S2.用户自由选择进入到最合适的分片;
[0037] 在所有分片共同挖矿的模式下,各分片内部的安全性由所有节点的哈希算力共同保证,即使用户自主选择分片也不会对区块链系统的安全性造成任何影响;许多用户通常
只与联系密切的一部分其他用户交易,若随机分配用户进去各分配会产生过多的跨分片交
易,影响系统总体性能;所以在将用户分配进入各分片时,可以让用户自主选择进入某个更
适合的分片,从而减少跨分片交易的数量,进而提高系统的性能;
[0038] S3.用户节点将所有分片的上一个区块的区块头数据通过Merkel树归纳总结生成h0,作为所有分片共同挖矿所使用的区块头数据;
[0039] S4.用户节点收集交易信息,并不断试探随机数η,直至哈希值hash(h0,η)小于特定分片的目标值,从而获取该分片的记账权,此时该分片出块;特定分片即为分片号为哈希
值hash(h0,η)前i位的分片;
[0040] 在具体实施时,将哈希值与分片的目标值τi进行比较:若hash(h0,η)<τi,则用户获得该分片的记账权,同时该分片出块;否则,用户修改η的值,并再次计算哈希值,直至一
个用户计算出hash(h0,η)<τi的结果;
[0041] S5.在S4出块后,将出块的区块的新区块头与未出块的分片的旧区块头通过Merkel树归纳总结,从而生成新的h0,作为所有分片继续公共挖矿所使用的区块头数据;
[0042] S6.重复步骤S4~S5,继续挖矿;
[0043] 分片内部自适应出块模式:
[0044] A.在目标值的计算公式中添加初始交易频率值,形成新的目标值计算公式;具体为采用如下算式作为新的目标值计算公式:
[0045] target=fnew*coefficient*28*(exponent‑3)
[0046] 其中,target为目标值,fnew为新交易频率,coefficient为区块头数据bits字段的后六位十六进制数,exponent系数为区块头数据bits字段的前二位十六进制数;
coefficient系数和exponent系数用于控制区块链系统整体的出块速度,fnew系数用于使交
易频率更高的分片得到更快的出块速度;
[0047] B.当区块链系统中的某个分片出块,此时更新一次该出块的分片的交易频率值,从而保证交易频率与该分块中的交易数量正相关;具体为采用如下规则进行更新:
[0048] 所有分片共同挖矿可以保证分片区块链单个分片内部的安全性与不分片时同样高,但也会导致所有分片只能同时出块,分片的出块时间被捆绑在一起;在所有分片共同挖
矿的前提下,在目标值中加入各分片的分片号,可以使得每一个不同的分片有不同的目标
值,并且矿工产生随机数并进行哈希计算后的结果同时只能符合某一个分片的目标值;这
可以让所有分片不再捆绑出块,而是可以自由出块;由于部分分片挖矿成功后,整体挖矿效
率下降并且出块成功的区块无法继续挖矿出块;所以可以通过图2所示的方式,将已出块的
新区块头数据与尚未出块的区块链数据再次通过Merkel树归纳总结生成新的h0继续挖矿,
最终实现各分片的出块自由;
[0049] 不同的分片内部的交易频率是不一样的,通常人们都倾向于让交易频繁的区域尽快出块;在基于分片技术的区块链系统中,可以加快交易频繁区块的出块速度以提高用户
的满意度;因此,设定交易频率修改公式为:
[0050] 设定每分钟交易数量为100的分片对出块时间的要求为十分钟,则采用如下公式更新交易频率: 其中fnew为更新后的交易频率,fold为更新前的交易
频率,nnew为新区块内的交易数,t为新区块出块的时间;
[0051] 如此,交易频率作为目标值计算中的一个参数,从而使交易频率大的分片目标值较大,出块的速度较快;
[0052] C.根据步骤B得到的交易频率值,采用步骤A得到的新的目标值计算公式,计算得到该出块的分片的新的目标值,从而保证新的目标值与交易频率正相关;
[0053] D.用户节点收集交易信息,不断计算直到获得哈希值hash(h0,η)<τi,首个计算得出hash(h0,η)<τi的用户将获得i号分片的出块权;
[0054] E.当区块链系统中某个分片再次出块时,重复步骤B~步骤D。