区块链共识方法、装置、设备及计算机可读存储介质与流程

文档序号:17788094发布日期:2019-05-31 19:42阅读:175来源:国知局
区块链共识方法、装置、设备及计算机可读存储介质与流程

本发明涉及区块链领域,尤其涉及一种区块链共识方法、装置、设备及计算机可读存储介质。



背景技术:

区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。

共识机制是区块链的一个核心特征,是保证区块链系统在分布式架构下的一致性方案。目前主流的也有好多种共识算法:工作量证明(proofofwork,简称pow)、权益证明(proofofstake,简称pos)、授权股权证明机制(delegatedproofofstake,简称dpos)、实用拜占庭容错(practicalbyzantinefaulttolerance,简称pbft)等等。举例来说,pow依赖机器进行数学运算来获取记账权,资源消耗相比其他共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错。pos的主要思想是节点记账权的获得难度与节点持有的权益成反比,相对于pow,一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算竞争获取记账权的方式,可监管性弱。该共识机制容错性和pow相同。它是pow的一种升级共识机制,根据每个节点所占代币的比例和时间,等比例的降低挖矿难度,从而加快找随机数的速度。dpos通过选举若干代理人,由代理人验证和记账。其合规监管、性能、资源消耗和容错性与pos相似。类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。

但是,采用上述方法进行区块链共识时,即使其他见证人收到了目前的新区块,也无法对该新区块进行确认,需要等待轮到自己出块时,才能通过生产区块来确认之前的区块,新区块的确认需要45秒时间,效率较低。



技术实现要素:

本发明提供一种区块链共识方法、装置、设备及计算机可读存储介质,用于解决现有的区块链共识机制新区块确认效率较低的技术问题。

本发明的第一个方面是提供一种区块链共识方法,包括:

接收主节点发起的共识请求,所述共识请求是所述主节点通过自身的私钥签名后广播至区块链中的,其中,各主节点连续生产预设数量的区块;

通过预存的主节点的公钥对所述共识请求进行验证,并根据验证结果发送审核信息,所述审核信息包括确认信息以及怀疑信息;

若检测到确认信息的数量超过预设的阈值,则根据所述共识请求生成新的区块。

本发明的另一个方面是提供一种区块链共识装置,包括:

共识请求接收模块,用于接收主节点发起的共识请求,所述共识请求是所述主节点通过自身的私钥签名后广播至区块链中的,其中,各主节点连续生产预设数量的区块;

第一验证模块,用于通过预存的主节点的公钥对所述共识请求进行验证,并根据验证结果发送审核信息,所述审核信息包括确认信息以及怀疑信息;

生成模块,用于若检测到确认信息的数量超过预设的阈值,则根据所述共识请求生成新的区块。

本发明的又一个方面是提供一种区块链共识设备,包括:存储器,处理器;

存储器;用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为由所述处理器执行如上述的区块链共识方法。

本发明的又一个方面是提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述的区块链共识法。

本发明提供的区块链共识方法、装置、设备及计算机可读存储介质,通过接收主节点发起的共识请求,所述共识请求是所述主节点通过自身的私钥签名后广播至区块链中的,其中,各主节点连续生产预设数量的区块;通过预存的主节点的公钥对所述共识请求进行验证,并根据验证结果发送审核信息,所述审核信息包括确认信息以及怀疑信息;若检测到确认信息的数量超过预设的阈值,则根据所述共识请求生成新的区块。通过接收到共识请求后立即根据该共识请求进行审核,当确认信息超过预设的阈值时进行出块,从而能够提高区块生成的效率。

附图说明

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

图1为本发明实施例一提供的区块链共识方法的流程示意图;

图2为本发明实施例二提供的区块链共识方法的流程示意图;

图3为本发明实施例三提供的区块链共识方法的流程示意图;

图4为本发明实施例四提供的区块链共识方法的流程示意图;

图5为本发明实施例五提供的区块链共识方法的流程示意图;

