CN114285860B - 一种调整区块生成难度的方法、装置、设备及存储介质 - Google Patents
一种调整区块生成难度的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114285860B CN114285860B CN202111277508.2A CN202111277508A CN114285860B CN 114285860 B CN114285860 B CN 114285860B CN 202111277508 A CN202111277508 A CN 202111277508A CN 114285860 B CN114285860 B CN 114285860B
- Authority
- CN
- China
- Prior art keywords
- block
- blocks
- target
- candidate
- difficulty
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种调整区块生成难度的方法、装置、设备及存储介质,涉及区块链技术领域,该方法包括:在目标区块满足难度调整条件时,从目标区块对应的逻辑时钟路径中,确定与目标区块间隔难度调整周期的历史区块。然后沿逻辑时钟路径,确定从历史区块至目标区块所经过的至少一个候选区块,并获取至少一个候选区块各自对应的采样区块的数量,其中,至少一个候选区块包括第一历史区块。基于各个候选区块的采样区块的总数量、各个候选区块的总数量以及采样时间间隔,对区块生成难度进行调整。利用逻辑时钟路径获得不同子区块链的状态信息,从而更加准确地进行难度调节,也解决因单一子链延伸速度较慢带来的难度调节滞后的问题。
Description
技术领域
本发明实施例涉及区块链技术领域,尤其涉及一种调整区块生成难度的方法、装置、设备及存储介质。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链共识协议是底层区块链平台的关键技术,直接决定区块链系统的安全性和系统性能。
在区块链共识协议中,区块生成难度决定了系统出块速率,进而影响区块链系统的安全性和性能。相关技术在调整区块生成难度时,标定参考子链上的一个区块,并将该区块的难度作为新区块生成的难度。该难度调节方法在实际运行中效果较差,可能带来区块难度调节的严重滞后,从而影响区块链系统的安全性和系统性能。
发明内容
本申请实施例提供了一种调整区块生成难度的方法、装置、设备及存储介质,用于提高调整区块生成难度的准确性。
一方面,本申请实施例提供了一种调整区块生成难度的方法,该方法包括:
在目标区块满足难度调整条件时,从所述目标区块对应的难度调整路径中,确定与所述目标区块间隔难度调整周期的第一历史区块;
沿所述难度调整路径,确定从所述第一历史区块至所述目标区块所经过的至少一个候选区块,并获取所述至少一个候选区块各自对应的采样区块的数量,所述至少一个候选区块包括所述第一历史区块;
基于所述至少一个候选区块对应的采样区块的第一总数量、所述至少一个候选区块的第二总数量以及采样时间间隔,确定出块速率;
基于所述出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度。
一方面,本申请实施例提供了一种调整区块生成难度的装置,该装置包括:
定位模块,用于在目标区块满足难度调整条件时,从所述目标区块对应的难度调整路径中,确定与所述目标区块间隔难度调整周期的第一历史区块;
统计模块,用于沿所述难度调整路径,确定从所述第一历史区块至所述目标区块所经过的至少一个候选区块,并获取所述至少一个候选区块各自对应的采样区块的数量,所述至少一个候选区块包括所述第一历史区块;
处理模块,用于基于所述至少一个候选区块对应的采样区块的第一总数量、所述至少一个候选区块的第二总数量以及采样时间间隔,确定出块速率;
调整模块,用于基于所述出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度。
可选地,所述难度调整路径为所述目标区块的逻辑时钟路径,所述逻辑时钟路径为以所述目标区块为起点,沿指向最长时钟区块的方向延伸至创世区块的路径,所述目标区块指向的最长时钟区块为节点在生成所述目标区块时监测到的具有最大逻辑时钟的合法区块,其中,区块的逻辑时钟为沿所述区块对应的逻辑时钟路径至创世区块所经过的区块数量,所述难度调整周期为预设时长或预设区块数量。
可选地,所述统计模块具体用于:
针对所述至少一个候选区块中的每个候选区块,从区块头中的区块采样信息字段中,获取候选区块对应的采样区块的数量。
可选地,还包括采样模块;
所述采样模块具体用于:
在生成所述候选区块时,从所述候选区块对应的目标采样路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块;
从所述第二历史区块所属的历史子区块链中,确定所述候选区块对应的采样区块,并将所述采样区块的区块哈希,添加至区块头中的区块采样信息字段。
可选地,所述目标采样路径为所述候选区块指向的最长时钟区块的父区块路径,所述父区块路径为以所述最长时钟区块为起点,沿所述最长时钟区块所属的子区块链至创世区块的路径;
所述采样模块具体用于:
从所述父区块路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块。
可选地,所述目标采样路径为所述候选区块的逻辑时钟路径,所述逻辑时钟路径为以所述候选区块为起点,沿指向最长时钟区块的方向延伸至创世区块的路径;
所述采样模块具体用于:
从所述逻辑时钟路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块。
可选地,所述采样模块具体用于:
将所述第二历史区块所属的历史子区块链中,与所述第二历史区块的区块高度相同的区块以及所述第二历史区块,作为所述候选区块对应的采样区块。
可选地,所述采样模块具体用于:
将所述第二历史区块所属的历史子区块链中,与所述第二历史区块的逻辑时钟相同的区块以及所述第二历史区块,作为所述候选区块对应的采样区块,所述历史区块的逻辑时钟为以所述历史区块为起点,沿所述历史区块对应的逻辑时钟路径至创世区块所经过的区块数量。
可选地,所述处理模块具体用于:
将所述第一总数量与所述第二总数量的比值,作为采样区块均值;
将所述采样区块均值与所述采样时间间隔的比值,作为出块速率。
可选地,所述调整模块具体用于:
基于所述出块速率和上一个难度调整周期的出块速率,确定难度调整比例;
将上一次更新的区块生成难度与所述难度调整比例的乘积,作为所述目标区块生成难度。
可选地,还包括难度校验模块和共识模块:
所述难度校验模块具体用于:
基于所述出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度之后,采用所述目标区块生成难度对所述目标区块进行难度校验;
所述共识模块具体用于:
在校验通过后,从多个子区块链中,确定所述目标区块所属的目标子区块链,并将所述目标区块添加至所述目标子区块链;
分别从所述多个子区块链中,获得各自对应的有效区块序列,每个有效区块序列包括至少一个有效区块;
基于获得的各个有效区块各自对应的逻辑时钟,对所述各个有效区块进行全局排序,获得全局区块链。
一方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述调整区块生成难度的方法的步骤。
一方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述调整区块生成难度的方法的步骤。
本申请实施例中,在目标区块满足难度调整条件时,从目标区块对应的逻辑时钟路径中,确定与目标区块间隔难度调整周期的第一历史区块。然后沿目标区块的逻辑时钟路径,确定从第一历史区块至目标区块所经过的至少一个候选区块,并获取至少一个候选区块各自对应的采样区块的数量。利用逻辑时钟路径获得不同子区块链的状态信息,从而可以更加准确地进行难度调节。之后再基于各个候选区块的采样区块的总数量、各个候选区块的总数量以及采样时间间隔,对区块生成难度进行调整,从而有效解决在实际网络环境中由于单一子链延伸速度较慢而带来的难度调节滞后的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例适用的一种系统架构示意图;
图2为本申请实施例提供的一种调整区块生成难度的方法的流程示意图;
图3为本申请实施例提供的一种平行多链架构的示意图;
图4为本申请实施例提供的一种平行多链架构的示意图;
图5为本申请实施例提供的一种平行多链架构的示意图;
图6为本申请实施例提供的一种逻辑时钟路径的示意图;
图7为本申请实施例提供的一种逻辑时钟路径的示意图;
图8为本申请实施例提供的一种子区块链的结构示意图;
图9a为本申请实施例提供的一种平行多链架构的示意图;
图9b为本申请实施例提供的一种平行多链架构的示意图;
图10为本申请实施例提供的一种调整区块生成难度的方法的流程示意图;
图11为本申请实施例提供的一种调整区块生成难度的装置的结构示意图;
图12为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了方便理解,下面对本发明实施例中涉及的名词进行解释。
区块链:一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
VDF:Verifiable Delay Function,可验证延迟函数。一种新型密码学原语,其执行过程时间确定,与节点中央处理器(central processing unit,简称CPU) 核心数无关,且对于给定输入,其执行结果唯一且可验证。
GHOST:Greedy Heaviest Observed Sub-Tree,幽灵协议或最重子链协议。一种对工作量证明进行改进的共识规则,即从创世块开始按顺序逐级取最重子树对应区块作为当前区块。
Merkle Tree:默克尔树,一种数据结构组织方法,并输出唯一值(一般为哈希),基本方法是将数据集进行排序,采用逐级合并的方式做哈希运算直至形成一个唯一数值。序列数量以2的次方为佳,不足部分可通过重复叶子节点数值进行补全。
Gossip协议:一种消息传播协议,即某节点向其周围节点进行广播,接力传播,最终使信息覆盖整个网络,目前是区块链网络中典型消息传播方式。
PoW:Proof of Work,工作量证明。一种共识机制,节点通过竞争满足特定条件的哈希运算结果进行区块的提交。
图1为本发明实施例提供的一种区块链系统的架构示意图,如图1所示,区块链系统中可以包括N个节点,分别为节点100~1、节点100~2、…、节点 100~N,N为正整数,区块链系统中任意两个节点可以通信连接,从而共同维护区块链系统,其中,任意两个节点可以通过有线方式连接,或者也可以通过无线方式连接,具体不作限定。
本发明实施例中,区块链系统中的节点可以具有多种功能。比如,路由功能、交易功能、共识功能等。具体地说,区块链系统中的节点可以把其他节点传送过来的交易数据等信息传送给更多的节点以实现节点之间的通信;或者,区块链系统中的节点可以用于记录历史上的所有交易;或者,区块链系统中的节点可以通过验证和记录交易从而生成区块链中的新区块。
需要说明的是,区块链系统中的一个节点可以是一台物理机(服务器),也可以是服务器中运行的一个进程或者一系列进程,对此,本申请具体不作限定。
如图1所示,该系统架构中还可以包括客户端设备200,客户端设备200 可以通过接入区块链网络与区块链系统中的任一节点连接。具体实施中,客户端设备200可以将交易数据发送给区块链系统中的任一节点,区块链系统中的某一节点在接收到交易数据后,可以将交易数据同步给区块链系统中的其它节点。某一节点在接收到交易数据后,还可以将交易数据存储在节点内部的交易池中;相应地,其它节点在接收到该节点同步的交易数据后,也可以将交易数据存储在其它节点内部的交易池中。如此,若某一节点确定处理多条交易数据,则可以从内部的交易池中获取多条交易数据,进而进行后续的交易处理及区块共识。
在本申请实施例中,针对图1所示的区块链系统中的任意一个节点,节点在目标区块满足难度调整条件时,从目标区块对应的难度调整路径中,确定与目标区块间隔难度调整周期的第一历史区块;沿难度调整路径,确定从第一历史区块至目标区块所经过的至少一个候选区块,并获取至少一个候选区块各自对应的采样区块的数量,至少一个候选区块包括第一历史区块。基于至少一个候选区块对应的采样区块的第一总数量、至少一个候选区块的第二总数量以及采样时间间隔,确定出块速率。基于出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度。
本申请实施例中,在目标区块满足难度调整条件时,从目标区块对应的难度调整路径中,确定与目标区块间隔难度调整周期的第一历史区块。沿难度调整路径,确定从第一历史区块至目标区块所经过的至少一个候选区块,并获取各个候选区块的采样区块的数量。基于各个候选区块的采样区块的总数量和各个候选区块的总数量以及采样时间间隔,对区块生成难度进行调整,该方法充分利用了不同区块的状态信息,从而可以更加准确地进行区块生成难度调节。
基于图1所示的系统架构图,本申请实施例提供了一种调整区块生成难度的方法的流程,如图2所示,该方法的流程可以由图1所示的区块链系统中的任意一个节点执行,包括以下步骤:
步骤S201,在目标区块满足难度调整条件时,从目标区块对应的难度调整路径中,确定与目标区块间隔难度调整周期的第一历史区块。
具体地,本申请实施例中的调整区块生成难度的方法适用于平行多链结构,即节点中包括多个子区块链,节点生成目标区块之后,可以从多个子区块链中确定目标区块所属的目标子区块链,并将目标区块添加至目标子区块链。
多个子区块链的数量可以根据实际情况进行设置。具体在进行设置时,多个子区块链的数量取决于对实际参与区块链网络的节点规模和节点本地物理运算能力的估计,区块链网络规模越大,子区块链的数量也应相应提升,但不能过度扩展子区块链的数量以防止系统性能下降。多个子区块链中的创世区块可以相同,也可以不相同。子区块链中可能包含分叉区块,也可能不包含分叉区块。
举例来说,参见图3,为本申请实施例提供的一种平行多链架构,平行多链架构包括子区块链C0、子区块链C1和子区块链C2,其中,子区块链C0包括创世区块G0、区块C01、区块C02、区块C03、区块C04、区块C05。子区块链C1包括创世区块G1、区块C11、区块C12、区块C13、区块C14、区块 C15。子区块链C2包括创世区块G2、区块C21、区块C22、区块C23、区块C24、区块C25。
可选地,目标区块对应的难度调整路径可以是位于一个子区块链上的路径,也可以是跨子区块链的路径。
对区块生成难度进行周期性调整,难度调整周期为预设时长,即目标区块的区块时间戳与第一历史区块的区块时间戳的差值,其中,区块时间戳指节点准备新区块生成时添加至区块中的时间标记信息。
难度调整周期也可以是预设区块数量,即沿难度调整路径,目标区块与第一历史区块之间间隔的区块数量。首次区块生成难度调整从创始区块开始。
可选地,难度调整路径为目标区块的逻辑时钟路径,逻辑时钟路径为以目标区块为起点,沿指向最长时钟区块的方向延伸至创世区块的路径,目标区块指向的最长时钟区块为节点在生成目标区块时监测到的具有最大逻辑时钟的合法区块,其中,区块的逻辑时钟为沿区块对应的逻辑时钟路径至创世区块所经过的区块数量。
步骤S202,沿难度调整路径,确定从第一历史区块至目标区块所经过的至少一个候选区块,并获取至少一个候选区块各自对应的采样区块的数量。
具体地,至少一个候选区块包括第一历史区块。针对每个候选区块,区块头的区块采样信息字段中,记录了候选区块对应的至少一个采样区块的区块哈希。从区块头中的区块采样信息字段中,获取候选区块对应的采样区块的数量,具体地,通过统计区块头中包含的采样区块的区块哈希的数量,确定采样区块的数量。
步骤S203,基于至少一个候选区块对应的采样区块的第一总数量、至少一个候选区块的第二总数量以及采样时间间隔,确定出块速率。
具体地,将至少一个候选区块各自对应的采样区块的数量求和,获得第一总数量。将至少一个候选区块的数量求和,获得第二总数量。采样区块的第一总数量表征沿难度调整路径,从第一历史区块延伸至目标区块的过程中(即一个难度调整周期),采集的采样区块的总数。
然后将第一总数量与第二总数量的比值,作为采样区块均值。采样区块均值表征平均单个区块对应的采样区块数量。之后再将采样区块均值与采样时间间隔的比值,作为出块速率,即当前难度调整周期内产生区块的平均速率。
可选地,在计算第一个区块难度调整周期(对应系统启动后的第一次区块难度调整)的出块速率时,可适当删减部分早期无区块采样信息的区块,以提高计算准确率和效率。
步骤S204,基于出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度。
具体地,基于出块速率和上一个难度调整周期的出块速率,确定难度调整比例。然后将上一次更新的区块生成难度与难度调整比例的乘积,作为目标区块生成难度,具体如以下公式(1)所示:
Dn=Dc*(V/H)………………(1)
其中,Dn为目标区块生成难度,Dc为上一次更新的区块生成难度,V为当前难度调整周期的出块速率,H为上一个难度调整周期的出块速率。第一个难度调整周期所对应的上一个难度调整周期的出块速率为系统预设值,第一个难度调整周期所对应的上一次更新的区块生成难度为系统预设值。
在获得目标区块生成难度之后,采用目标区块生成难度作用于目标区块以及后续区块的难度检查,直至触发下一次区块生成难度条件。
本申请实施例中,在目标区块满足难度调整条件时,从目标区块对应的逻辑时钟路径中,确定与目标区块间隔难度调整周期的第一历史区块。然后沿目标区块的逻辑时钟路径,确定从第一历史区块至目标区块所经过的至少一个候选区块,并获取至少一个候选区块各自对应的采样区块的数量。利用逻辑时钟路径获得不同子区块链的状态信息,从而可以更加准确地进行难度调节。之后再基于各个候选区块的采样区块数量、各个候选区块的数量以及采样时间间隔,对区块生成难度进行调整,从而有效解决在实际网络环境中由于单一子链延伸速度较慢而带来的难度调节滞后的问题。
可选地,采用以下方式确定候选区块对应的采样区块:
在生成候选区块时,从候选区块对应的目标采样路径中,确定与候选区块间隔采样时间间隔的第二历史区块。然后从第二历史区块所属的历史子区块链中,确定候选区块对应的采样区块,并将采样区块的区块哈希,添加至区块头中的区块采样信息字段。
采样时间间隔是根据实际网络环境进行测试配置的。比如,采样时间间隔略大于区块平均传播延迟(即采样时间间隔与区块平均传播延迟的差值小于预设阈值),区块平均传播延迟指一个区块从发出到被区块链网络中绝大部分节点收到的平均时间间隔,以保证获得的采样区块尽可能多的为诚实合法区块,同时防止可能的难度攻击。需要说明的是,区块链系统在生成任意一个区块时,均需要采用上述方式确定该区块对应的采样区块,并将采样区块的区块哈希,添加至区块头中的区块采样信息字段,此处不再赘述。
可选地,本申请实施例至少提供以下几种区块采样方式:
实施方式一、目标采样路径为候选区块指向的最长时钟区块的父区块路径,父区块路径为以最长时钟区块为起点,沿最长时钟区块所属的子区块链至创世区块的路径。
一种可能的实施方式,从父区块路径中,确定与候选区块间隔采样时间间隔的第二历史区块。将第二历史区块所属的历史子区块链中,与第二历史区块的区块高度相同的区块以及第二历史区块,作为候选区块对应的采样区块。
一种可能的实施方式,将第二历史区块所属的历史子区块链中,与第二历史区块的逻辑时钟相同的区块以及第二历史区块,作为候选区块对应的采样区块,第二历史区块的逻辑时钟为以第二历史区块为起点,沿第二历史区块对应的逻辑时钟路径至创世区块所经过的区块数量。
具体地,采样时间间隔可以用时长或区块数量表征。区块高度为:沿所属子区块链到创世区块过程中经过的区块数目(包括当前区块和创世区块)。将获取的各个采样区块的区块哈希添加至候选区块的区块头。当采样区块的数量大于预设数量阈值时,选取预设数量阈值的采样区块的区块哈希添加至候选区块的区块头。需要说明的是,区块链系统中的其他区块均可采用上述方法获得对应的采样区块,此处不再重复赘述。
举例来说,如图4所示,平行多链架构包括子区块链C0、子区块链C1和子区块链C2,其中,子区块链C0包括创世区块G0、区块C01、区块C02、区块C03、区块C04、区块C05、区块C06和区块C07。子区块链C1包括创世区块G1、区块C11、区块C12、区块C13、区块C14、区块C15、区块C16。子区块链C2包括创世区块G2、区块C21、区块C22、区块C23、区块C24、区块C25。
设定在生成候选区块时,候选区块指向的最长时钟区块为子区块链C0中的区块C05,则候选区块指向的最长时钟区块的父区块路径为:区块C05→区块C04→区块C03→区块C02→区块C01→创世区块G0。
设定采样时间间隔对应的区块数量为3个,则从父区块路径中,确定与候选区块间隔采样时间间隔的第二历史区块为区块C02。
在子区块链C0中,区块C02的区块高度为3,区块C06的区块高度为3,则将区块C02和区块C06作为候选区块的采样区块。
本申请实施例中,从候选区块指向的最长时钟区块的父区块路径中,确定与候选区块间隔预设区块数量的第二历史区块。然后将第二历史区块所属的历史子区块链中,与第二历史区块的区块高度相同的区块以及第二历史区块,作为候选区块的采样区块,充分获取了与候选区块间隔采样时间间隔的并发的区块,以便后续基于获得的采样区块进行适应性地区块生成难度调整。
实施方式二、目标采样路径为候选区块的逻辑时钟路径,逻辑时钟路径为以候选区块为起点,沿指向最长时钟区块的方向延伸至创世区块的路径。
举例来说,参见图5,为本申请实施例提供的一种平行多链架构,平行多链架构包括子区块链C0、子区块链C1和子区块链C2,其中,子区块链C0包括创世区块G0、区块C01、区块C02、区块C03、区块C04。子区块链C1包括创世区块G1、区块C11、区块C12、区块C13、区块C14、区块C15、区块 C16。子区块链C2包括创世区块G2、区块C21、区块C22、区块C23、区块C24、区块C25。
设定在生成候选区块时,候选区块指向的最长时钟区块为区块C04,区块 C04指向的最长时钟区块为区块C13,区块C13指向的最长时钟区块为区块 C23,区块C23指向的最长时钟区块为区块C12,区块C12指向的最长时钟区块为区块C02,区块C02指向的最长时钟区块为区块C11,区块C11指向的最长时钟区块为创世区块G1。
由图5可知,候选区块对应的逻辑时钟路径为:候选区块→区块C04→区块C13→区块C23→区块C12→区块C02→区块C11→创世区块G1。
进一步地,从候选区块的逻辑时钟路径中,确定与候选区块间隔采样时间间隔的第二历史区块。
一种可能的实施方式,将第二历史区块所属的历史子区块链中,与第二历史区块的区块高度相同的区块以及第二历史区块,作为候选区块对应的采样区块。
举例来说,参见图6,设定候选区块对应的逻辑时钟路径为:候选区块→区块C04→区块C13→区块C23→区块C12→区块C02→区块C11→创世区块 G1,采样时间间隔对应的区块数量为3个,则从候选区块的逻辑时钟路径中,确定与候选区块间隔采样时间间隔的第二历史区块为区块C12,区块C12所属的历史子区块链为子区块链C1。
在子区块链C1中,与区块C12的区块高度相同的区块为区块C16,则将区块C12和区块C16作为候选区块的采样区块。
另一种可能的实施方式,将第二历史区块所属的历史子区块链中,与第二历史区块的逻辑时钟相同的区块以及第二历史区块,作为候选区块对应的采样区块。第二历史区块的逻辑时钟为以第二历史区块为起点,沿第二历史区块对应的逻辑时钟路径至创世区块所经过的区块数量。
举例来说,参见图7,设定候选区块对应的逻辑时钟路径为:候选区块→区块C04→区块C13→区块C23→区块C12→区块C02→区块C11→创世区块G1,采样时间间隔对应的区块数量为3个,则从候选区块的逻辑时钟路径中,确定与候选区块间隔采样时间间隔的第二历史区块为区块C12,区块C12所属的历史子区块链为子区块链C1。
在子区块链C1中,区块C12的逻辑时钟路径为:区块C12→区块C02→区块C11→创世区块G1,则区块C12对应的逻辑时钟为3。区块C16的逻辑时钟路径为:区块C16→区块C21→区块C11→创世区块G0,则区块C16对应的逻辑时钟为3。子区块链C1中其他区块的逻辑时钟均不等于3,则将区块 C12和区块C16作为候选区块的采样区块。
本申请实施例中,沿逻辑时钟路径对区块进行采样,为区块之间提供了更加可靠的时序关系度量,从而提高区块采样的准确性。
可选地,基于出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度之后,采用目标区块生成难度对目标区块进行难度校验。在校验通过后,从多个子区块链中,确定目标区块所属的目标子区块链,并将目标区块添加至目标子区块链。
一种可能的实施方式,目标区块可以是节点基于交易数据生成的,其中,目标区块包括区块头和区块体,目标区块包括:全局快照标志、最长时钟区块的区块哈希、采样区块的区块哈希、交易根哈希、可验证输出内容、父区块哈希、可验证输出证明和父区块证明等。区块体包括实际入块的交易数据。
下面具体介绍获得区块头中各个参数的过程:
全局快照标志:先对多个子区块链进行全局快照,获得各个有效区块序列中的最新有效区块。在进行快照时,将获得的各个最新有效区块进行排序,具体可以按照最新有效区块所属的子区块链的编号进行排序。然后基于各个最新有效区块的区块哈希,构建全局快照对应的第一默克尔树。再将第一默克尔树的根哈希,作为多个子区块链的全局快照标志。
交易根哈希:基于交易数据,构建第二默克尔树,然后将第二默克尔树的根哈希,作为交易数据的交易根哈希。
可验证输出内容和可验证输出证明:将最长时钟区块的区块哈希、采样区块的区块哈希、多个子区块链的全局快照标志和交易数据的交易根哈希进行合并,然后计算合并后的数据对应的打包哈希。之后再采用可验证延迟函数对打包哈希进行处理,获得可验证输出结果,可验证输出结果包括可验证输出内容和可验证输出证明。
一种可能的实施方式,当节点为多核CPU节点时,可以通过多线程并行执行可验证延迟函数,同时,不同的线程对应不同的交易内容,从而实现多线程并行参与VDF,保持投入与节点处理能力相匹配。
父区块哈希和父区块证明:对可验证输出结果进行加密哈希处理,获得可验证输出哈希,然后判断可验证输出哈希是否小于前面描述的目标区块生成难度,若是,则确定目标区块为合法区块,并执行后续步骤,否则,确定目标区块为非法区块并丢弃目标区块。
采用可验证输出哈希,对多个子区块链的总数取模,确定目标区块所属的目标子区块链。然后将目标子区块链在全局快照中对应的有效区块,作为目标区块在目标子区块链中的父区块,并获取父区块的父区块哈希和父区块证明。
具体实施中,在确定目标区块所属的目标子区块链之后,基于前文描述全局快照,可以获得目标子区块链在全局快照中对应的最新有效区块,然后将获得的最新有效区块作为目标区块在目标子区块链中的父区块,并获得父区块的父区块哈希和父区块证明,其中,父区块证明可以是默克尔树证明。
最长时钟区块的区块哈希和采样区块的区块哈希在前文已有介绍,此处不再赘述。需要说明的是,目标区块中的数据并不仅限于上述描述的几种,还可包含更多与开发相关的信息字段,对此,本申请不做具体限定。
除了获得目标区块之外,本申请实施例中基于最长时钟区块的区块哈希、采样区块的区块哈希、全局快照标志、交易根哈希、可验证输出内容、父区块哈希,生成目标区块的目标区块哈希,其中,目标区块哈希用于唯一标识目标区块。
可选地,节点在获得目标区块之后,可以将目标区块广播至网络中,区块链网络广播方法可采用Gossip协议等。其他区块在接收到目标区块之后,可以将目标区块添加至本地的目标子区块链。
本申请实施例中,节点通过完成特定难度的可验证延迟函数,实现区块生成,为区块之间提供更加可靠的时间关系度量,而不必采用传统的工作量证明机制(PoW),从而提升区块链系统在大规模开放网络环境下的可扩展性和交易吞吐量。
另一种可能的实施方式,目标区块也可以是从其他节点同步获得的。
具体地,节点接收其他节点发送的目标区块,并从目标区块的区块头中获取目标区块对应的可验证输出结果、父区块的父区块哈希、父区块的父区块证明和全局快照标志。
节点在将目标区块添加至本地的子区块链之前,需要对目标区块进行校验,其中,校验过程包括以下一项或多项过程:
1、基于可验证输出结果、父区块的父区块哈希、父区块的父区块证明和全局快照标志,对目标区块进行基础校验。
具体地,校验可验证输出结果是否正确,校验规则由可验证延迟函数自身定义。
基于从区块头获得的父区块哈希和父区块证明,确定目标区块所属的目标子区块链。对从区块头获得的可验证输出结果进行加密哈希处理,获得可验证输出哈希,采用可验证输出哈希,对多个子区块链的总数取模,确定目标区块所属的参考子区块链。
判断目标子区块链和参考子区块链是否一致,若是,则基于从区块头获得的父区块的父区块证明和全局快照标志,并判断父区块是否为相应的全局快照中的区块,若是,则确定目标区块为合法区块,否则,确定目标区块为非法区块并丢弃目标区块。
2、基于目标区块对应的可验证输出结果,对目标区块进行难度校验。
具体地,对从区块头获得的可验证输出结果进行加密哈希处理,获得可验证输出哈希,然后判断可验证输出哈希是否小于前文描述的调整后的目标区块生成难度,若是,则确定目标区块为合法区块,否则,确定目标区块为非法区块并丢弃目标区块。
3、基于目标区块的逻辑时钟和父区块的逻辑时钟,对目标区块进行时钟校验。
判断目标区块的逻辑时钟是否大于等于父区块的逻辑时钟,若是,则确定目标区块为合法区块,否则,确定目标区块为非法区块并丢弃目标区块。
采用上述一项或多项校验过程,对目标区块进行校验之后,若确定目标区块为合法区块,则将目标区块添加至相应的子区块链;若确定目标区块为非法区块,则丢弃目标区块。
本申请实施例中,节点接收其他节点发送的目标区块之后,对目标区块进行多维度的校验,在校验通过时才将目标区块添加至对应的子区块链,从而保证了区块链系统的安全性。
可选地,将目标区块添加至目标子区块链之后,采用以下方式分别从多个子区块链中,获得各自对应的有效区块序列:
从一个子区块链的创世区块开始,沿子区块方向延伸,依次选取对应最大权重区块子树的区块作为有效区块,直至无延伸区块,获得由选取的有效区块组成的有效区块序列。
具体地,一个区块的区块子树包括该区块以及沿该区块延伸的其他区块子树,区块子树的权重为区块子树中各个区块的区块权重之和,每个区块的区块权重是每个区块的可验证输出哈希,或者可验证输出哈希的预设比例。
基于每个区块的可验证输出哈希确定每个区块的区块权重,而不是简单地将每个区块的区块权重都设置为相同的值,从而提高单链的收敛速度。
举例来说,参见图8,为一个子区块链的结构示意图,该子区块链包括创世区块G0、区块C01、区块C02、区块C03、区块C04、区块C05、区块C06、区块C07、区块C08、区块C09。
以区块C01举例来说,区块C01的区块子树包括区块C01、区块C02、区块C03、区块C04、区块C07、区块C08、区块C09,该区块子树的权重为上述各个区块各自对应的区块哈希之和。
在一种可能的实施方式,每次选取对应最大权重区块子树的区块作为有效区块,包括以下步骤:
针对一个子区块链中最新选取的第一有效区块,从该子区块链中,确定与第一有效区块连接的至少一个候选子区块,以及至少一个候选子区块各自对应的区块子树。然后确定至少一个候选子区块各自对应的区块子树的权重,并基于获得的权重从各个区块子树中,确定最大权重区块子树。最后将至少一个候选子区块中,对应最大权重区块子树的候选子区块,作为第二有效区块。
具体地,在起始状态时,子区块链上的创世区块为第一有效区块,然后依次沿子区块链延伸方向选取第二有效区块。
举例来说,参见图8所示的子区块链,在第一次选取有效区块的过程中,以创世区块G0作为第一有效区块,与创世区块G0连接的区块包括区块C01 和区块C05。
区块C01的区块子树1包括区块C01、区块C02、区块C03、区块C04、区块C07、区块C08、区块C09,将区块C01、区块C02、区块C03、区块C04、区块C07、区块C08、区块C09各自对应的区块哈希之和作为区块子树1的权重。
区块C05的区块子树2包括区块C05和区块C06,将区块C05和区块C06 各自对应的区块哈希之和作为区块子树2的权重。由于区块子树1的权重大于区块子树2的权重,则区块子树1为最大权重区块子树,那么,区块子树1对应的区块C01为第二有效区块。
在第二次选取有效区块的过程中,以区块C01作为第一有效区块,与区块 C01连接的区块包括区块C02、区块C03和区块C04。
区块C02的区块子树3包括区块C02、区块C07和区块C08,将区块C02、区块C07和区块C08各自对应的区块哈希之和作为区块子树3的权重。
区块C03的区块子树4包括区块C03和区块C09,则将区块C03和区块 C09各自对应的区块哈希之和作为区块子树4的权重。
区块C04的区块子树5包括区块C04,将区块C04对应的区块哈希作为区块子树5的权重。
由于区块子树3的权重大于区块子树4和区块子树5各自对应的权重,则区块子树3为最大权重区块子树,那么,区块子树3对应的区块C02为第二有效区块。
在第三次选取有效区块的过程中,以区块C02作为第一有效区块,与区块 C02连接的区块包括区块C07和区块C08。
区块C07的区块子树6包括区块C07,则将区块C07对应的区块哈希作为区块子树6的权重。
区块C08的区块子树7包括区块C08,则将区块C08对应的区块哈希作为区块子树7的权重。
由于区块子树6的权重大于区块子树7的权重,则区块子树6为最大权重区块子树,那么,区块子树6对应的区块C07为第二有效区块。
区块C07之后没有延伸的区块,故停止选取有效区块,获得的有效区块序列为创世区块G0、区块C01、区块C02、区块C07。
本申请实施例中,从子区块链的创世区块开始,依次选取对应最大权重区块子树的区块作为有效区块,获得由选取的有效区块组成的有效区块序列。采用最重子链思想进行基于VDF的单链改造,可更好提升多链系统的安全性,系统性能上限可在节点处理能力范围内得到进一步提升。
进一步地,在获得各个子区块链各自对应的有效区块序列之后,可以将各个有效区块序列中的有效区块划分为稳定区块和不稳定区块。
具体地,针对各个有效区块,分别执行以下步骤:
若一个区块对应的区块子树的权重大于等于稳定阈值,则将该区块作为稳定区块,若一个区块对应的区块子树的权重小于稳定阈值,则将该区块作为不稳定区块,其中,稳值阈值根据实际情况进行设置。
通过将获得的各个有效区块划分为稳定区块和不稳定区块,便于实时监测子区块链的状态,同时便于后续对各个有效区块进行全部排序,获得稳定的全局区块链。
可选地,本申请实施例至少采用以下几种实施方式对获得的各个有效区块进行全局排序,获得全局区块链:
实施方式一、分别从各个有效区块序列中获取一个目标有效区块;基于获得的各个目标有效区块对应的逻辑时钟,对各个目标有效区块进行全局排序,获得全局区块链。
具体地,分别从各个有效区块序列中随机获取一个目标有效区块。按照逻辑时钟从小到大的顺序,对筛选出的目标有效筛选区块进行全局排序,获得全局区块链。在存在逻辑时钟相同的目标有效区块时,基于子区块链编号或区块哈希,对逻辑时钟相同的目标有效区块进行排序,获得全局区块链。
举例来说,如图9a所示,为本申请实施例提供的一种平行多链架构,平行多链架构包括子区块链C0、子区块链C1和子区块链C2,其中,子区块链 C0包括创世区块G0(逻辑时钟:0)、区块C01(逻辑时钟:1)、区块C02(逻辑时钟:2)、区块C03(逻辑时钟:3)、区块C04(逻辑时钟:4)。子区块链 C1包括创世区块G1(逻辑时钟:0)、区块C11(逻辑时钟:1)、区块C12(逻辑时钟:3)、区块C13(逻辑时钟:5)。子区块链C2包括创世区块G2(逻辑时钟:0)、区块C21(逻辑时钟:1)、区块C22(逻辑时钟:4)、区块C23(逻辑时钟:5)、区块C24(逻辑时钟:6)。
选取子区块链C0中的区块C01、子区块链C1中的区块C11和子区块链 C2中的区块C22作为目标有效区块。
按照逻辑时钟从小到大的顺序,对选取的目标有效区块进行全局排序,当存在逻辑时钟相同的目标有效区块时,按照子区块链编号从小到大的顺序,对逻辑时钟相同的目标有效区块进行排序,获得的全局区块链为:区块C01、区块C11和区块C22。
实施方式二、分别从各个有效区块序列中获取最新稳定区块,从各个最新稳定区块对应的逻辑时钟中获得最小逻辑时钟,并将最小逻辑时钟作为区块时钟边界。从各个稳定区块中,筛选出逻辑时钟小于等于区块时钟边界的目标稳定区块。基于获得的各个目标稳定区块对应的逻辑时钟,对各个目标稳定区块进行全局排序,获得全局区块链。
具体地,按照逻辑时钟从小到大的顺序,对各个目标稳定区块进行全局排序,获得初步排序结果。若初步排序结果中存在逻辑时钟相同的目标稳定区块,则基于子区块链编号或区块哈希,对逻辑时钟相同的目标稳定区块进行排序,获得全局区块链。
采用子区块链编号或区块哈希对逻辑时钟相同的目标稳定区块进行排序时,也可以按照从小到大的顺序。
举例来说,如图9b所示,为本申请实施例提供的一种平行多链架构,平行多链架构包括子区块链C0、子区块链C1和子区块链C2,其中,子区块链 C0包括创世区块G0(逻辑时钟:0)、区块C01(逻辑时钟:1)、区块C02(逻辑时钟:2)、区块C03(逻辑时钟:3)、区块C04(逻辑时钟:4)。子区块链 C1包括创世区块G1(逻辑时钟:0)、区块C11(逻辑时钟:1)、区块C12(逻辑时钟:3)、区块C13(逻辑时钟:5)。子区块链C2包括创世区块G2(逻辑时钟:0)、区块C21(逻辑时钟:1)、区块C22(逻辑时钟:4)、区块C23(逻辑时钟:5)、区块C24(逻辑时钟:6)。
设定子区块链C0中的稳定区块包括:创世区块G0、区块C01,其中,最新稳定区块为区块C01。子区块链C1中的稳定区块包括:创世区块G1、区块 C11,其中,最新稳定区块为区块C11。子区块链C2中的稳定区块包括:创世区块G2、区块C21、区块C22,其中,最新稳定区块为区块C22。
上述各个最新稳定区块对应的逻辑时钟中,最小逻辑时钟为1,则确定区块时钟边界为1。
在子区块链C0中的各个稳定区块中,逻辑时钟小于或等于区块时钟边界的目标稳定区块包括创世区块G0和区块C01。
在子区块链C1中的各个稳定区块中,逻辑时钟小于或等于区块时钟边界的目标稳定区块包括创世区块G1和区块C11。
在子区块链C2中的各个稳定区块中,逻辑时钟小于或等于区块时钟边界的目标稳定区块包括创世区块G2、区块C21。
按照逻辑时钟从小到大的顺序,对筛选出的目标稳定区块进行全局排序,当存在逻辑时钟相同的目标稳定区块时,按照子区块链编号从小到大的顺序,对逻辑时钟相同的目标稳定区块进行排序,获得的全局区块链为:创世区块 G0、创世区块G1、创世区块G2、区块C01、区块C11、区块C21。
本申请实施例中,采用最重子链思想进行基于VDF的单链改造,并基于区块逻辑时钟对应的区块时序关系构建全局区块链,引入了更加可靠的时间关系度量,从而提升了多链系统的安全性,也使系统性能上限可在节点处理能力范围内得到进一步提升。
需要说明的是,在本申请实施例中,节点可以是每次将获得的区块添加至相应的子区块链后,都触发全局排序获得全局区块链;也可以是在间隔预设时长或间隔预设数量的区块后,触发全局排序获得全局区块链,其中,预设时长和预设数量的区块可以根据实际情况进行设置;还可以是接收到外部的触发指令时,才触发全局排序获得全局区块链,对此,本申请不做具体限定。
进一步地,在获得全局区块链之后,判断全局区块链中不同区块之间是否存在重复或冲突交易(比如同一交易被重复打包)。具体地,按照区块链中区块的顺序依次执行各个区块中的交易,若当前区块中的某个交易在之前已经被执行,则确定该交易为非法交易,则不执行,否则确定该交易为合法交易并执行,同时进行系统状态更新。
为了更好地解释本申请实施例,下面结合具体实施场景,介绍本申请实施例提供的一种调整区块生成难度的方法,该方法的流程可以由图1所示的区块链系统中的任意一个节点执行,包括以下步骤,如图10所示:
设定平行多链架构包括子区块链C0、子区块链C1和子区块链C2,其中,子区块链C0包括创世区块G0、区块C01、区块C02、区块C03、区块C04。子区块链C1包括创世区块G1、区块C11、区块C12、区块C13、区块C14、区块C15、区块C16。子区块链C2包括创世区块G2、区块C21、区块C22、区块C23、区块C24、区块C25。
设定目标区块指向的最长时钟区块为区块C04,区块C04指向的最长时钟区块为区块C13,区块C13指向的最长时钟区块为区块C23,区块C23指向的最长时钟区块为区块C12,区块C12指向的最长时钟区块为区块C02,区块 C02指向的最长时钟区块为区块C11,区块C11指向的最长时钟区块为创世区块G1。目标区块对应的逻辑时钟路径为:目标区块→区块C04→区块C13→区块C23→区块C12→区块C02→区块C11→创世区块G1。
设定难度调整周期对应的区块数量为3个,则从目标区块的逻辑时钟路径中,确定与目标区块间隔难度调整周期的第一历史区块为区块C12,即区块 C12为上次触发区块生成难度调整的区块。
沿目标区块的逻辑时钟路径,确定从目标区块至第一历史区块所经过的候选区块为:区块C04、区块C13、区块C23、区块C12。从区块C04的区块头中获知区块C04对应的采样区块的数量为3个;从区块C13的区块头中获知区块C13对应的采样区块的数量为4个;从区块C23的区块头中获知区块C23 对应的采样区块的数量为3个。从区块C12的区块头中获知区块C12对应的采样区块的数量为2个。
区块C04、区块C13、区块C23、区块C12对应的采样区块的第一总数量为12个,区块C04、区块C13、区块C23、区块C12的第二总数量为4个。通过计算第一总数量和第二总数量的比值,获得采样区块均值为3,然后计算采样区块均值与采样时间间隔的比值,获得出块速率。之后再将获得的出块速率代入上述公式(1),即可获得目标区块生成难度。
采用目标区块生成难度作用于目标区块以及后续区块的难度检查,直至触发下一次区块生成难度条件。
本申请实施例中,在目标区块满足难度调整条件时,从目标区块对应的逻辑时钟路径中,确定与目标区块间隔难度调整周期的第一历史区块。然后沿目标区块的逻辑时钟路径,确定从第一历史区块至目标区块所经过的至少一个候选区块,并获取至少一个候选区块各自对应的采样区块的数量。利用逻辑时钟路径获得不同子区块链的状态信息,从而可以更加准确地进行难度调节。之后再基于各个候选区块的采样区块的总数量、各个候选区块的总数量以及采样时间间隔,对区块生成难度进行调整,从而有效解决在实际网络环境中由于单一子链延伸速度较慢而带来的难度调节滞后的问题。
基于相同的技术构思,本申请实施例提供了一种调整区块生成难度的装置的结构示意图,应用于区块链系统中的任意一个节点,如图11所示,该装置 1100包括:
定位模块1101,用于在目标区块满足难度调整条件时,从所述目标区块对应的难度调整路径中,确定与所述目标区块间隔难度调整周期的第一历史区块;
统计模块1102,用于沿所述难度调整路径,确定从所述第一历史区块至所述目标区块所经过的至少一个候选区块,并获取所述至少一个候选区块各自对应的采样区块的数量,所述至少一个候选区块包括所述第一历史区块;
处理模块1103,用于基于所述至少一个候选区块对应的采样区块的第一总数量、所述至少一个候选区块的第二总数量以及采样时间间隔,确定出块速率;
调整模块1104,用于基于所述出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度。
可选地,所述难度调整路径为所述目标区块的逻辑时钟路径,所述逻辑时钟路径为以所述目标区块为起点,沿指向最长时钟区块的方向延伸至创世区块的路径,所述目标区块指向的最长时钟区块为节点在生成所述目标区块时监测到的具有最大逻辑时钟的合法区块,其中,区块的逻辑时钟为沿所述区块对应的逻辑时钟路径至创世区块所经过的区块数量,所述难度调整周期为预设时长或预设区块数量。
可选地,所述统计模块1102具体用于:
针对所述至少一个候选区块中的每个候选区块,从区块头中的区块采样信息字段中,获取候选区块对应的采样区块的数量。
可选地,还包括采样模块1105;
所述采样模块具体用于1105:
在生成所述候选区块时,从所述候选区块对应的目标采样路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块;
从所述第二历史区块所属的历史子区块链中,确定所述候选区块对应的采样区块,并将所述采样区块的区块哈希,添加至区块头中的区块采样信息字段。
可选地,所述目标采样路径为所述候选区块指向的最长时钟区块的父区块路径,所述父区块路径为以所述最长时钟区块为起点,沿所述最长时钟区块所属的子区块链至创世区块的路径;
所述采样模块1105具体用于:
从所述父区块路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块。
可选地,所述目标采样路径为所述候选区块的逻辑时钟路径,所述逻辑时钟路径为以所述候选区块为起点,沿指向最长时钟区块的方向延伸至创世区块的路径;
所述采样模块1105具体用于:
从所述逻辑时钟路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块。
可选地,所述采样模块1105具体用于:
将所述第二历史区块所属的历史子区块链中,与所述第二历史区块的区块高度相同的区块以及所述第二历史区块,作为所述候选区块对应的采样区块。
可选地,所述采样模块1105具体用于:
将所述第二历史区块所属的历史子区块链中,与所述第二历史区块的逻辑时钟相同的区块以及所述第二历史区块,作为所述候选区块对应的采样区块,所述历史区块的逻辑时钟为以所述历史区块为起点,沿所述历史区块对应的逻辑时钟路径至创世区块所经过的区块数量。
可选地,所述处理模块1103具体用于:
将所述第一总数量与所述第二总数量的比值,作为采样区块均值;
将所述采样区块均值与所述采样时间间隔的比值,作为出块速率。
可选地,所述调整模块1104具体用于:
基于所述出块速率和上一个难度调整周期的出块速率,确定难度调整比例;
将上一次更新的区块生成难度与所述难度调整比例的乘积,作为所述目标区块生成难度。
可选地,还包括难度校验模块1106和共识模块1107:
所述难度校验模块1106具体用于:
基于所述出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度之后,采用所述目标区块生成难度对所述目标区块进行难度校验;
所述共识模块1107具体用于:
在校验通过后,从多个子区块链中,确定所述目标区块所属的目标子区块链,并将所述目标区块添加至所述目标子区块链;
分别从所述多个子区块链中,获得各自对应的有效区块序列,每个有效区块序列包括至少一个有效区块;
基于获得的各个有效区块各自对应的逻辑时钟,对所述各个有效区块进行全局排序,获得全局区块链。
本申请实施例中,在目标区块满足难度调整条件时,从目标区块对应的逻辑时钟路径中,确定与目标区块间隔难度调整周期的第一历史区块。然后沿目标区块的逻辑时钟路径,确定从第一历史区块至目标区块所经过的至少一个候选区块,并获取至少一个候选区块各自对应的采样区块的数量。利用逻辑时钟路径获得不同子区块链的状态信息,从而可以更加准确地进行难度调节。之后再基于各个候选区块的采样区块的总数量、各个候选区块的总数量以及采样时间间隔,对区块生成难度进行调整,从而有效解决在实际网络环境中由于单一子链延伸速度较慢而带来的难度调节滞后的问题。
基于相同的技术构思,本申请实施例提供了一种计算机设备,如图12所示,包括至少一个处理器1201,以及与至少一个处理器连接的存储器1202,本申请实施例中不限定处理器1201与存储器1202之间的具体连接介质,图12 中处理器1201和存储器1202之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,存储器1202存储有可被至少一个处理器1201执行的指令,至少一个处理器1201通过执行存储器1202存储的指令,可以执行上述调整区块生成难度的方法的步骤。
其中,处理器1201是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器1202内的指令以及调用存储在存储器1202内的数据,从而实现调整区块生成难度。可选的,处理器1201可包括一个或多个处理单元,处理器1201可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1201中。在一些实施例中,处理器1201和存储器1202可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器1201可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器1202作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1202可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器1202是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器1202还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于同一发明构思,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行上述调整区块生成难度的方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、 CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (13)
1.一种调整区块生成难度的方法,应用于区块链系统中的任意一个节点,其特征在于,包括:
在目标区块满足难度调整条件时,从所述目标区块对应的难度调整路径中,确定与所述目标区块间隔难度调整周期的第一历史区块,所述难度调整路径为所述目标区块的逻辑时钟路径,所述逻辑时钟路径为以所述目标区块为起点,沿指向最长时钟区块的方向延伸至创世区块的路径,所述目标区块指向的最长时钟区块为节点在生成所述目标区块时监测到的具有最大逻辑时钟的合法区块,其中,区块的逻辑时钟为沿所述区块对应的逻辑时钟路径至创世区块所经过的区块数量,所述难度调整周期为预设时长或预设区块数量;
沿所述难度调整路径,确定从所述第一历史区块至所述目标区块所经过的至少一个候选区块,并获取所述至少一个候选区块各自对应的采样区块的数量,所述至少一个候选区块包括所述第一历史区块;
基于所述至少一个候选区块对应的采样区块的第一总数量、所述至少一个候选区块的第二总数量以及采样时间间隔,确定出块速率;
基于所述出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度。
2.如权利要求1所述的方法,其特征在于,所述获取所述至少一个候选区块各自对应的采样区块的数量,包括:
针对所述至少一个候选区块中的每个候选区块,从区块头中的区块采样信息字段中,获取候选区块对应的采样区块的数量。
3.如权利要求1所述的方法,其特征在于,采用以下方式确定候选区块对应的采样区块:
在生成所述候选区块时,从所述候选区块对应的目标采样路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块;
从所述第二历史区块所属的历史子区块链中,确定所述候选区块对应的采样区块,并将所述采样区块的区块哈希,添加至区块头中的区块采样信息字段。
4.如权利要求3所述的方法,其特征在于,所述目标采样路径为所述候选区块指向的最长时钟区块的父区块路径,所述父区块路径为以所述最长时钟区块为起点,沿所述最长时钟区块所属的子区块链至创世区块的路径;
所述从所述候选区块对应的目标采样路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块,包括:
从所述父区块路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块。
5.如权利要求3所述的方法,其特征在于,所述目标采样路径为所述候选区块的逻辑时钟路径,所述逻辑时钟路径为以所述候选区块为起点,沿指向最长时钟区块的方向延伸至创世区块的路径;
所述从所述候选区块对应的目标采样路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块,包括:
从所述逻辑时钟路径中,确定与所述候选区块间隔采样时间间隔的第二历史区块。
6.如权利要求3所述的方法,其特征在于,所述从所述第二历史区块所属的历史子区块链中,确定所述候选区块对应的采样区块,包括:
将所述第二历史区块所属的历史子区块链中,与所述第二历史区块的区块高度相同的区块以及所述第二历史区块,作为所述候选区块对应的采样区块。
7.如权利要求3所述的方法,其特征在于,所述从所述第二历史区块所属的历史子区块链中,确定所述候选区块对应的采样区块,包括:
将所述第二历史区块所属的历史子区块链中,与所述第二历史区块的逻辑时钟相同的区块以及所述第二历史区块,作为所述候选区块对应的采样区块,所述第二历史区块的逻辑时钟为以所述第二历史区块为起点,沿所述第二历史区块对应的逻辑时钟路径至创世区块所经过的区块数量。
8.如权利要求1所述的方法,其特征在于,所述基于获得的各个采样区块的第一总数量和所述至少一个候选区块的第二总数量以及采样时间间隔,确定出块速率,包括:
将所述第一总数量与所述第二总数量的比值,作为采样区块均值;
将所述采样区块均值与所述采样时间间隔的比值,作为出块速率。
9.如权利要求1所述的方法,其特征在于,所述基于所述出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度,包括:
基于所述出块速率和上一个难度调整周期的出块速率,确定难度调整比例;
将上一次更新的区块生成难度与所述难度调整比例的乘积,作为所述目标区块生成难度。
10.如权利要求1至9任一所述的方法,其特征在于,所述基于所述出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度之后,还包括:
采用所述目标区块生成难度对所述目标区块进行难度校验;
在校验通过后,从多个子区块链中,确定所述目标区块所属的目标子区块链,并将所述目标区块添加至所述目标子区块链;
分别从所述多个子区块链中,获得各自对应的有效区块序列,每个有效区块序列包括至少一个有效区块;
基于获得的各个有效区块各自对应的逻辑时钟,对所述各个有效区块进行全局排序,获得全局区块链。
11.一种调整区块生成难度的装置,应用于区块链系统中的任意一个节点,其特征在于,包括:
定位模块,用于在目标区块满足难度调整条件时,从所述目标区块对应的难度调整路径中,确定与所述目标区块间隔难度调整周期的第一历史区块,所述难度调整路径为所述目标区块的逻辑时钟路径,所述逻辑时钟路径为以所述目标区块为起点,沿指向最长时钟区块的方向延伸至创世区块的路径,所述目标区块指向的最长时钟区块为节点在生成所述目标区块时监测到的具有最大逻辑时钟的合法区块,其中,区块的逻辑时钟为沿所述区块对应的逻辑时钟路径至创世区块所经过的区块数量,所述难度调整周期为预设时长或预设区块数量;
统计模块,用于沿所述难度调整路径,确定从所述第一历史区块至所述目标区块所经过的至少一个候选区块,并获取所述至少一个候选区块各自对应的采样区块的数量,所述至少一个候选区块包括所述第一历史区块;
处理模块,用于基于所述至少一个候选区块对应的采样区块的第一总数量、所述至少一个候选区块的第二总数量以及采样时间间隔,确定出块速率;
调整模块,用于基于所述出块速率,对上一次更新的区块生成难度进行调整,获得目标区块生成难度。
12.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~10任一权利要求所述方法的步骤。
13.一种计算机可读存储介质,其特征在于,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行权利要求1~10任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111277508.2A CN114285860B (zh) | 2021-10-30 | 2021-10-30 | 一种调整区块生成难度的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111277508.2A CN114285860B (zh) | 2021-10-30 | 2021-10-30 | 一种调整区块生成难度的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114285860A CN114285860A (zh) | 2022-04-05 |
CN114285860B true CN114285860B (zh) | 2023-07-07 |
Family
ID=80868747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111277508.2A Active CN114285860B (zh) | 2021-10-30 | 2021-10-30 | 一种调整区块生成难度的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114285860B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107733651A (zh) * | 2017-09-11 | 2018-02-23 | 联动优势科技有限公司 | 一种区块链生成方法、节点及系统 |
CN110096359A (zh) * | 2019-04-15 | 2019-08-06 | 华南理工大学 | 一种快速收敛的区块链工作量证明共识难度调整方法 |
CN111064776A (zh) * | 2019-12-05 | 2020-04-24 | 全链通有限公司 | 区块链中区块的生成方法、设备及存储介质 |
CN111708832A (zh) * | 2020-05-18 | 2020-09-25 | 杜晓楠 | 区块链网络中调整出块难度的方法、计算机介质和区块链网络 |
CN113052596A (zh) * | 2019-12-28 | 2021-06-29 | 中移(成都)信息通信科技有限公司 | 基于区块链的出块方法、装置、设备和介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11082203B2 (en) * | 2017-12-27 | 2021-08-03 | Nokia Solutions And Networks Oy | Method and apparatus for accelerating the blockchain for secure and high throughput applications |
CN110689345B (zh) * | 2019-09-06 | 2022-03-18 | 北京清红微谷技术开发有限责任公司 | 调整区块权重的无许可区块链共识方法、系统、p2p网络 |
-
2021
- 2021-10-30 CN CN202111277508.2A patent/CN114285860B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107733651A (zh) * | 2017-09-11 | 2018-02-23 | 联动优势科技有限公司 | 一种区块链生成方法、节点及系统 |
CN110096359A (zh) * | 2019-04-15 | 2019-08-06 | 华南理工大学 | 一种快速收敛的区块链工作量证明共识难度调整方法 |
CN111064776A (zh) * | 2019-12-05 | 2020-04-24 | 全链通有限公司 | 区块链中区块的生成方法、设备及存储介质 |
CN113052596A (zh) * | 2019-12-28 | 2021-06-29 | 中移(成都)信息通信科技有限公司 | 基于区块链的出块方法、装置、设备和介质 |
CN111708832A (zh) * | 2020-05-18 | 2020-09-25 | 杜晓楠 | 区块链网络中调整出块难度的方法、计算机介质和区块链网络 |
Non-Patent Citations (1)
Title |
---|
区块链技术基础及应用研究综述;马昂 等;《信息安全研究》;第第3卷卷(第第11期期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114285860A (zh) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109785130A (zh) | 区块链随机共识方法、装置、计算机设备和存储介质 | |
US11349824B2 (en) | Block sequencing method and system based on tree-graph structure, and data processing terminal | |
CN112907369B (zh) | 基于区块链的数据共识方法及装置、电子设备、存储介质 | |
US11362832B2 (en) | Distributed proof-of-work for sharded or parallel blockchains | |
CN112508573B (zh) | 一种交易数据处理方法、装置以及计算机设备 | |
US20220292489A1 (en) | Methods and devices for tracking and measuring proof-of-work contributions in a mining pool | |
CN110930254A (zh) | 基于区块链的数据处理方法、装置、终端及介质 | |
CN111143165A (zh) | 一种监控方法及装置 | |
CN115730009A (zh) | 一种区块链交易分配方法及装置 | |
CN112232957A (zh) | 交易共识方法、装置和电子设备 | |
CN112132574B (zh) | 区块链数据校验方法、数据处理方法、装置及设备 | |
CN113609533A (zh) | 一种面向智能电网数据的完整性审计方法 | |
CN112288868A (zh) | 智慧建筑楼宇物联网对象模拟方法及系统 | |
CN114285860B (zh) | 一种调整区块生成难度的方法、装置、设备及存储介质 | |
CN114281888B (zh) | 一种区块链共识方法、装置、设备及存储介质 | |
CN116455974A (zh) | 交易缓存及排序的方法、装置、电子设备和存储介质 | |
WO2023071373A1 (zh) | 一种区块链共识方法、装置、设备及存储介质 | |
CN113094437B (zh) | 一种基于Rsync的区块链状态数据同步方法及系统 | |
CN112395272A (zh) | 通信算法数据库构建方法、分布式机器装置和存储介质 | |
CN112636904A (zh) | 随机数生成与验证方法、装置、电子设备及可读存储介质 | |
CN113872978B (zh) | 一种dns劫持的监测方法、装置及电子设备 | |
CN116722966B (zh) | 一种基于dag预言机网络的高效可信链下数据馈送方法 | |
CN114924617B (zh) | 一种去中心化系统中的时钟同步方法及装置 | |
US20240095730A1 (en) | Externally validated proof of work for appending a block record to a blockchain with a data broker server | |
US20240095251A1 (en) | Externally validated proof of work for appending a block record to a blockchain with a mining node |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |