一种区块链生成方法、节点及系统与流程

文档序号:13768976阅读:299来源:国知局

本发明涉及数据处理技术领域,尤其涉及一种区块链生成方法、节点及系统。



背景技术:

区块链系统自诞生以来以其特有的无中心、难改写等特点被广泛应用于多种数据处理场合,其通过共识机制来解决“拜占庭故障”问题,即恶意节点的存在问题,从而实现容错功能。具体来说,通过共识机制选择出系统中绝大多数节点认为安全的一个节点作为记账节点以实现大概率上排除系统中恶意节点对其它节点的影响。

基于“资源”的共识算法是区块链共识算法中一种较为常见的类型特征,如工作证明(proofofwork,pow)共识算法基于各节点的算力资源,又例如股权证明(proofofstake,pos)共识算法基于各节点的股权资源,这种基于“资源”的共识算法尤其适用于采用广域网、节点数量众多的区块链系统,如公有区块链系统,又例如联盟区块链系统。

然而,采用基于“资源”的共识算法会有出现区块链系统中的记账权被某个节点垄断的情况,即区块链系统中的某个节点拥有远远高于其它节点的“资源”,使得这个节点被反复确认为记账节点,当这个节点为恶意节点时,共识算法便失去了容错的效果。



技术实现要素:

本发明提供一种区块链生成方法、装置及系统,用以解决区块链系统中记账权被垄断的问题。

本发明实施例提供一种区块链生成方法,适用于包括m个节点的区块链系统,m大于等于3,针对所述m个节点中的任一节点,包括:

获取所述节点的本地区块链中n个区块的生成节点信息;n大于等于1;

根据所述n个区块中所述节点作为生成节点的统计结果确定所述节点的难度目标;所述难度目标用于指示所述节点获取所述区块链系统的记账权的难度;

构建新区块,所述新区块的区块头包括所述新区块的父区块的区块头哈希值、随机数和所述难度目标;

调整所述随机数直至满足所述难度目标,或,调整所述随机数直至所述节点接收到来自其它节点的新区块广播,将所述区块链系统确定的新区块加入所述本地区块链。

可选的,所述新区块中还包括签名信息集;所述签名信息集包括所述节点的公钥信息;

获取所述节点的本地区块链中n个区块的生成节点信息,包括:

获取所述节点的本地区块链中最新的n个区块;

根据所述n个区块中各区块的签名信息集所包括的公钥信息,获取所述n个区块中每一个区块的生成节点信息。

可选的,所述签名信息集中还包括区块头签名值;所述区块头签名值是利用所述节点的私钥信息对所述区块头进行签名后获得的;

调整所述随机数直至满足所述难度目标,包括:

调整所述随机数;

根据调整后的所述随机数更新所述区块头签名值;

确认所述区块头签名值是否满足所述难度目标;

若不满足,则返回调整所述随机数的步骤直至所述区块头签名值满足所述难度目标。

可选的,将所述区块链系统确定的新区块加入所述本地区块链,包括:

调整所述随机数直至所述节点接收到来自其它节点的新区块广播后,确定所述新区块广播中的新区块的生成节点;

根据所述新区块广播中的新区块的生成节点在所述n个区块的生成节点信息中的统计情况,确定所述新区块广播中的新区块的生成节点的计算难度目标;

在所述新区块广播中的新区块的区块头中的难度目标满足所述计算难度目标时,保存所述新接收区块。

可选的,根据所述n个区块中所述节点作为生成节点的统计结果确定所述节点的难度目标,包括:

根据所述n个区块中所述节点作为生成节点的统计结果确定所述节点作为生成节点的频率,和/或,所述节点连续作为生成节点的次数;

根据所述节点作为生成节点的频率,和/或,所述节点连续作为生成节点的次数确定所述节点的难度目标;所述节点作为生成节点的频率和所述节点连续作为生成节点的次数与所述难度目标所对应的难度正相关。