图6为本发明实施例六提供的区块链共识装置的结构示意图;

图7为本发明实施例七提供的区块链共识设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例所获得的所有其他实施例,都属于本发明保护的范围。

共识机制是区块链的一个核心特征,是保证区块链系统在分布式架构下的一致性方案。目前主流的也有好多种共识算法:工作量证明(proofofwork,简称pow)、权益证明(proofofstake,简称pos)、授权股权证明机制(delegatedproofofstake,简称dpos)、实用拜占庭容错(practicalbyzantinefaulttolerance,简称pbft)等等。举例来说,pow依赖机器进行数学运算来获取记账权,资源消耗相比其他共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错。pos的主要思想是节点记账权的获得难度与节点持有的权益成反比,相对于pow,一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算竞争获取记账权的方式,可监管性弱。该共识机制容错性和pow相同。它是pow的一种升级共识机制,根据每个节点所占代币的比例和时间,等比例的降低挖矿难度,从而加快找随机数的速度。dpos通过选举若干代理人,由代理人验证和记账。其合规监管、性能、资源消耗和容错性与pos相似。类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。但是,采用上述方法进行区块链共识时,即使其他见证人收到了目前的新区块,也无法对该新区块进行确认,需要等待轮到自己出块时,才能通过生产区块来确认之前的区块,新区块的确认需要45秒时间,效率较低。为了解决上述技术问题,本发明提供一种区块链共识方法、装置、设备及计算机可读存储介质。

需要说明的是,本申请提供区块链共识方法、装置、设备及计算机可读存储介质可运用在任意一种区块链共识的场景中。

图1为本发明实施例一提供的区块链共识方法的流程示意图,如图1所示,所述方法包括:

步骤101、接收主节点发起的共识请求,所述共识请求是所述主节点通过自身的私钥签名后广播至区块链中的,其中,各主节点连续生产预设数量的区块;

步骤102、通过预存的主节点的公钥对所述共识请求进行验证,并根据验证结果发送审核信息,所述审核信息包括确认信息以及怀疑信息;

步骤103、若检测到确认信息的数量超过预设的阈值,则根据所述共识请求生成新的区块。

在本实施例中,当主节点想要生成新区块时,可以发起共识请求,并将改共识请求通过主节点自身的私钥进行加密,将加密后的共识请求广播至区块链中,从而区块链中的全部其他节点均能够接收到该共识信息。相应地,区块链中除主节点以外的节点可以接收该共识请求,为了提高区块链的出块效率,在接收到该共识请求既可以对该共识请求进行审核。为了保证该共识请求的合法性,可以通过预设的主节点的公钥对该共识请求进行验证,并根据验证结果发送审核信息,其中,审核信息包括确认信息以及怀疑信息,将该审核信息广播至区块链中,以使区块链中其他全部节点均能够接收到该审核信息。相应地,若检测到当前接收到的确认信息的数量超过预设的阈值,其中,该预设的阈值可以根据实际情况进行设置,举例来说,其可以为区块链中全部节点的三分之二。若检测到当前接收到的确认信息的数量超过预设的阈值,则表征区块链中大部分节点都对该共识请求表示确认,即达成共识,此时,可以根据该共识请求生成新的区块。需要说明的是,网络延迟往往会影响出块速度,举例来说,0.5秒的确认时间往往会导致下一个出块者还没有收到上一个出块者的区块,就该生产下一个区块了,那么下一个出块者会忽略上一个区块,导致区块链分叉(相同区块高度有两个区块)。因此,为了降低网络延迟对出块速度的影响,可以规定各主节点连续生产预设数量的区块,该预设数量超过预设的最小阈值并大于预设的最大阈值。也就是每个见证人还是负责之前的区块生产,但是由最初的只生产1个变成生产n个。最恶劣的情况下,n个区块中,最后一个或两个有可能因为网络延迟或其他意外被下一个见证人略过,但n个区块中的前几个会有足够的时间传递给下一个见证人。每个区块生产后立即进行全网广播,区块生产者一边等待0.5秒生产下一个区块,同时会接收其他见证人对于上一个区块的确认结果。新区块的生产和旧区块确认的接收同时进行。大部分的情况下,交易会在1秒之内确认(不可逆)。这其中包括了0.5秒的区块生产,和要求其他见证人确认的时间。在上述共识机制下,每个节点生成新区块的时候时依然全网广播,其他节点收到新区块后,立即对此区块进行验证,并将验证签名完成的区块立即返回该新区块的出块节点,不需等待其他节点自己生成新区块的时候再确认该新区块。从当前的出块节点角度来看,该节点生产了一个区块,并全网广播,然后陆续收到了其他节点对此区块的确认,在收到2/3节点确认的瞬间,区块(包括其中的交易)就不可逆了。

本实施例提供的区块链共识方法,通过接收主节点发起的共识请求,所述共识请求是所述主节点通过自身的私钥签名后广播至区块链中的,其中,各主节点连续生产预设数量的区块;通过预存的主节点的公钥对所述共识请求进行验证,并根据验证结果发送审核信息,所述审核信息包括确认信息以及怀疑信息;若检测到确认信息的数量超过预设的阈值,则根据所述共识请求生成新的区块。通过接收到共识请求后立即根据该共识请求进行审核,当确认信息超过预设的阈值时进行出块,从而能够提高区块生成的效率。

图2为本发明实施例二提供的区块链共识方法的流程示意图,在上述任一实施例的基础上,所述方法包括:

步骤201、接收主节点发起的共识请求,所述共识请求是所述主节点通过自身的私钥签名后广播至区块链中的,其中,各主节点连续生产预设数量的区块;

步骤202、通过预存的主节点的公钥判断所述共识请求的合法性;

步骤203、若所述共识请求合法,则根据验证结果将确认信息广播至区块链中;

步骤204、若所述共识请求不合法,则根据验证结果将怀疑信息广播至区块链中;

步骤205、若检测到确认信息的数量超过预设的阈值,则根据所述共识请求生成新的区块。

在本实施例中,主节点发送共识请求之后,区块链中除主节点以外的节点可以接收该共识请求,为了提高区块链的出块效率,在接收到该共识请求既可以对该共识请求进行审核。为了保证该共识请求的合法性,可以通过预设的主节点的公钥对该共识请求进行验证,并根据验证结果发送审核信息。具体地,可以通过预存的主节点的公钥对该共识请求的合法性进行判断,若判断该共识请求合法,则根据该验证结果将确认信息广播至区块链中,相应地,若判断该共识请求不合法,则可以根据该验证结果将怀疑信息广播至区块链中。可以理解的是,在发送验证结果之前,各节点可以通过自身的私钥对该验证结果进行加密,并将加密后的验证结果广播至区块链中。

本实施例提供的区块链共识方法,通过预存的主节点的公钥判断所述共识请求的合法性,若所述共识请求合法,则根据验证结果将确认信息广播至区块链中,若所述共识请求不合法,则根据验证结果将怀疑信息广播至区块链中,从而能够在提高区块链出块的效率的基础上,保证共识请求的合法性。

图3为本发明实施例三提供的区块链共识方法的流程示意图,在上述任一实施例的基础上,如图3所示,所述方法还包括:

步骤301、接收发起者发送的交易请求,所述交易请求是所述发起者通过自身的私钥签名后广播至区块链中的,其中,各主节点连续生产预设数量的区块;

步骤302、判断所述发起者是否为主节点;

步骤303、若是,则验证所述交易请求的合法性,若所述交易请求合法,则将所述交易请求保存至预设的存储路径,若所述交易请求不合法,则删除所述交易请求;

步骤304、若否,则转发所述交易请求;

步骤305、接收主节点发起的共识请求,所述共识请求是所述主节点通过自身的私钥签名后广播至区块链中的;

