公有区块链的处理方法、设备及计算机可读存储介质与流程

文档序号:17092984发布日期:2019-03-13 23:38阅读:217来源:国知局
公有区块链的处理方法、设备及计算机可读存储介质与流程

本发明实施例涉及通信技术领域,尤其涉及一种公有区块链的处理方法、设备及计算机可读存储介质。



背景技术:

当前在区块链网络中,存在三种不同的区块链,即公有区块链、联盟区块链和私有区块链。公有区块链是指无用户授权机制的区块链;联盟区块链是指允许授权的节点加入网络,可根据权限查看信息,往往被用于机构间的区块链;私有区块链是指所有网络中的节点都掌握在一家机构手中。

在公有区块链中,由于工作量证明机制(proofofwork,pow)耗费大量的计算量,公有区块链容易出现分叉,导致一笔交易完成后,不能立即认为这笔交易是成功的,必须等到一定数量的新区块生成后,如果交易依然没有被取消,才能认为该笔交易是成功的。一般认为等到6个新区块产生后,才能认为该笔交易是成功的。而每个区块产生的平均时间是10分钟,也就意味着,一笔交易需要至少一个小时左右的时间才能确认交易成功。从而导致公有区块链的效率较低。



技术实现要素:

本发明实施例提供一种公有区块链的处理方法、设备及计算机可读存储介质,以提高公有区块链的效率。

第一方面,本发明实施例提供一种公有区块链的处理方法,包括:

公有区块链的第一发起方节点接收记账节点在区块链网络中广播的新区块;

所述第一发起方节点比对所述第一发起方节点当前时刻认可的难度值和所述新区块的哈希值;

如果所述第一发起方节点当前时刻认可的难度值大于所述新区块的哈希值,则所述第一发起方节点采用自己的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中;

其中,所述公有区块链对应有多个发起方节点,所述第一发起方节点是所述多个发起方节点中的任一个,所述多个发起方节点共同管理所述公有区块链,所述公有区块链的创世区块中包括所述多个发起方节点各自的签名公钥、以及所述多个发起方节点各自所占的共管份额。

第二方面,本发明实施例提供一种公有区块链的发起方节点,包括:

存储器;

处理器;

通讯接口;以及

计算机程序;

其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以下操作:

通过所述通讯接口接收记账节点在区块链网络中广播的新区块;

比对所述发起方节点当前时刻认可的难度值和所述新区块的哈希值;

如果所述发起方节点当前时刻认可的难度值大于所述新区块的哈希值,则所述发起方节点采用自己的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中;

其中,所述公有区块链对应有多个发起方节点,所述发起方节点是所述多个发起方节点中的任一个,所述多个发起方节点共同管理所述公有区块链,所述公有区块链的创世区块中包括所述多个发起方节点各自的签名公钥、以及所述多个发起方节点各自所占的共管份额。

第三方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现第一方面所述的方法。

本发明实施例提供的公有区块链的处理方法、设备及计算机可读存储介质,通过公有区块链的发起方节点接收记账节点在区块链网络中广播的新区块,并比对发起方节点当前时刻认可的难度值和区块头中包括的难度值,当发起方节点当前时刻认可的难度值和区块头中包括的难度值一致时,采用自己的私钥对新区块签名后,将新区块广播到区块链网络中,即每个发起方节点只对属于自己难度值的新区块进行签名认证,只要发起方节点对新区块签名认证后,该新区块即可被写入到该公有区块链的账本中,无需等到后续更多的新区块生成后再得到确认,从而提高了公有区块链的效率。

附图说明

图1为本发明实施例提供的公有区块链的处理方法流程图;

图2为本发明实施例提供的公有区块链的区块链网络的示意图;

图3为本发明另一实施例提供的公有区块链的处理方法流程图;

图4为本发明另一实施例提供的公有区块链的处理方法流程图;

图5为本发明另一实施例提供的公有区块链的处理方法流程图;

图6为本发明实施例提供的公有区块链的发起方节点的结构示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本发明提供的公有区块链的处理方法,旨在解决现有技术的如上技术问题。

下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。

图1为本发明实施例提供的公有区块链的处理方法流程图。本发明实施例针对现有技术的如上技术问题,提供了公有区块链的处理方法,该方法具体步骤如下:

步骤101、公有区块链的第一发起方节点接收记账节点在区块链网络中广播的新区块。

其中,所述公有区块链对应有多个发起方节点,所述第一发起方节点是所述多个发起方节点中的任一个,所述多个发起方节点共同管理所述公有区块链,所述公有区块链的创世区块中包括所述多个发起方节点各自的签名公钥、以及所述多个发起方节点各自所占的共管份额。

如图2所示,公有区块链对应有多个发起方节点,例如,发起方节点1、发起方节点2、发起方节点3、发起方节点4、发起方节点5、发起方节点6,第一发起方节点具体可以是发起方节点1、发起方节点2、发起方节点3、发起方节点4、发起方节点5、发起方节点6中的任一个,例如,第一发起方节点是发起方节点1。该多个发起方节点可以是区块链网络中的节点,此处只是示意性说明,并不限定区块链网络的结构和对应的节点个数。在本实施例中,该多个发起方节点共同管理所述公有区块链,且该多个发起方节点在建立该公有区块链的初期,将各自的签名公钥、以及所述多个发起方节点各自所占的共管份额存储在该公有区块链的创世区块中。该公有区块链后续的每个新区块由该多个发起方节点中的任意一个发起方节点使用自己的私钥对其进行签名,即可完成对该新区块的成功认证,使得该新区块可以被写入到该公有区块链的账本中。

在本实施例中,该多个发起方节点中的每一个发起方节点对应有一个当前时刻认可的难度值,该多个发起方节点可周期性的、或实时的将各自当前时刻认可的难度值广播到该区块链网络中。该区块链网络中的记账节点根据该多个发起方节点中的每一个发起方节点当前时刻认可的难度值、该记账节点自己的计算能力、以及每一个发起方节点的签名效率等信息,确定新区块的难度值,并根据该新区块的难度值抢夺记账权,当该记账节点抢夺到记账权时,生成该新区块,并在该新区块的头部添加该难度值,并将添加有难度值的该新区块广播到该区块链网络中。可选的,该记账节点采用自己的私钥对该添加有难度值的该新区块进行签名后,将该新区块广播到该区块链网络中。可以理解,该记账节点可以是该多个发起方节点中的节点,也可以是该多个发起方节点之外的节点。

当该记账节点将添加有难度值的该新区块广播到该区块链网络后,该区块链网络中的每个发起方节点都可以接收到该新区块。以第一发起方节点是发起方节点1为例,发起方节点1可接收该记账节点在区块链网络中广播的新区块。

步骤102、所述第一发起方节点比对所述第一发起方节点当前时刻认可的难度值和所述新区块的哈希值。

当该区块链网络中的每个发起方节点接收到该新区块时,每个发起方节点分别比对各自当前时刻认可的难度值和所述新区块的哈希值。

例如,当发起方节点1接收到该新区块时,比对发起方节点1当前时刻认可的难度值和所述新区块的哈希值。

步骤103、如果所述第一发起方节点当前时刻认可的难度值大于所述新区块的哈希值,则所述第一发起方节点采用自己的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中。

如果该多个发起方节点中的某一个发起方节点例如发起方节点1确定其当前时刻认可的难度值大于所述新区块的哈希值,则该发起方节点1采用自己的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中。也就是说,每个发起方节点只对哈希值小于自己难度值的新区块进行签名认证,对哈希值大于或等于自己难度值的新区块不进行签名认证。

本发明实施例通过公有区块链的发起方节点接收记账节点在区块链网络中广播的新区块,并比对发起方节点当前时刻认可的难度值和该新区块的哈希值,当发起方节点当前时刻认可的难度值大于该新区块的哈希值时,采用自己的私钥对新区块签名后,将新区块广播到区块链网络中,即每个发起方节点只对哈希值小于自己难度值的新区块进行签名认证,只要发起方节点对新区块签名认证后,该新区块即可被写入到该公有区块链的账本中,无需等到后续更多的新区块生成后再得到确认,从而提高了公有区块链的效率。

图3为本发明另一实施例提供的公有区块链的处理方法流程图。在上述实施例的基础上,本实施例提供的公有区块链的处理方法还包括如下步骤:

步骤301、所述第一发起方节点统计区块链账本中由所述第一发起方节点签名过的历史区块的个数。

在本实施例中,每个发起方节点以某一个固定的时间间隔,统计该公有区块链的区块链账本中各自签名过的历史区块的个数,例如,发起方节点1统计区块链账本中由发起方节点1签名过的历史区块的个数,发起方节点2统计该区块链账本中由发起方节点2签名过的历史区块的个数,依次类推。

步骤302、所述第一发起方节点根据所述区块链账本中由所述第一发起方节点签名过的历史区块的个数,以及所述第一发起方节点的共管份额,对所述第一发起方节点当前时刻认可的难度值进行调整。

进一步的,每个发起方节点还可以统计该公有区块链的区块链账本中各自签名过的历史区块的个数占该区块链账本中所有区块个数的比例,例如,发起方节点1统计区块链账本中由发起方节点1签名过的历史区块的个数与该区块链账本中所有区块个数的比值,发起方节点2统计该区块链账本中由发起方节点2签名过的历史区块的个数与该区块链账本中所有区块个数的比值,依次类推。

每个发起方节点可以根据自己签名过的历史区块的个数与该区块链账本中所有区块个数的比值,以及各自的共管份额,对各自当前时刻认可的难度值进行调整,例如,发起方节点1可以根据自己签名过的历史区块的个数与该区块链账本中所有区块个数的比值,以及该发起方节点1的共管份额,对发起方节点1当前时刻认可的难度值进行调整;发起方节点2可以根据自己签名过的历史区块的个数与该区块链账本中所有区块个数的比值,以及该发起方节点2的共管份额,对发起方节点2当前时刻认可的难度值进行调整;依次类推。

可选的,所述第一发起方节点根据所述区块链账本中由所述第一发起方节点签名过的历史区块的个数,以及所述第一发起方节点的共管份额,对所述第一发起方节点当前时刻认可的难度值进行调整,包括:如果所述区块链账本中由所述第一发起方节点签名过的历史区块的个数与所述区块链账本中所有区块的个数比值大于所述第一发起方节点的共管份额,则减小所述第一发起方节点当前时刻认可的难度值;如果所述区块链账本中由所述第一发起方节点签名过的历史区块的个数与所述区块链账本中所有区块的个数比值小于所述第一发起方节点的共管份额,则增大所述发起方节点当前时刻认可的难度值。

例如,发起方节点1确定自己签名过的历史区块的个数与该区块链账本中所有区块个数的比值大于该发起方节点1的共管份额,则减小发起方节点1当前时刻认可的难度值。如果发起方节点1确定自己签名过的历史区块的个数与该区块链账本中所有区块个数的比值小于该发起方节点1的共管份额,则增大发起方节点1当前时刻认可的难度值。

再例如,发起方节点2确定自己签名过的历史区块的个数与该区块链账本中所有区块个数的比值小于该发起方节点2的共管份额,则增大发起方节点2当前时刻认可的难度值。

本发明实施例通过发起方节点统计区块链账本中由所述发起方节点签名过的历史区块的个数,根据所述区块链账本中由所述发起方节点签名过的历史区块的个数,以及所述发起方节点的共管份额,对所述发起方节点当前时刻认可的难度值进行调整,提高了发起方节点当前时刻认可的难度值的灵活性。

图4为本发明另一实施例提供的公有区块链的处理方法流程图。在上述实施例的基础上,本实施例提供的公有区块链的处理方法具体包括如下步骤:

步骤401、公有区块链的第一发起方节点接收记账节点在区块链网络中广播的新区块。

步骤401与步骤101的实现方式和具体原理一致,此处不再赘述。

步骤402、所述第一发起方节点比对所述第一发起方节点当前时刻认可的难度值和所述新区块的哈希值。

步骤402与步骤102的实现方式和具体原理一致,此处不再赘述。

步骤403、如果所述第一发起方节点当前时刻认可的难度值大于所述新区块的哈希值,则所述第一发起方节点采用自己的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中。

步骤403与步骤103的实现方式和具体原理一致,此处不再赘述。

步骤404、如果所述第一发起方节点当前时刻认可的难度值小于或等于所述新区块的哈希值,且超过阈值时间所述新区块未得到所述多个发起方节点中第二发起方节点的签名认可,所述第二发起方节点当前时刻认可的难度值大于所述新区块的哈希值,则所述第一发起方节点和除所述第二发起方节点之外的其他发起方节点采用各自的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中。

例如,发起方节点1当前时刻认可的难度值小于或等于所述新区块的哈希值,其他发起方节点例如发起方节点2当前时刻认可的难度值大于所述新区块的哈希值,则发起方节点1还可以实时监控发起方节点2对该新区块的签名认证情况,例如,发起方节点1可以统计从该记账节点将该新区块广播到区块链网络中的时刻到当前时刻的时长,如果该时长超过阈值时间,且该新区块未得到发起方节点2的签名认可,也就是说,超过阈值时间后,发起方节点2还没有对该新区块进行签名认可并广播到区块链网络中,则发起方节点1和其他发起方节点例如发起方节点3、发起方节点4、发起方节点5、发起方节点6确定发起方节点2出现了故障,进一步,发起方节点1可以和其他发起方节点例如发起方节点3、发起方节点4、发起方节点5、发起方节点6中的至少一个对该新区块进行联合私钥签名,并将签名后的该新区块广播到该区块链网络中。

本发明实施例当第一发起方节点当前时刻认可的难度值小于或等于所述新区块的哈希值,且超过阈值时间所述新区块未得到第二发起方节点的签名认可,所述第二发起方节点当前时刻认可的难度值大于所述新区块的哈希值,则所述第一发起方节点和除所述第二发起方节点之外的其他发起方节点采用各自的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中,保证了该公有区块链中的每个新区块都可以被成功的认证。

图5为本发明另一实施例提供的公有区块链的处理方法流程图。在上述实施例的基础上,本实施例提供的公有区块链的处理方法具体包括如下步骤:

步骤501、公有区块链的第一发起方节点接收记账节点在区块链网络中广播的新区块。

步骤501与步骤101的实现方式和具体原理一致,此处不再赘述。

步骤502、所述第一发起方节点比对所述第一发起方节点当前时刻认可的难度值和所述新区块的哈希值。

步骤502与步骤102的实现方式和具体原理一致,此处不再赘述。

步骤503、如果所述第一发起方节点当前时刻认可的难度值大于所述新区块的哈希值,则所述第一发起方节点采用自己的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中。

步骤503与步骤103的实现方式和具体原理一致,此处不再赘述。

步骤504、如果所述第一发起方节点当前时刻认可的难度值小于或等于所述新区块的哈希值,且对所述新区块签名认可的第二发起方节点当前时刻认可的难度值小于或等于所述新区块的哈希值,则所述第一发起方节点和除所述第二发起方节点之外的其他发起方节点采用各自的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中。

例如,发起方节点1当前时刻认可的难度值小于或等于所述新区块的哈希值,发起方节点1还可以实时监控其他发起方节点对该新区块的签名认证情况,例如,发起方节点1实时检测是否有其他发起方节点对该新区块进行了签名认证,如果发起方节点1检测到有一个发起方节点例如发起方节点2对该新区块进行了签名认证,则发起方节点1进一步检测对该新区块进行签名认证的发起方节点2当前时刻认可的难度值是否小于或等于所述新区块的哈希值,如果发起方节点2当前时刻认可的难度值小于或等于所述新区块的哈希值,则发起方节点1和其他发起方节点例如发起方节点3、发起方节点4、发起方节点5、发起方节点6中的至少一个对该新区块进行联合私钥签名,并将签名后的该新区块广播到该区块链网络中。

本发明实施例当第一发起方节点当前时刻认可的难度值小于或等于所述新区块的哈希值,且对所述新区块签名认可的第二发起方节点当前时刻认可的难度值小于或等于所述新区块的哈希值,则所述第一发起方节点和除所述第二发起方节点之外的其他发起方节点采用各自的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中,保证了该公有区块链中的每个新区块都可以被正确的认证。

图6为本发明实施例提供的公有区块链的发起方节点的结构示意图。本发明实施例提供的发起方节点可以执行公有区块链的处理方法实施例提供的处理流程,如图6所示,发起方节点60包括:存储器61、处理器62、计算机程序和通讯接口63;其中,计算机程序存储在存储器61中,并被配置为由处理器62执行以下操作:通过通讯接口63接收记账节点在区块链网络中广播的新区块;比对所述发起方节点当前时刻认可的难度值和所述新区块的哈希值;如果所述发起方节点当前时刻认可的难度值大于所述新区块的哈希值,则所述发起方节点采用自己的私钥对所述新区块签名后,将所述新区块广播到所述区块链网络中;其中,所述公有区块链对应有多个发起方节点,所述发起方节点是所述多个发起方节点中的任一个,所述多个发起方节点共同管理所述公有区块链,所述公有区块链的创世区块中包括所述多个发起方节点各自的签名公钥、以及所述多个发起方节点各自所占的共管份额。

可选的,处理器62还用于:统计区块链账本中由所述发起方节点签名过的历史区块的个数;根据所述区块链账本中由所述发起方节点签名过的历史区块的个数,以及所述发起方节点的共管份额,对所述发起方节点当前时刻认可的难度值进行调整。

可选的,处理器62根据所述区块链账本中由所述发起方节点签名过的历史区块的个数,以及所述发起方节点的共管份额,对所述发起方节点当前时刻认可的难度值进行调整时,具体用于:如果所述区块链账本中由所述发起方节点签名过的历史区块的个数与所述区块链账本中所有区块的个数比值大于所述发起方节点的共管份额,则减小所述发起方节点当前时刻认可的难度值;如果所述区块链账本中由所述发起方节点签名过的历史区块的个数与所述区块链账本中所有区块的个数比值小于所述发起方节点的共管份额,则增大所述发起方节点当前时刻认可的难度值。

可选的,处理器62还用于:如果所述发起方节点当前时刻认可的难度值小于或等于所述新区块的哈希值,且超过阈值时间所述新区块未得到所述多个发起方节点中第二发起方节点的签名认可,所述第二发起方节点当前时刻认可的难度值大于所述新区块的哈希值,则处理器62采用所述发起方节点的私钥对所述新区块签名后,通过通讯接口63将所述新区块广播到所述区块链网络中。

可选的,处理器62还用于:如果所述发起方节点当前时刻认可的难度值小于或等于所述新区块的哈希值,且对所述新区块签名认可的第二发起方节点当前时刻认可的难度值小于或等于所述新区块的哈希值,则处理器62采用所述发起方节点的私钥对所述新区块签名后,通过通讯接口63将所述新区块广播到所述区块链网络中。

图6所示实施例的发起方节点可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

另外,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的公有区块链的处理方法。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

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