本发明实施例涉及区块链技术领域,尤其涉及一种联盟链的记账方法、设备、联盟链及存储介质。
背景技术:
区块链的核心是共识机制,共识机制决定了区块链的实现形式,决定了信任的方式和规则,也决定了区块链的不同应用场景。区块链每个携带信息区块的增加,都要基于一定的机制和算法。其中,工作证明(pow)机制就是区块链中常用的一种共识机制。
在现有技术中公有链采用pow机制可以产生目前最公平的区块链模型,但是对于联盟链来说,因为参与方较少,如果采用pow机制则对联盟参与方的算力要求非常之大,往往很难做到。如果采用其他的共识机制,则公平性又较难保证。
技术实现要素:
本发明实施例提供一种联盟链的记账方法、设备、联盟链及存储介质,用以在不增加联盟链中节点功耗的前提下,提高联盟链的公平性。
本发明实施例第一方面提供一种联盟链的记账方法,所述联盟链中的第一节点接入到公有链中,所述方法包括:所述联盟链中的第一节点将所述联盟链的交易记录广播到所述公有链中,以使所述公有链中的节点采用pow机制对所述交易记录进行记账,并将记账生成的新区块广播到所述公有链中;所述联盟链中的第一节点从所述公有链中获取所述新区块,并将所述新区块广播到所述联盟链中以使所述联盟链中的其他节点对所述新区块进行验证;针对所述新区块,若所述联盟链中有超过预设数量的节点验证通过,则所述第一节点确定所述新区块记账成功。
在一种可能的设计中,所述联盟链中的第一节点将所述联盟链的交易记录广播到所述公有链中,以使所述公有链中的节点采用pow机制对所述交易记录进行记账,并将记账生成的新区块广播到所述公有链中,包括:
所述联盟链中的第一节点生成备选区块,所述备选区块的区块体包括所述联盟链的交易记录,所述备选区块的区块头部分的随机数为空,所述备选区块中还包括奖励信息;所述第一节点将所述备选区块广播到所述公有链中,以使所述公有链中的采用pow机制对所述备选区块中的交易记录进行记账,并将记账生成的新区块广播到所述公有链中。
在一种可能的设计中,所述新区块中包括奖励信息,所述第一节点同时接入到多个公有链;所述联盟链中的第一节点从所述公有链中获取所述新区块,并将所述新区块广播到所述联盟链中以使所述联盟链中的其他节点对所述新区块进行验证,包括:所述联盟链中的第一节点在预设时间范围内从所述多个公有链中获取到多个新区块,并基于各新区块中的奖励信息,将所述多个新区块中需要奖励最少的广播到所述联盟链中进行验证。
在一种可能的设计中,所述联盟链中的第一节点在预设时间范围内从所述多个公有链中获取到多个新区块,并基于各新区块中的奖励信息,将所述多个新区块中需要奖励最少的广播到所述联盟链中进行验证之后,所述方法还包括:若所述需要奖励最少的新区块验证通过,则所述第一节点将其对所述需要奖励最少的新区块的奖励凭证广播到该新区块所在的公有链中,以使生成所述需要奖励最少的新区块的节点获得所述奖励凭证。
本发明实施例的第二方面是提供一种节点,所述节点同时接入到联盟链和公有链中,所述节点包括处理器,以及用于存储指令的存储器,当所述处理器执行所述存储器中的指令时,所述处理器用于:将所述联盟链的交易记录广播到所述公有链中,以使所述公有链中的节点采用pow机制对所述交易记录进行记账,并将记账生成的新区块广播到所述公有链中;从所述公有链中获取所述新区块,并将所述新区块广播到所述联盟链中以使所述联盟链中的其他节点对所述新区块进行验证;针对所述新区块,若所述联盟链中有超过预设数量的节点验证通过,则确定所述新区块记账成功。
在一种可能的设计中,所述处理器具体用于:生成备选区块,所述备选区块的区块体包括所述联盟链的交易记录,所述备选区块的区块头部分的随机数为空,所述备选区块中还包括奖励信息;将所述备选区块广播到所述公有链中,以使所述公有链中的采用pow机制对所述备选区块中的交易记录进行记账,并将记账生成的新区块广播到所述公有链中。
在一种可能的设计中,所述新区块中包括奖励信息,所述第一节点同时接入到多个公有链;所述处理器具体用于:在预设时间范围内从所述多个公有链中获取到多个新区块,并基于各新区块中的奖励信息,将所述多个新区块中需要奖励最少的广播到所述联盟链中进行验证。
在一种可能的设计中,所述处理器还用于:在所述需要奖励最少的新区块验证通过时,则将对所述需要奖励最少的新区块的奖励凭证广播到该新区块所在的公有链中,以使生成所述需要奖励最少的新区块的节点获得所述奖励凭证。
本发明实施例的第三方面是提供一种联盟链,该联盟链中包括上述第二方面提供的节点。
本发明实施例第四方面提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
本发明实施例中,通过将联盟链中的第一节点接入到公有链中,然后通过第一节点将联盟链中的交易记录广播到公有链中使得公有链中的节点利用pow机制对该交易记录进行记账,并将记账生成的新区块广播到公有链中,第一节点在获取到新区块后将新区块广播到联盟链中使得联盟链中的其他节点对新区块进行验证,从而当联盟链中有超过预设数量的节点验证通过时,确定新区块记账成功。由于在本发明实施例中,联盟链上的交易记录是通过公有链上的节点采用pow机制进行记账的,而pow机制的公平性比较高,因此,本发明实施例能够在不提高联盟链上节点功耗的前提下,提高联盟链的公平性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种联盟链的记账方法的流程图;
图2是本发明实施例提供的一种联盟链的记账方法的流程图;
图3为本发明实施例提供的一种记账场景示意图;
图4是本发明实施例提供的一种节点的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤的过程或结构的装置不必限于清楚地列出的那些结构或步骤而是可包括没有清楚地列出的或对于这些过程或装置固有的其它步骤或结构。
图1是本发明实施例提供的一种联盟链的记账方法的流程图,在该方法中联盟链中的一个或多个节点接入同一或不同的公有链中,为了叙述方便以下将联盟链中接入公有链的一个节点称为第一节点,第一节点同时接入一个或多个公有链,如图1所示,该方法包括:
步骤101、联盟链中的第一节点将所述联盟链的交易记录广播到所述公有链中,以使所述公有链中的节点采用pow机制对所述交易记录进行记账,并将记账生成的新区块广播到所述公有链中。
示例的,在将交易记录广播到公有链中时,第一节点首先基于联盟链上的交易记录生成备选区块,使得该备选区块的区块体中包括联盟链上的交易记录,备选区块的区块头部分的随机数为空,或者在其他可能的实现方式中备选区块中还可以包括第一节点对公有链中节点的奖励信息(比如奖励金额等,且若第一节点同时接入多个公有链,第一节点对不同公有链中节点的奖励可以不同)。
进一步的,第一节点在生成备选区块后,使用其在公有链中的私钥对备选区块进行签名,并将签名后的备选区块广播到公有链中。公有链中的节点在接收到备选区块后,首先执行随机数计算的操作,当计算获得的随机数小于联盟链的难度值时,则将该随机数添加到备选区块的区块头部分,生成新区块,并将新区块使用其在公有链中的私钥进行签名后广播到公有链中。
这里要说明的是第一节点将备选区块广播到公有链中后,第一节点接入的同一公有链中可能多个节点执行记账操作,并且各节点生成的新区块均会广播到该公有链中,只是由于各节点计算能力的不同各节点生成新区块的时间先后顺序有可能不同。或者当第二节点同时接入多个公有链时,也可能每个公有链中的节点都会生成新区块。也就是说第一节点接收到的新区块有可能有多个。
步骤102、联盟链中的第一节点从所述公有链中获取所述新区块,并将所述新区块广播到所述联盟链中以使所述联盟链中的其他节点对所述新区块进行验证。
本实施例中第一节点获取到新区块后的操作可能有如下几种:
在一种可能的操作方式中,若第一节点只获取到一个新区块,则直接使用其在联盟链中的私钥对新区块进行签名,并将签名后的新区块广播到联盟链中,以使联盟链中的其他节点对该新区块进行验证。
在另一种可能的操作方式中,当第一节点只接入一个公有链时,第一节点只将其在公有链中最早接收到的新区块广播到联盟链中,以供其他节点进行验证。
在另一种可能的操作方式中,当第一节点同时接入多个公有链时,针对每个公有链第一节点可以采用上述第二种方式从每个公有链中获取最先接收到的新区块,并将获取到的所有新区块全部广播到联盟链中以使其他节点对各新区块进行验证,或者第一节点也可以直接采用与上述第二种方法类似的方法,将其在所有公有链中最先获得的新区块广播到联盟链中进行验证。
步骤103、针对所述新区块,若所述联盟链中有超过预设数量的节点验证通过,则所述第一节点确定所述新区块记账成功。
其中,当第一节点广播到联盟链中的新区块为多个,且验证通过的新区块也为多个时,则可以根据预设策略从多个验证通过的新区块中确定一个新区块记账成功。
进一步的,第一节点在确定记账成功的新区块后,还将其对生成该新区块的节点的奖励凭证广播到该节点所在的公有链中,以使该节点获得奖励凭证。
本实施例中,通过将联盟链中的第一节点接入到公有链中,然后通过第一节点将联盟链中的交易记录广播到公有链中使得公有链中的节点利用pow机制对该交易记录进行记账,并将记账生成的新区块广播到公有链中,第一节点在获取到新区块后将新区块广播到联盟链中使得联盟链中的其他节点对新区块进行验证,从而当联盟链中有超过预设数量的节点验证通过时,确定新区块记账成功。由于在本实施例中,联盟链上的交易记录是通过公有链上的节点采用pow机制进行记账的,而pow机制的公平性比较高,因此,本实施例能够在不提高联盟链上节点功耗的前提下,提高联盟链的公平性。
下面对上述实施例进行进一步的优化和扩展。
图2是本发明实施例提供的一种联盟链的记账方法的流程图,如图2所示,在图1实施例的基础上,第一节点同时接入多个公有链,该方法包括:
步骤201、联盟链中的第一节点将所述联盟链的交易记录广播到所述公有链中,以使所述公有链中的节点采用pow机制对所述交易记录进行记账,并将记账生成的新区块广播到所述公有链中。
步骤202、联盟链中的第一节点在预设时间范围内从所述多个公有链中获取到多个新区块,并基于各新区块中的奖励信息,将所述多个新区块中需要奖励最少的广播到所述联盟链中进行验证。
步骤203、针对需要奖励最少的新区块,若所述联盟链中有超过预设数量的节点验证通过,则所述第一节点确定该新区块记账成功。
步骤204、若验证成功,则第一节点将其对所述需要奖励最少的新区块的奖励凭证广播到该新区块所在的公有链中,以使生成所述需要奖励最少的新区块的节点获得所述奖励凭证。
本实施例中公有链中节点生成的新区块中包括奖励信息(比如奖励金额等),该奖励信息为第一节点生成备选区块时,携带在备选区块中的,其中,第一节点广播到不同公有链中的备选区块中所携带的奖励信息可能不同(可以示例的理解为奖励金额不同)。
当第一节点在预设时间范围内从多个公有链中获取到多个新区块时,首先从各新区块中获取奖励信息,选择需要奖励最少的新区块广播到联盟链中进行验证,以节约成本。
实施例中,通过将联盟链中的第一节点接入到公有链中,然后通过第一节点将联盟链中的交易记录广播到公有链中使得公有链中的节点利用pow机制对该交易记录进行记账,并将记账生成的新区块广播到公有链中,第一节点在获取到新区块后将新区块广播到联盟链中使得联盟链中的其他节点对新区块进行验证,从而当联盟链中有超过预设数量的节点验证通过时,确定新区块记账成功。由于在本实施例中,联盟链上的交易记录是通过公有链上的节点采用pow机制进行记账的,而pow机制的公平性比较高,因此,本实施例能够在不提高联盟链上节点功耗的前提下,提高联盟链的公平性。
为了更好的理解本发明实施例的技术方案,下面以一个具体的场景为例来进行说明。
图3为本发明实施例提供的一种记账场景示意图,其中,lo-ln为联盟链中的节点,l5为公有链中的节点,联盟链中的节点l1,l2,ln同时接入l5所在的公有链,如图3所示,在该场景下的记账过程如下:
s1、当联盟链中产生足够一个区块的交易记录时,则由l1,l2,ln中的一个或多个节点各自基于该些交易记录生成备选区块,使得该备选区块的区块头部分的随机数为空,区块体包括交易记录,或者也可以在各自的备选区块中携带联盟链中对其的奖励金额等信息,在此之后,各节点使用自己的私钥签名后用广播消息的方式将备选区块发送到公有链中,并提出悬赏金额。也就是说奖励金额和悬赏金额的差价为发布该消息的节点的劳务费。
s2、示例的,如果共有链中的某个节点满意联盟链中某个节点的悬赏金额,则进行随机数计算,直到找到一个合适的随机数小于该联盟链的难度值后,将该随机数添加到对应的备选区块的区块头部分,生成新区块,并使用私钥签名后用广播消息的方式将新区块发布到公有链中,这样当l1,l2,ln中的多个均在公有链中广播了备选区块后,l1,l2,ln在公有链中能够获取到多个新区块,l1,l2,ln将各自收到的新区块使用自己的私钥签名后广播到联盟链中,这些新区块由联盟链中的多个节点进行验证,一旦联盟链中超过约定比例阈值的节点确认了某个新区块,则该新区块记账成功。或者,l1,l2,ln在接收到多个新区块后,可以将需要奖励最少的新区块广播到联盟链中进行验证,并且一旦联盟链中超过约定比例阈值的节点验证成功,则确定记账成功,返回步骤1。
图4是本发明实施例提供的一种节点的结构示意图,该节点同时接入到联盟链和公有链中,节点40,包括:处理器41,以及用于存储指令的存储器42,当所述处理器41执行所述存储器42中的指令时,所述处理器41用于:
将所述联盟链的交易记录广播到所述公有链中,以使所述公有链中的节点采用pow机制对所述交易记录进行记账,并将记账生成的新区块广播到所述公有链中;从所述公有链中获取所述新区块,并将所述新区块广播到所述联盟链中以使所述联盟链中的其他节点对所述新区块进行验证;针对所述新区块,若所述联盟链中有超过预设数量的节点验证通过,则确定所述新区块记账成功。
在一种可能的设计中,所述处理器41具体用于:生成备选区块,所述备选区块的区块体包括所述联盟链的交易记录,所述备选区块的区块头部分的随机数为空,所述备选区块中还包括奖励信息;将所述备选区块广播到所述公有链中,以使所述公有链中的采用pow机制对所述备选区块中的交易记录进行记账,并将记账生成的新区块广播到所述公有链中。
在一种可能的设计中,所述新区块中包括奖励信息,所述第一节点同时接入到多个公有链;所述处理器41具体用于:在预设时间范围内从所述多个公有链中获取到多个新区块,并基于各新区块中的奖励信息,将所述多个新区块中需要奖励最少的广播到所述联盟链中进行验证。
在一种可能的设计中,所述处理器41还用于:在所述需要奖励最少的新区块验证通过时,则将对所述需要奖励最少的新区块的奖励凭证广播到该新区块所在的公有链中,以使生成所述需要奖励最少的新区块的节点获得所述奖励凭证。
本实施例提供的节点能够执行上述实施例的方法,其执行方式和有效果类似,在这里不再赘述。
本发明实施例的还提供一种联盟链,该联盟链中包括上述实施例提供的节点。
本发明实施例还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述实施例提供的方法。
最后需要说明的是,本领域普通技术人员可以理解上述实施例方法中的全部或者部分流程,是可以通过计算机程序来指令相关的硬件完成,所述的程序可存储于一计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可以为磁盘、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。
本发明实施例中的各个功能单元可以集成在一个处理模块中,也可以是各个单元单独的物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现,并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。上述提到的存储介质可以是只读存储器、磁盘或光盘等。
以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。