步骤306、通过预存的主节点的公钥对所述共识请求进行验证,并根据验证结果发送审核信息,所述审核信息包括确认信息以及怀疑信息;

步骤307、若检测到确认信息的数量超过预设的阈值,则根据所述共识请求生成新的区块。

在本实施例中,区块链中交易的发起者发起一笔交易时,利用私钥签名交易后,向全网进行广播该交易请求,相应地,区块链中其他的节点可以接收该交易请求。接收到该交易请求之后,首先需要判断该交易请求的发起者是否为预设的主节点,若是,则可以对该交易请求的合法性进行验证。具体地,可以通过预存的该发起者的公钥对该交易请求进行验证,若验证该交易请求合法,则可以将该交易请求保存至预设的存储路径,相应地,若验证该交易请求不合法,则可以直接删除该交易请求。此外,若检测到该交易请求的发起者并非区块链中的主节点,则可以不对该交易请求进行验证处理,可以直接将该交易请求转发至区块链中。

本实施例提供的区块链共识方法,通过接收发起者发送的交易请求,所述交易请求是所述发起者通过自身的私钥签名后广播至区块链中的,判断所述发起者是否为主节点,若是,则验证所述交易请求的合法性,若所述交易请求合法,则将所述交易请求保存至预设的存储路径,若所述交易请求不合法,则删除所述交易请求,若否,则转发所述交易请求,从而为后续提高出块效率提供了基础。

图4为本发明实施例四提供的区块链共识方法的流程示意图,在上述任一实施例的基础上,如图4所示,所述方法还包括:

步骤401、接收主节点发起的共识请求,所述共识请求是所述主节点通过自身的私钥签名后广播至区块链中的,其中,各主节点连续生产预设数量的区块;

步骤402、通过预存的主节点的公钥对所述共识请求进行验证,并根据验证结果发送审核信息,所述审核信息包括确认信息以及怀疑信息;

步骤403、若检测到确认信息的数量超过预设的阈值,则根据所述共识请求生成新的区块;

步骤404、若接收到区块生成的广播信息,则删除当前缓存的交易请求。

在本实施例中,接收到主节点发起的共识请求,并对该共识请求进行验证,当检测到确认信息超过预设的阈值时进行出块操作之后,可以将出块信息广播至区块链中,表征当前已出块成功。因此,为了进一步地提高出块效率,未对该共识请求进行验证的其他区块可以删除当前缓存的交易请求,从而其能够尽快地对下一个共识请求进行验证操作。

本实施例提供的区块链共识方法,通过若接收到区块生成的广播信息,则删除当前缓存的交易请求,从而能够有效地提高区块链的区块速度。

图5为本发明实施例五提供的区块链共识方法的流程示意图,在上述任一实施例的基础上,如图5所示,所述方法包括:

步骤501、接收所述主节点按照当前区块链中各主节点约定的出块顺序发起的共识请求,所述共识请求是所述主节点通过自身的私钥签名后广播至区块链中的,其中,各主节点连续生产预设数量的区块;

步骤502、通过预存的主节点的公钥对所述共识请求进行验证,并根据验证结果发送审核信息,所述审核信息包括确认信息以及怀疑信息;

步骤503、若检测到确认信息的数量超过预设的阈值,则根据所述共识请求生成新的区块。