本发明实施例提供一种区块链节点,适用于包括m个节点的区块链系统,m大于等于3,包括:收发单元和处理单元;

所述处理单元,用于获取本地区块链中n个区块的生成节点信息;n大于等于1;

所述处理单元,还用于根据所述n个区块中所述节点作为生成节点的统计结果确定所述节点的难度目标;所述难度目标用于指示所述节点获取所述区块链系统的记账权的难度;

所述处理单元,还用于构建新区块,所述新区块的区块头包括所述新区块的父区块的区块头哈希值、随机数和所述难度目标;

所述处理单元,还用于调整所述随机数直至满足所述难度目标,或,调整所述随机数直至所述收发单元接收到来自其它节点的新区块广播,将所述区块链系统确定的新区块加入所述本地区块链。

可选的,所述新区块中还包括签名信息集;所述签名信息集包括所述节点的公钥信息;

所述处理单元,具体用于:

获取本地区块链中最新的n个区块;

根据所述n个区块中各区块的签名信息集所包括的公钥信息,获取所述n个区块中每一个区块的生成节点信息。

可选的,所述签名信息集中还包括区块头签名值;所述区块头签名值是利用所述节点的私钥信息对所述区块头进行签名后获得的;

所述处理单元,具体用于:

调整所述随机数;

根据调整后的所述随机数更新所述区块头签名值;

确认所述区块头签名值是否满足所述难度目标;

若不满足,则返回调整所述随机数的步骤直至所述区块头签名值满足所述难度目标。

可选的,所述处理单元,具体用于:

调整所述随机数直至所述收发单元接收到来自其它节点的新区块广播后,确定所述新区块广播中的新区块的生成节点;

根据所述新区块广播中的新区块的生成节点在所述n个区块的生成节点信息中的统计情况,确定所述新区块广播中的新区块的生成节点的计算难度目标;

在所述新区块广播中的新区块的区块头中的难度目标满足所述计算难度目标时,保存所述新接收区块。

可选的,所述处理单元具体用于:

根据所述n个区块中所述节点作为生成节点的统计结果确定所述节点作为生成节点的频率,和/或,所述节点连续作为生成节点的次数;

根据所述节点作为生成节点的频率,和/或,所述节点连续作为生成节点的次数确定所述节点的难度目标;所述节点作为生成节点的频率和所述节点连续作为生成节点的次数与所述难度目标所对应的难度正相关。

本发明实施例提供一种区块链系统,包括上述任一项所述的区块链节点。

本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述任一项所述的方法。

本发明实施例提供一种计算设备,包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述任一项所述的方法。

综上所述,本发明实施例提供一种区块链生成方法、节点及系统,其中,区块链生成方法适用于包括m个节点的区块链系统,m大于等于3,针对所述m个节点中的任一节点,该方法包括:获取节点的本地区块链中n个区块的生成节点信息;根据n个区块中节点作为生成节点的统计结果确定节点的难度目标;难度目标用于指示节点获取区块链系统的记账权的难度;构建新区块,新区块的区块头包括新区块的父区块的区块头哈希值、随机数和难度目标;调整随机数直至满足难度目标,或,调整随机数直至节点接收到来自其它节点的新区块广播,将区块链系统确定的新区块加入本地区块链。在本发明实施例所提供的区块链生成方法中,每一个节点的难度目标与本节点作为生成节点的统计结果相关,也就是说每一个节点的难度目标都可以不同,本发明实施例所提供的区块链生成方法可以根据节点作为生成节点的统计结果动态调整节点的难度目标,而难度目标又可以指示节点获取区块链系统的记账权的难度,从而实现了根据节点作为生成节点的统计结果对节点获取记账权的难度的动态调整,因此能够解决区块链系统中记账权被垄断的问题。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种可行的区块链系统架构示意图;

图2为本发明实施例提供的一种区块链生成方法流程示意图;

图3为本发明实施例提供的一种两个区块对应同一个父区块的区块链结构示意图;

图4为本发明实施例提供的一种新区块验证流程示意图;

图5为本发明实施例提供的一种区块链节点结构示意图;

图6为本发明实施例提供的一种计算设备结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例提供一种区块链系统,包括m个节点,m大于等于3。其中,m个节点通过对等网络(peertopeer,p2p)动态组网,形成一个“去中心化”的系统。图1为本发明实施例提供的一种可行的区块链系统架构示意图,如图1所示,区块链系统中包括节点0、节点1、节点2、节点3和节点4,这五个节点之间互为对等节点,通过p2p动态组网构成一个去中心化的系统。图1中的直线表示各节点之间的数据传输关系,以节点2为例,其广播消息可由节点0、节点1和节点3接收,并通过节点0和节点3进一步广播至节点4,从而将广播消息传递至系统中的所有节点。

应理解,本发明实施例所提供的区块链系统中的m个节点为区块链系统中的对等节点,在具体实施过程中,区块链系统也可能存在一些非对等节点,这种包含了非对等节点的区块链系统也适用于本发明实施例所提供的技术方案,也应包含于本发明实施例中。为了便于描述,本发明实施例在未作特别说明的情况下,以下所述节点皆为对等节点,之后不再赘述。

基于上述区块链系统架构,本发明实施例提供一种区块链生成方法,如图2所示。图2为本发明实施例提供的一种区块链生成方法流程示意图,其针对区块链系统的m个节点中的任一节点,包括以下步骤:

s201:获取节点的本地区块链中n个区块的生成节点信息;n大于等于1。

s202:根据n个区块中节点作为生成节点的统计结果确定节点的难度目标;难度目标用于指示节点获取区块链系统的记账权的难度。

s203:构建新区块,新区块的区块头包括新区块的父区块的区块头哈希值、随机数和难度目标。

s204:调整随机数直至满足难度目标,或,调整随机数直至节点接收到来自其它节点的新区块广播,将区块链系统确定的新区块加入本地区块链。

区块链系统中,每一个节点都具有各自的本地区块链,区块链中每个区块通过哈希指针(父区块的区块头哈希值)串在一起,形成链式结构。在s201中,n个区块的生成节点指的是构造该区块并将该区块向区块链系统广播的节点,即该节点获得了对于该区块的记账权。可选的,n个区块是本地区块链中最新加入且连续的n个区块,采用最新加入的区块进行后续计算,所获得的结果对区块链系统的当前情况具有更好的针对性。

在s202中,n个区块中节点作为生成节点的统计结果可以反映该节点历史获取区块链系统记账权的情况,根据n个区块中节点作为生成节点的统计结果计算获得的难度目标可以指示节点获取区块链系统的记账权的难度,从而实现了根据节点作为生成节点的统计结果对节点获取记账权的难度的动态调整,因此本发明实施例所分别为每个节点获得的难度目标能够解决区块链系统中记账权被垄断的问题。

在s203中,m个节点中的每一个节点都会进行新区块构建。新区块的区块头中包括新区块的父区块的区块头哈希值,用以保证区块链的链式结构。由上述论述已知,每一个节点中都会存在本地区块链。理论上讲,区块链系统中m个节点应具有相同的本地区块链,但实际的区块链系统中,由于各节点之间接收新区块广播的时间并不一致,不同节点的算力也有所不同,使得本地区块链中可能会存在多个区块对应同一个父区块的情况,如图3所示,为本发明实施例提供的一种两个区块对应同一个父区块的区块链结构示意图。图3中的箭头表示哈希指针(父区块的区块头哈希值),箭头从区块1指向区块2,表示的是区块2的区块头中包括区块1的区块头哈希值,其它以此类推。在图3所示的区块链中,区块4和区块8的区块头中都包括区块3的区块头哈希值,在节点构造新区块时,根据“最长链规则”选取最长链中最新加入的区块作为新区块的父区块,即选择区块7作为该节点所构造的新区块的父区块,新区块的区块头中包括区块7的区块头哈希值。

新区块的区块头中,还包括随机数和难度目标,用于在接下来的s204中,区块链系统通过共识算法从m个节点构造的新区块中确定可以加入区块链的新区块。

可选的,新区块的区块头中还包括区块链系统版本号,用于跟踪系统软件、协议、算法的更新。可选的,新区块的区块头中还包括默克尔(merkle)根哈希值,merkle根哈希值是根据新区块的区块体中所记录的数据计算获得的,可用于对数据的验证。可选的,新区块的区块头中还包括时间戳,用于记录该区块产生的近似时间。

在s204中,每一个节点在构建好新区块中除随机数以外的其它部分后,开始不断尝试不同取值的随机数,随机数的改变将直接导致新区块的区块头哈希值的变化,当任一区块的区块头哈希值率先满足难度目标时,该节点保存其构建的新区块,并将该新区块通过新区块广播发送给区块链系统中的其它节点。此外,在该节点构建新区块的过程中也有可能收到其它节点发送来的新区块广播,此时,该节点停止构建新区块,并保存新区块广播中的新区块。当然,节点在收到其它节点的新区块广播后,并不会立即接受新区块广播中的新区块,一般会对其进行一定的验证,当验证通过后,才会将新区块广播中的新区块加入本地区块链。

在本发明实施例所提供的区块链生成方法中,每一个节点的难度目标与本节点作为生成节点的统计结果相关,也就是说每一个节点的难度目标都可以不同,本发明实施例所提供的区块链生成方法可以根据节点作为生成节点的统计结果动态调整节点的难度目标,而难度目标又可以指示节点获取区块链系统的记账权的难度,从而实现了根据节点作为生成节点的统计结果对节点获取记账权的难度的动态调整,因此能够解决区块链系统中记账权被垄断的问题。

在上述s201中,节点需要获取本地区块链中n个区块的生成节点信息。具体实施过程中,节点可以特地增加对本地区块链中每个区块的生成节点的记录,如本地区块链中每增加一个区块,并在记录中增加一条该区块和该区块的生成节点的记录。可选的,本发明实施例还提供一种更为便捷的方式。在s202所构建的新区块,也即区块链的各区块中,还包括签名信息集;签名信息集包括节点的公钥信息,此时可采用以下方式获取节点的本地区块链中n个区块的生成节点信息,包括:获取节点的本地区块链中最新的n个区块;根据n个区块中各区块的签名信息集所包括的公钥信息,获取n个区块中每一个区块的生成节点信息。当本地区块链的各区块中包含各自生成节点的公钥信息时,便无需再单独记录各区块及其生成节点,只需遍历各个区块的区块头,便可直接获得n个区块的生成节点信息。

可选的,签名信息集中还包括区块头签名值;区块头签名值是利用节点的私钥信息对区块头进行签名后获得的。在s204中,节点调整随机数直至满足难度目标,包括:调整随机数;根据调整后的随机数更新区块头签名值;确认区块头签名值是否满足难度目标;若不满足,则返回调整随机数的步骤直至区块头签名值满足难度目标。其中,利用节点的私钥信息对区块头进行签名包括先计算区块头的哈希值,之后,利用节点的私钥对区块头的哈希值加密。与现有技术中直接判断调整随机数后的区块头哈希值是否满足难度目标相比,本发明实施例中的判断过程更加复杂,可以增加设计“专用矿机”的难度,从而使各个节点之间更加公平。而且,由于节点一般不会将私钥信息告知其它节点,因此也就无法使用“外部矿池”分散该节点的计算任务,进一步增加了各个节点之间的公平。此外,接收到新区块广播的节点还可以采用签名信息集中的公钥信息对区块头签名值进行验证,防止非法节点伪造广播消息,从而提高区块链系统的安全性。应理解,利用区块头签名值判断新区块是否满足难度目标的实现方式既可以与本发明实施例中其它实施例结合实施,也可以独立实施应用于其它区块链生成方法中,都应包含于本发明实施例中。

在节点构建新区块的过程中可能会收到其它节点的新区块广播,此时节点需对新区块广播中的新区块进行验证。图4为本发明实施例提供的一种新区块验证流程示意图,如图4所示,包括以下步骤:

s401:收到新区块广播,获取新区块广播中的新区块;

s402:获取新区块签名信息集中的公钥信息和区块头签名值,利用公钥信息验证区块头签名值是否有效;若是,则执行s403;若否,则执行s407;

s403:获取新区块区块头中的难度目标,验证新区块的区块头签名值是否满足难度目标;若是,则执行s404;若否,则执行s407;

s404:获取新区块生成节点的计算难度目标;

s405:判断区块头签名值是否满足计算难度目标;若是,则执行s406;若否,则执行s407;

s406:确认新区块为有效区块;

s407:确认新区块为无效区块。

应理解,以上s402至s405之间并没有严格的先后顺序,可根据实际情况调整顺序依次或同时进行,也可根据实际情况增减部分步骤。

可选的,在s404中,可以根据以下方式获取新区块生成节点的计算难度目标,包括:根据新区块广播中的新区块的生成节点在n个区块的生成节点信息中的统计情况,确定新区块广播中的新区块的生成节点的计算难度目标。节点对于接收到的新区块,采用与构建新区块时相同的难度目标计算方式重新计算接收到的新区块的生成节点的难度目标,这是为了防止接收到的新区块的生成节点伪造了一个较低的难度目标从而使自身构建的新区块可以满足难度目标的要求,因此节点在收到新区块广播后,需要重新计算接收到的新区块的生成节点的难度目标。

在s406确认新区块广播中的新区块为有效区块之后,节点将该新区块保存至本地区块链。

可选的,节点可通过以下方式计算难度目标,包括:根据n个区块中节点作为生成节点的统计结果确定节点作为生成节点的频率,和/或,节点作为生成节点的次数;根据节点作为生成节点的频率,和/或,节点连续作为生成节点的次数确定节点的难度目标;节点作为生成节点的频率和节点连续作为生成节点的次数与难度目标所对应的难度正相关。反应在区块链系统记账权的分配上,便是:一方面,在由n个区块所构成的一个周期中,连续记账越多的节点,下次获得记账权就越难,反之,则越容易,这样可以避免某个节点依靠高算力长期垄断记账权;另一方面,在由n个区块所构成的一个周期中,记账次数越多的节点,下次获得记账权就越难,反之,则越容易,这样可以避免多个节点联合垄断记账权。

可选的,计算难度目标时,还可以引入区块链系统产生区块的平均间隔时间t0,以保持区块链系统在一较为平均的时间间隔内产生新区块。

可选的,先根据n个区块中节点作为生成节点的统计结果获取节点的难度目标值,再对难度目标值进行变换(压缩),获取占据更少比特位的难度目标,以节约区块链系统的存储空间。相应的,在判断是否满足难度目标时,也需先将难度目标转换为难度目标值后,再根据难度目标值的大小对比进行判断。本发明实施例提供一种可行的由难度目标变换难度目标值的方式,其中,难度目标为4个字节,第一个字节v1用来计算左移的位数,后三个字节v3记录数值,难度目标和难度目标值满足如公式一所示的关系。

其中,y表示难度目标值。假设区块头中的难度目标为0x1d00ffff,则根据公式一可计算获得该难度目标所对应的难度目标值为0x00000000ffff0000000000000000000000000000000000000000000000000000,难度目标值越小,意味着节点获取记账权的难度越高。

本发明实施例提供一种具体的获取难度目标的可行方式。首先,预设每n个区块为一个周期,预设新区块的生成时间t0。

获取最新的n个区块的平均难度值,包括:获取最新的n个区块的生成节点信息和n个区块的难度目标;根据n个区块的难度目标计算获得n个区块的难度目标值x1,x2,…,xn;根据n个区块的难度目标值,获取平均难度值x=sum(x1,x2,…,xn)/n。

