一种工作量证明的共识方法、装置、设备和存储介质与流程

文档序号:18542915发布日期:2019-08-27 21:24阅读:159来源:国知局
一种工作量证明的共识方法、装置、设备和存储介质与流程

本发明一般涉及区块链技术领域,具体涉及一种工作量证明的共识方法、装置、设备和存储介质。



背景技术:

区块链是由一个个数据区块组成的数据库,具有去中心化、分布式存储、数据不可篡改等特性,可以应用在很多场景。

工作量证明的共识机制是区块链技术的其中一种共识机制,工作量证明机制具有完全去中心化的特点。

然而随着加密货币的火热,挖矿带来了巨大的利润,随之出现了矿场、矿池等集中的生产资源,而生产资源的集中对比特币等依赖工作量证明机制的去中心化区块链网络造成了严重的威胁。



技术实现要素:

鉴于现有技术中的上述缺陷或不足,期望提供一种工作量证明的共识方法、装置、设备和存储介质。

第一方面,本发明提供了一种工作量证明的共识方法,其特征在于,包括:

接收生成节点发送的新的区块,其中,新的区块的区块头字段至少包括记录当前生成节点的ip地址及记录当前所述生成节点的公钥,公钥与用于接收奖励的地址相对应;

对区块头进行公钥校验;

对ip地址进行逻辑校验;

对ip地址的有效性进行校验。

在其中一个实施例中,对区块头进行公钥校验,包括:

利用哈希算法计算公钥的哈希地址;

确定哈希地址是否与用于接收奖励的地址匹配。

在其中一个实施例中,对ip地址进行逻辑校验,包括:

确认ip地址是否在预设周期内仅出现1次。

在其中一个实施例中,对ip地址的有效性进行校验,包括:

在本地生成随机数,将随机数及所述公钥发送至与ip地址对应的生成节点;

接收签名数据,签名数据为生成节点利用公钥所对应的私钥对接收到的随机数进行签名后的数据;

利用公钥对签名数据进行验证。

第二方面,本申请实施例提供了一种工作量证明的共识方法,包括:

生成新的区块,其中,新的区块的区块头字段至少包括记录当前生成节点的ip地址及记录当前生成节点的公钥,公钥与用于接收奖励的地址相对应;

将新的区块发送至验证节点,以便于验证节点对区块头进行公钥校验、对ip地址进行逻辑校验及对ip地址的有效性进行校验。

第三方面,本申请实施例提供了一种工作量证明的共识装置,包括:

接收模块,用于接收生成节点发送的新的区块,其中,新的区块的区块头字段至少包括记录当前生成节点的ip地址及记录当前所述生成节点的公钥,公钥与用于接收奖励的地址相对应;

第一校验模块,用于对区块头进行公钥校验;

第二校验模块,用于对ip地址进行逻辑校验;

第三校验模块,用于对ip地址的有效性进行校验。

在其中一个实施例中,第三校验模块还用于:

在本地生成随机数,将随机数及公钥发送至与ip地址对应的生成节点;

接收签名数据,该签名数据为生成节点利用公钥所对应的私钥对接收到的随机数进行签名后的数据;

利用公钥对签名数据进行验证。

第四方面,本申请实施例提供了一种工作量证明的共识装置,包括:

生成模块,用于生成新的区块,其中,新的区块的区块头字段至少包括记录当前生成节点的ip地址及记录当前生成节点的公钥,公钥与用于接收奖励的地址相对应;

发送模块,用于将新的区块发送至验证节点,以便于验证节点对区块头进行公钥校验、对ip地址进行逻辑校验及对ip地址的有效性进行校验。

第五方面,本申请实施例提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述任一项的工作量证明的共识方法。

第六方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一项的工作量证明的共识方法。

本申请实施例提供的工作量证明的共识方法、装置、设备和存储介质,验证节点接收到的新的区块的区块头字段包括记录当前生成节点的ip地址及记录当前生成节点的公钥,验证节点对接收到的新的区块的区块头进行公钥校验、对ip地址进行逻辑校验、对ip地址的有效性进行校验。本申请实施例利用全球ip地址资源,对矿池集中的生产区块进行一定的制约,减少生产资源的集中对比特币等依赖工作量证明机制的去中心化区块链网络的影响。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为本发明的实施例中一种工作量证明的共识方法的流程图;

图2为本发明的实施例中步骤130的流程图;