在本实施例中,网络延迟往往会导致区块链的出块效率较低,举例来说,0.5秒的确认时间往往会导致下一个出块者还没有收到上一个出块者的区块,就该生产下一个区块了,那么下一个出块者会忽略上一个区块,导致区块链分叉(相同区块高度有两个区块)。比如:网络上路由距离远的两个节点,比如,中国和美国的网络延迟有时300ms,那么很有可能美国的见证人没有收到中国的见证人的新区块时,就该出自己的新区块了,那么中国见证人的这个区块就会被美国见证人给略过。因此,为了解决上述技术问题,可以接收主节点按照当前区块链中各主节点约定的出块顺序发起的共识请求。举例来说,可以将原先的随机出块顺序改为由全球的所有主节点统一商议后来确定出块顺序,这样网络连接延迟较低的主节点之间就可以相邻出块。比如:中国的见证人后面是韩国的见证人,再后面是朝鲜的见证人,再后面是日本的见证人等等。这样可以大大降低见证人之间的网络延迟。为了保证万无一失,不让任何一个见证人因为网络延迟的意外而被跳过,我们规定让每个见证人连续生产超过一定最小阈值,小于最大数量阈值的数量的n个区块,也就是每个见证人还是负责之前的区块生产,但是由最初的只生产1个变成生产n个。最恶劣的情况下,n个区块中,最后一个或两个有可能因为网络延迟或其他意外被下一个见证人略过,但n个区块中的前几个会有足够的时间传递给下一个见证人。每个区块生产后立即进行全网广播,区块生产者一边等待0.5秒生产下一个区块,同时会接收其他见证人对于上一个区块的确认结果。新区块的生产和旧区块确认的接收同时进行。大部分的情况下,交易会在1秒之内确认(不可逆)。这其中包括了0.5秒的区块生产,和要求其他见证人确认的时间。一旦区块达到不可逆状态(2/3见证人确认),就无法在此之前进行分叉,保证了交易的永久可信。另外,即使多数见证人想分叉区块链,也只能以相同的速度(0.5秒)与主链竞争,就算主链只剩下一个见证人,分叉链也永远不会追上主链,保证了系统的稳定。

本实施例提供的区块链共识方法,通过接收所述主节点按照当前区块链中各主节点约定的出块顺序发起的共识请求,从而能够在提高区块链出块效率的基础上,保证区块链的稳定性。

图6为本发明实施例六提供的区块链共识装置的结构示意图,如图6所示,所述装置包括:

共识请求接收模块61,用于接收主节点发起的共识请求,所述共识请求是所述主节点通过自身的私钥签名后广播至区块链中的,其中,各主节点连续生产预设数量的区块;

第一验证模块62,用于通过预存的主节点的公钥对所述共识请求进行验证,并根据验证结果发送审核信息,所述审核信息包括确认信息以及怀疑信息;

生成模块63,用于若检测到确认信息的数量超过预设的阈值,则根据所述共识请求生成新的区块。

进一步地,在上述任一实施例的基础上,所述验证模块包括:

验证单元,用于通过预存的主节点的公钥判断所述共识请求的合法性;

第一处理单元,用于若所述共识请求合法,则根据验证结果将确认信息广播至区块链中;

第二处理单元,用于若所述共识请求不合法,则根据验证结果将怀疑信息广播至区块链中。

进一步地,在上述任一实施例的基础上,所述装置还包括:

交易请求接收模块,用于接收发起者发送的交易请求,所述交易请求是所述发起者通过自身的私钥签名后广播至区块链中的;

判断模块,用于判断所述发起者是否为主节点;

第二验证模块,用于若是,则验证所述交易请求的合法性,若所述交易请求合法,则将所述交易请求保存至预设的存储路径,若所述交易请求不合法,则删除所述交易请求;

转发模块,用于若否,则转发所述交易请求。

进一步地,在上述任一实施例的基础上,所述装置还包括:

删除模块,用于若接收到区块生成的广播信息,则删除当前缓存的交易请求,

进一步地,在上述任一实施例的基础上,所述共识请求接收模块包括:

请求接收单元,用于接收所述主节点按照当前区块链中各主节点约定的出块顺序发起的共识请求。

图7为本发明实施例七提供的区块链共识设备的结构示意图,如图7所示,所述区块链共识设备,包括:存储器71,处理器72;

存储器71;用于存储所述处理器72可执行指令的存储器71;

其中,所述处理器72被配置为由所述处理器72执行如上述任一实施例所述的区块链共识方法。

本发明又一实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述任一实施例所述的区块链共识法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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