获取最新的n个区块的平均出块时间t=(t2-t1)/(n-1),其中,t1为当前周期中最早一个区块的产生时间,可根据该区块的时间戳确定,t2为当前周期中最后一个区块的产生时间,可根据该区块的时间戳确定。

计算节点作为生成节点的频率,即一个周期内作为生成节点的次数v=sum(v1,v2,…,vn),其中v1…vn表示该节点是否为对应区块的生成节点,若是,则取值为1,否则取值为0。

获取平均记账次数w=n/c,其中c表示最近n个区块中成为生成节点的节点数目。

在v>0时,获取难度目标值y=x×(t/t0)×(w/v);在v=0时,获取难度目标值y=x×(t/t0)×1。

举例说明,假设n设置为100,预设新区块的生成时间t0为10分钟。

在最近的一个周期内新区块平均生成时间t为5分钟,本周期有50个节点曾经作为生成节点,c=50,w=2,而当前节点在这100个区块中共16次作为记账节点,v=16,则计算可得当前节点的难度目标值y=x×(t/t0)×(w/v)=x*5/10*2/16=x/16。

假设,此时100个区块的平均难度目标值为x=0x00000000ffff0000000000000000000000000000000000000000000000000000,则计算可得当前节点的难度目标值为0x000000000ffff000000000000000000000000000000000000000000000000000。之后,将难度目标值转化成难度目标为:0x1c0ffff0,详细计算过程如下:v3=0x0ffff0,由原难度目标值左移200个bit;v1标识左移的位数,v1=200/8+3=25+3=28=0x1c,则nbits=0x1c0ffff0。

本发明实施例还提供另一种可行的实现方式,能够更加高效地获取难度目标,包括:按固定周期为区块链系统中的每个节点分配相同的基准难度d,之后,每个节点在构建新区块时以基准难度d为基础分别获取目标难度。其中,固定周期的周期长度与预设周期相同,区别在于固定周期所包含的n个区块可以不是最新的n个区块。例如,n=100时,在构建区块高度为121的新区块时,当前固定周期对应的n个区块为区块高度101-200的区块,而当前预设周期所对应的n个区块为区块高度21-120的区块。

具体包括以下步骤:

步骤一:按固定周期为区块链系统中的每个节点分配相同的基准难度d。

d=x×(t/t0),其中x为前一个固定周期中n个区块的平均难度值,t为前一个固定周期中的平均出块时间,t0为预设的新区块出块时间。

步骤二:每个节点在构建新区块时以基准难度d为基础分别获取目标难度。

针对每个节点,计算节点权重e。首先,计算节点作为生成节点的频率,即一个预设周期内作为生成节点的次数v=sum(v1,v2,…,vn),其中v1…vn表示该节点是否为对应区块的生成节点,若是,则取值为1,否则取值为0。

获取平均记账次数w=n/c,其中c表示最新的n个区块中成为生成节点的节点数目。

在v>w时,e=w/v,获取难度目标值y=d×(w/v);

在v<=w时,e=1,获取难度目标值y=d。

以一具体实例说明:

假设区块链系统预设周期长度n=100,最新区块的区块高度h=250,预设新区块出块时间t0=60。

步骤一:获取基准难度d。上一个固定周期(100-200)的平均难度值为x,上一个固定周期的平均出块时间t=(t(200)–t(101))/(100-1),假设t为30秒。计算基准难度d=x×(t/t0)=x×(30/60)=x/2,t(200)为区块高度200的区块的出块时的当前时间,可根据该区块的时间戳获得,t(101)为区块高度101的区块的出块时的当前时间,可根据该区块的时间戳获得。