图3为本发明的另一实施例中一种工作量证明的共识方法的流程图;

图4为本发明的实施例中一种工作量证明的共识装置的结构示意流程图;

图5为本发明的另一实施例中一种工作量证明的共识装置的结构示意流程图;

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

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

在区块链系统中,每个节点既可以是生成节点也可以是验证节点。当某个生产者对应的节点生产了新的区块,则该生产者对应的节点即为生成节点,而如果某个节点并没有生产新的区块,而该节点是用于验证其他节点发送的区块是否为有效区块时,该节点则为验证节点。

其中,有效区块是指生产者生产的区块计算得到的哈希值小于某一阈值时所对应的区块。对于区块的生产者来书,不仅要生产一个有效区块,而且要把该有效区块尽快发送到网络中,使得全网接受,从而获得收益,则该有效区块成为最终区块。

为了减少生产资源的集中对比特币等依赖工作量证明机制的去中心化区块链网络的影响。提出一种工作量证明的共识方法。

参照图1,其示出了根据本申请一个实施例描述的工作量证明的共识方法的示例性流程图。图1所示的工作量证明的共识方法适用于验证节点。

如图1所示,在步骤110中,接收生成节点发送的新的区块,其中,新的区块的区块头字段至少包括记录当前生成节点的ip地址及记录当前生成节点的公钥,公钥与用于接收奖励的地址相对应。

具体地,验证节点接收生成节点发送的新的区块,用于验证生产者生产的区块是否为有效区块。

一般地,区块包括区块头和区块体。通常情况,区块头字段包括:版本号nversion、上一个区块的哈希值hashprevblock、交易列表的merkle根哈希值hashmerkleroot、当前时间戳ntime、当前挖矿难度nbits、随机数nonce值nnonce。在本实施例中,区块头字段还包括:记录当前生成节点的ip地址ipaddr和记录当前生成节点的公钥publickey,其中,公钥与用于接收奖励的地址相对应,接收奖励的地址是指生成区块的地址,即生成节点的地址。

区块头字段中的nversion、hashprevblock、nbits是不能修改的,生成一个新的区块只能通过修改hashmerkleroot、ntime和nnonce。

验证节点收到新的区块,要对新区块进行有效性校验,有效性校验需要通过以下几方面来进行校验。

首先,验证节点可以计算得到待接收的新的区块的nversion、hashprevblock、nbits,验证节点将自身计算得到的nversion、hashprevblock、nbits与接收到的区块的区块头中相应字段进行比较,如果一致,则进行其他验证,如果不一致,则判定该接收到的区块为无效区块。

其次,根据区块头的字段计算生成的区块的区块头的哈希值,如果哈希值满足nbits的难度要求时,判定该区块为有效区块。

其中,区块头的哈希值满足nbits的难度要求,具体为:

sha256(sha256(nversion,hashprevblock,hashmerkleroot,ntime,nbits,nnonce,publickey,ipaddr)<target

其中,不等式左边为根据区块头的字段计算得到的区块头的哈希值,不等式右边target为根据nbits计算出的一个阈值,计算target为现有技术,这里不再赘述。

另外,验证节点对收到的新的区块的有效性校验包括:如图1所示,

步骤120,对区块头进行公钥校验;

步骤130,对ip地址进行逻辑校验;

步骤140,对ip地址的有效性进行校验。

需要说明的是,在图1中对上述3个的校验用步骤120、步骤130及步骤140进行了标示,但是,并不表示对上述3个进行校验时必须按照此顺序进行校验,上述3个校验中可以对其中任意一个先进行校验,再进行其他的校验。图1中之所以采用步骤120对区块头进行公钥校验、步骤130对ip地址进行逻辑校验、步骤140对ip地址的有效性进行校验这样的顺序,在实际应用中一般采用由易到难的顺序进行校验。

验证节点可以分别通过下述实施例完成上述3个校验。

本实施例提供的工作量证明的共识方法,验证节点接收到的新的区块的区块头字段包括记录当前生成节点的ip地址及记录当前生成节点的公钥,验证节点对接收到的新的区块的区块头进行公钥校验、对ip地址进行逻辑校验、对ip地址的有效性进行校验。本实施例中,区块的区块头字段包含ip地址,并且对ip地址进行逻辑校验和对ip地址的有效性进行校验,即本实施例利用全球ip地址资源有限,对矿池集中生产区块进行一定的制约,减少生产资源的集中对比特币等依赖工作量证明机制的去中心化区块链网络的影响。

在一个实施例中,对区块头进行公钥校验,包括:

利用哈希算法计算公钥的哈希地址;

确定哈希地址是否与用于接收奖励的地址匹配。

具体地,利用哈希算法计算公钥的哈希地址可以为:

a=ripemd160(sha256(k))

其中,k为公钥,a为哈希地址。

其中,接收奖励的地址为生成节点的地址。

如果通过哈希算法计算得到的哈希地址与生成节点的地址匹配,则验证节点继续对ip地址进行逻辑校验或对ip地址的有效性进行校验,如果上述两个校验已经全部完成,则可以判定该区块为有效区块;否则,判定该区块为无效区块,结束校验。

将判定为有效区块的区块尽快发送至网络中,抢占先机,使得全网接受,即使得有效区块变成最终区块,这样生产者就能获得收益。

在一个实施例中,对ip地址进行逻辑校验,包括:

确认ip地址是否在预设周期内仅出现1次。

具体地,预设周期可以根据应用场景和应用需求进行设定,例如可以设定150个区块为一个预设周期。

假设ip地址在预设周期内仅出现1次,则验证节点可以继续对区块头进行公钥校验或对ip地址的有效性进行校验,如果上述两个校验已经全部完成,则可以判断该区块为有效区块;否则,判断该区块为无效区块,结束校验。

同一ip地址在预设周期内仅出现1次,表明在使用pow算法的区块链网络中,同一ip地址不能频繁生产新区块。

如果生产者进行类似矿池的合作式的集中生产区块,就需要安排更多的独立ip地址,而全球独立的ip地址资源很稀缺,就会极大地增加成本。通过验证节点对ip地址进行逻辑校验,可以保证区块头中的ip地址在预设周期内没有出现过,从而可以极大减少生产资源的集中对比特币等依赖工作量证明机制的去中心化区块链网络的影响,即对矿池集中生产区块进行一定的制约。

在一个实施例中,如图2所示,步骤130对ip地址的有效性进行校验,包括:

步骤210,在本地生成随机数,将随机数及公钥发送至与ip地址对应的生成节点;

步骤220,接收签名数据,签名数据为生成节点利用公钥所对应的私钥对接收到的随机数进行签名后的数据;

步骤230,利用公钥对签名数据进行验证。

具体地,生成节点提供签名模块,可以对验证节点发来的数据进行提供签名。

具体地,当验证节点收到生成节点发送的新的区块时,验证节点在本地生成随机数,验证节点将生成的随机数及区块的区块头中记录的公钥发送至区块头中记录的ip地址对应的生成节点。

生成节点利用区块头中记录的公钥所对应的私钥对接收到的随机数进行签名,生成节点将签名后的签名数据再发送至验证节点。

验证节点接收到生成节点发送的签名数据后,验证节点利用区块头中记录的公钥对签名数据进行验证。

如果验证确定提供了正确的签名数据,则验证节点可以继续对区块头进行公钥校验或对ip地址进行逻辑校验,如果上述两个校验已经全部完成,则可以判断该区块为有效区块;否则,判断该区块为无效区块,结束校验。

由于私钥的重要性,矿池不会将私钥交给其它人员管理,这样就限制了区块的生产者一定是ip地址的提供者,如果想要寻求ip地址资源的合作,将会面临私钥暴露的风险。因此,本实施例中利用公钥对公钥所对应的私钥对接收到的随机数进行签名后的数据进行验证,可以极大减少生产资源的集中对比特币等依赖工作量证明机制的去中心化区块链网络的影响,即对矿池集中生产区块进行一定的制约。

参照图3,其示出了根据本申请另一个实施例描述的工作量证明的共识方法的示例性流程图。图3所示的工作量证明的共识方法适用于生成节点。

如图3所示,在步骤310中,生成新的区块,其中,新的区块的区块头字段至少包括记录当前生成节点的ip地址及记录当前生成节点的公钥,公钥与用于接收奖励的地址相对应。

具体地,生成节点生成新的区块。

一般地,区块包括区块头和区块体。通常情况,区块头字段包括:版本号nversion、上一个区块的哈希值hashprevblock、交易列表的merkle根哈希值hashmerkleroot、当前时间戳ntime、当前挖矿难度nbits、随机数nonce值nnonce,区块头字段还包括:记录当前生成节点的ip地址ipaddr和记录当前生成节点的公钥publickey。

区块头字段中的nversion、hashprevblock、nbits是不能修改的,生成一个新的区块只能通过修改hashmerkleroot、ntime和nnonce。

生成的区块需要根据区块头的字段计算区块头的哈希值,如果哈希值满足nbits的难度要求时,该区块才为有效区块,发送至验证节点判断是否为最终区块。

其中,区块头的哈希值满足nbits的难度要求,具体为:

sha256(sha256(nversion,hashprevblock,hashmerkleroot,ntime,nbits,nnonce,publickey,ipaddr)<target

其中,不等式左边为根据区块头的字段计算得到的区块头的哈希值,不等式右边target为根据nbits计算出的一个阈值,其为现有技术,这里不再赘述。

其中,接收奖励的地址是指生产区块的地址,即生成节点的地址。

如图3所示,在步骤320中,将新的区块发送至验证节点,以便于验证节点对区块头进行公钥校验、对ip地址进行逻辑校验及对ip地址的有效性进行校验。

具体地,步骤310中生成节点生成新的区块后,将生成的新的区块发送至验证节点,验证节点对该区块进行验证,如果区块在该验证节点处通过验证,则该区块为有效区块,将该区块尽快发送至网络中,抢占先机,使得全网接受后,加入区块链中,成为最终区块;如果区块在该节点处没有通过验证,则该区块为无效区块。

本实施例提供的工作量证明的共识方法,生成节点生成的新的区块的区块头字段包括记录当前生成节点的ip地址及记录当前生成节点的公钥,生成节点将生成的新的区块发送至验证节点,以便于验证节点对区块头进行公钥校验、对ip地址进行逻辑校验、对ip地址的有效性进行校验。本实施例中,区块的区块头字段包含ip地址,并且区块会发送至验证节点对ip地址进行逻辑校验和对ip地址的有效性进行校验,即本实施例利用全球ip地址资源有限,对矿池集中生产区块进行一定的制约,减少生产资源的集中对比特币等依赖工作量证明机制的去中心化区块链网络的影响。

如图4为本发明实施例提供的工作量证明的共识装置400的结构示意图。如图4所示,该装置可以实现如图1所示的方法,该装置可以包括:

接收模块410,用于接收生成节点发送的新的区块,其中,新的区块的区块头字段至少包括记录当前生成节点的ip地址及记录当前生成节点的公钥,公钥与用于接收奖励的地址相对应;

第一校验模块420,用于对区块头进行公钥校验;

第二校验模块430,用于对ip地址进行逻辑校验;

第三校验模块440,用于对ip地址的有效性进行校验。

可选地,第一校验模型420还用于:

利用哈希算法计算公钥的哈希地址;

确定哈希地址与用于接收奖励的地址是否匹配。

可选地,第二校验模型430还用于:

确认ip地址是否在预设周期内仅出现1次。

可选地,第三校验模块440还用于:

在本地生成随机数,将随机数及公钥发送至与ip地址对应的生成节点;

接收签名数据,签名数据为生成节点利用公钥所对应的私钥对接收到的随机数进行签名后的数据;

利用公钥对签名数据进行验证。

本实施例提供的工作量证明的共识装置,可以执行上述方法的实施例,其实现原理和技术效果类似,在此不再赘述。

如图5为本发明另一个实施例提供的工作量证明的共识装置500的结构示意图。如图5所示,该装置可以实现如图3所示的方法,该装置可以包括:

生成模块510,用于生成新的区块,其中,新的区块的区块头字段至少包括记录当前生成节点的ip地址及记录当前生成节点的公钥,公钥与用于接收奖励的地址相对应;

发送模块520,用于将新的区块发送至验证节点,以便于验证节点对区块头进行公钥校验、对ip地址进行逻辑校验及对ip地址的有效性进行校验。

本实施例提供的工作量证明的共识装置,可以执行上述方法的实施例,其实现原理和技术效果类似,在此不再赘述。

图6为本发明实施例提供的一种计算机设备的结构示意图。如图6所示,示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统600的结构示意图。

如图6所示,计算机系统600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有系统600操作所需的各种程序和数据。cpu601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口606也连接至总线604。

以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口606。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。

特别地,根据本公开的实施例,上文参考图1描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行上述工作量证明的共识方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中。这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中前述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,前述程序被一个或者一个以上的处理器用来执行描述于本申请的工作量证明的共识方法。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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