步骤二:获取节点难度目标值y。首先,获取节点的节点权重e,节点权重e根据高度150-250的区块来计算。假设高度150-250的区块中共对应有50个生成节点,即共50个节点曾经获得记账权并参与记账,则记账节点数目c=50,每节点平均记账次数w=n/50=2。假设该节点在预设周期中的实际记账次数v=sum(v151,v152,…,v250)=16,则节点权重e=w/v=2/16=1/8。从而获得节点难度目标值y=x/2×1/8=x/16,表示该节点的难度相较于上一个固定周期的平均难度提高了16倍。假设,x=0x00000000ffff0000000000000000000000000000000000000000000000000000,则新的难度目标值y=x×(t/t0)×(w/v)=x*5/10*2/16=x/16=0x00000000ffff0000000000000000000000000000000000000000000000000000/16=

0x000000000ffff000000000000000000000000000000000000000000000000000,之后,转化成难度目标:0x1c0ffff0。

基于相同的技术构思,一种区块链节点,适用于包括m个节点的区块链系统,m大于等于3,该区块链节点可以实现上述任一实施例所提供的区块链生成方法。图5为本发明实施例提供的一种区块链节点结构示意图,如图5所示,节点500包括收发单元501和处理单元502,其中:

处理单元502,用于获取本地区块链中n个区块的生成节点信息;n大于等于1;

处理单元502,还用于根据n个区块中节点作为生成节点的统计结果确定节点的难度目标;难度目标用于指示节点获取区块链系统的记账权的难度;

处理单元502,还用于构建新区块,新区块的区块头包括新区块的父区块的区块头哈希值、随机数和难度目标;

处理单元502,还用于调整随机数直至满足难度目标,或,调整随机数直至收发单元501接收到来自其它节点的新区块广播,将区块链系统确定的新区块加入本地区块链。

可选的,新区块中还包括签名信息集;签名信息集包括节点的公钥信息;

处理单元502,具体用于:

获取本地区块链中最新的n个区块;

根据n个区块中各区块的签名信息集所包括的公钥信息,获取n个区块中每一个区块的生成节点信息。

可选的,签名信息集中还包括区块头签名值;区块头签名值是利用节点的私钥信息对区块头进行签名后获得的;

处理单元502,具体用于:

调整随机数;

根据调整后的随机数更新区块头签名值;

确认区块头签名值是否满足难度目标;

若不满足,则返回调整随机数的步骤直至区块头签名值满足难度目标。

可选的,处理单元502,具体用于:

调整随机数直至收发单元501接收到来自其它节点的新区块广播后,确定新区块广播中的新区块的生成节点;

根据新区块广播中的新区块的生成节点在n个区块的生成节点信息中的统计情况,确定新区块广播中的新区块的生成节点的计算难度目标;

在新区块广播中的新区块的区块头中的难度目标满足计算难度目标时,保存新接收区块。

可选的,处理单元502具体用于:

根据n个区块中节点作为生成节点的统计结果确定节点作为生成节点的频率,和/或,节点连续作为生成节点的次数;

根据节点作为生成节点的频率,和/或,节点作为生成节点的次数确定节点的难度目标;节点作为生成节点的频率和节点连续作为生成节点的次数与难度目标所对应的难度正相关。

基于相同的技术构思,本发明实施例还提供一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(personaldigitalassistant,pda)等。如图6所示,为本发明实施例提供的一种计算设备结构示意图,该计算设备可以包括中央处理器601(centerprocessingunit,cpu)、存储器602、输入设备603、输出设备604等,输入设备603可以包括键盘、鼠标、触摸屏等,输出设备604可以包括显示设备,如液晶显示器(liquidcrystaldisplay,lcd)、阴极射线管(cathoderaytube,crt)等。

存储器602可以包括只读存储器(rom)和随机存取存储器(ram),并向处理器提供存储器中存储的程序指令和数据。在本发明实施例中,存储器可以用于存储本发明实施例所提供的区块链生成方法的程序,处理器通过调用存储器存储的程序指令,按照获得的程序指令执行上述任一实施例提供的区块链生成方法。

基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,用于存储为上述计算设备所用的计算机程序指令,其包含用于执行上述任一实施例提供的区块链生成方法的程序。

所述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nandflash)、固态硬盘(ssd))等。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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