掌桥专利:专业的专利平台
掌桥专利
首页

基于联盟链的随机类共识记账方法及系统、区块链系统

文献发布时间:2024-04-18 19:58:26


基于联盟链的随机类共识记账方法及系统、区块链系统

技术领域

本发明涉及区块链技术领域,特别涉及一种基于联盟链的随机类共识记账方法及系统、区块链系统。

背景技术

联盟链是一种区块链网络,它由几个组织或实体共同管理和控制。这些组织之间达成共识并共同参与网络的维护和决策过程。通常,这些组织都是在某种共同利益或共同目标的基础上合作。与公链相比,联盟链的主要区别在于参与者的身份验证和共识机制。在公链中,任何人都可以匿名地参与,而在联盟链中,参与者通常需要经过身份验证,这使得联盟链的参与者更明确和可信。另一方面,私有链是由单个实体或组织完全控制和管理的区块链网络。私有链的参与者和决策过程通常由该实体或组织独立决定,不向公众开放。相比之下,公链和联盟链都更加开放和去中心化。总的来说,联盟链是一种介于公链和私有链之间的区块链形式。它在一定程度上保留了区块链的去中心化特性,同时也提供了更明确的参与者身份验证和共识机制。这使得联盟链适用于需要合作和共同决策的组织或实体之间的应用场景。

在区块链中,随机类共识算法是一种通过随机选择节点来决定区块验证者的算法。这种算法旨在提供一种公平和分散的方式来选择参与者,以确保区块链网络的安全性和可靠性。在联盟链中,由于参与者是预先定义和授权的,不同于公共区块链的开放性,因此可以使用一些特定的随机数共识方法。以下是一些常见的联盟链中的随机数共识方法:(1)预定参与者:联盟链可以事先确定参与者的顺序,按照既定的规则轮流生成随机数。例如,每个参与者按照一定的顺序逐个生成随机数,确保每个参与者都有机会生成随机数且顺序是事先确定的。(2)可信第三方:联盟链中可以引入一个可信的第三方来生成随机数。这个第三方可以是一个可信的中心化实体,或者是一个具备可信执行环境(TEE)的硬件设备。参与者可以委托这个可信第三方来生成随机数,确保生成过程的公平性和安全性。(3)多方计算:参与者可以通过多方计算协议来共同生成随机数。多方计算协议允许参与者在不暴露私密数据的情况下进行计算,从而实现随机数的生成。这些协议包括安全多方计算(Secure Multiparty Computation,SMC)和同态加密(Homomorphic Encryption)等。(4)分布式随机数生成器:参与者可以使用分布式随机数生成器来生成随机数。这些生成器使用多个参与者的输入,通过协作运算生成最终的随机数。这种方法可以在联盟链中实现去中心化的随机数生成,避免了依赖单一实体的问题。

VRF(Verifiable Random Function)是可验证随机函数,它具备以下特性:(1)随机性:VRF能够生成随机数或随机输出,这些输出具有高度的不可预测性和随机性,无法被猜测或推导出来。(2)可验证性:VRF的输出可以被验证为是由特定输入生成的。通过提供输入、VRF函数和生成的输出,任何人都可以验证输出是通过特定输入执行VRF函数生成的,而无需执行VRF函数本身。(3)不可伪造性:VRF的输出是不可伪造的,即无法通过修改输入或生成随机数的过程来伪造合法的输出。只有通过正确的输入和随机数生成过程,才能得到有效的输出。(4)唯一性:对于特定的输入,VRF的输出是唯一的,不会存在两个不同的输出。这确保了在相同输入下,生成的随机数是一致的。VRF在区块链和密码学领域具有广泛应用。例如,在区块链中,VRF可用于选择共识节点、生成随机数以进行随机化的操作。它提供了一个可验证的随机性生成机制,确保了生成的随机数的不可预测性和公平性,并允许其他参与者验证生成结果的合法性,从而增加了信任和安全性。

联盟链的共识机制通常采用权益证明(PoS)或工作量证明(PoW)算法,但与公链不同的是,联盟链中的参与者是已知的,并且符合一定的标准和准则。因此,联盟链的共识机制可以更加灵活和高效。随机类共识方法是联盟链中相对比较高效的共识方法,其依赖各个节点产生随机数的一致性,比较通用的办法是约定一个可信第三方,用来统一生成随机数,并对随机数进行管理。这种办法依赖于中心化的实体或可信第三方,会引入中心化风险,如果这些实体受到攻击、作恶或存在故障,整个随机数生成过程就可能收到威胁,所以考虑在各个节点构造一致性随机数,不引入可信第三方。

现有的随机类共识算法相关专利存在以下两点问题:

(1)各节点之间需要通过额外的通信来对随机数达成共识。专利“区块链一维随机数共识推举方法”(申请号为201710760210.4)中每个节点都产生一个随机数,各个节点之间需要对随机数进行同步分发并计算平均数,节点产生的随机数与平均数最接近,该节点即为记账节点。专利“一种区块链共识方法及装置”(申请号为201811248907.4)中需要构建量子网络,并在量子网络中分发随机数,该随机数作为选取记账节点的一个因素。上述两个专利均需要在各个节点之间同步随机数,达成对随机数的一致性后,才能选出最终的记账节点。

(2)未对产生的随机数进行有效性验证。专利“一种基于区块链联盟链的快速共识记账方法及其系统”(申请号为201811343256.7)中提出了记账节点结合求余数方式,仅通过计算不需要通讯即可共同确定下一个记账节点的方法。但是该方法并未涉及对随机数进行验证,也没有对区块是否由真正的记账节点产生进行校验,有一定的安全隐患。专利“一种拜占庭容错的方法及其通证经济的治理系统”(申请号为201810356002.2)提出了用可验证随机函数产生随机数在权益表中选数值从而选若干节点参与运营,但是也只是指出在事后可以对随机数进行验证,并没有具体说明在什么时候进行验证,以及怎样验证。

综上所述,现有随机类共识记账方法一部分需要通过对随机数进行同步来达成共识,另一部分虽然不需要通过同步随机数操作,却没有说明对产生的随机数或者记账节点如何进行验证以及何时进行验证,无法保证随机数的有效性,存在安全隐患。

发明内容

发明的目的在于,针对上述现有技术的不足,提供一种基于联盟链的随机类共识记账方法及系统、区块链系统,用于至少解决上述现有随机类共识记账方法存在的技术问题之一。

为解决上述技术问题,本发明所采用的技术方案是:

一种基于联盟链的随机类共识记账方法,其特点是包括以下步骤:

步骤1,对联盟链中的N个记账节点进行编号,其中,0<N;

步骤2,同步联盟链中各节点的区块信息,所述节点包括记账节点和非记账节点;

步骤3,各节点从本地提交的前i条交易中选择m条交易同步给其他节点,同时收集从其他节点同步过来的交易数据;其中,1≤i,0<m≤i;

步骤4,各记账节点基于当前交易数据、区块链上一区块的头部哈希值、N值,计算随机数k,选择编号为k的记账节点进行记账。

进一步地,还包括:

步骤5,第一记账节点生成新区块,并将第一记账节点对区块头部哈希值的签名信息放到新区块的区块头中;第一记账节点向区块链系统广播生成的新区块;其中,第一记账节点为编号为k的记账节点;

第二记账节点对接收到的新区块的区块头中签名信息、新区块的区块主体中交易数据进行验证,签名信息及交易数据均验证成功则将对应的新区块同步到区块链中;其中,第二记账节点为编号为非k的记账节点。

进一步地,还包括:

步骤6,向区块链系统中的节点广播通过验证的新区块;

步骤7,跳转至步骤3。

进一步地,还包括:在所述随机类共识记账方法执行过程中,若第一记账节点出现超时或不合法现象,则跳转至步骤2。

作为一种优选方式,所述步骤4中,所述各记账节点基于当前交易数据、区块链上一区块的头部哈希值、N值,计算随机数k包括:

基于当前交易数据、区块链上一区块的头部哈希值,计算整体哈希值h;

基于h和N,计算随机数k。

作为一种优选方式,所述步骤4中,基于h和N,计算随机数k包括:

将h转换为十进制数值m;

计算k=mod(m,N);

输出k。

进一步地,还包括,将h作为区块链下一区块的头部哈希值。

作为一种优选方式,所述步骤1中,按照0,1,……,N-1的方式对联盟链中的N个记账节点进行编号。

基于同一个发明构思,本发明还提供了一种基于联盟链的随机类共识记账系统,其特点是用于执行所述的随机类共识记账方法。

基于同一个发明构思,本发明还提供了一种区块链系统,所述区块链系统为联盟链,且包括若干个节点,其中若干个节点包括若干个非记账节点和N个记账节点,所述区块链系统中的节点采用所述的随机类共识记账方法。

与现有技术相比,本发明具有以下有益效果:

(1)本发明的共识机制不依赖额外的通信机制,在不同步随机数的情况下,便可在各节点达成一致性,得到一致性的随机数,提高了共识的速度和效率。

(2)本发明通过用上一个区块和当前交易数据作为输入,实现了一个VRF可验证随机函数,在保证了各节点随机数产生的一致性的同时,也可以验证该随机数,从而解决对随机类共识记账方法产生的随机数的有效性验证问题,即如何对随机数进行验证,以及何时验证。

(3)本发明在区块生成过程中对随机数(即记账节点编号)进行验证,确保记账节点的合法性。

(4)本发明将当前交易数据引入随机源,通过将当前交易数据引入作为产生随机数的一部分输入,使得必须在同步完当前交易数据后才能计算出下一个记账节点,攻击者必须也要拿到本轮的交易数据,并且在下一个区块产生之前完成攻击,进一步提高了攻击成本,提高了攻击的门槛,进一步提升了安全性,能够在一定程度上解决随机类共识中随机数的可预测性问题。

附图说明

图1为本发明基于联盟链的随机类共识记账方法流程图。

图2为本发明选取记账节点的VRF算法流程图。

图3为本发明区块链系统中相邻区块间的关系示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明实施例的第一方面提供了一种基于联盟链的随机类共识记账方法,如图1所示,本发明随机类共识记账方法包含了区块链系统从初始化到稳定生成新区块的过程,包括以下步骤:

步骤1,初始化系统,联盟链中的节点分为记账节点和非记账节点,记联盟链中所有记账节点的数量为N,对联盟链中的N个记账节点进行编号,其中,0<N。所述步骤1中,优选但不限于按照0,1,……,N-1的方式对联盟链中的N个记账节点进行编号。即,第一个记账节点编号为0,第二个记账节点编号为1,依此类推,最后一个记账节点编号为N-1。

步骤2,节点同步,即,同步联盟链中各节点的区块信息,所述节点包括记账节点和非记账节点。

经过步骤2后,可保证每个节点的区块信息一致。同步完成后,等待交易。

步骤3,提交和收集交易,收集本轮交易数据。各节点从本地提交的前i条交易中随机选择m条交易同步给其他节点,同时收集从其他节点同步过来的交易数据;其中,1≤i,0<m≤i。

经过步骤3后,最终每个节点都收集到相同的交易数据。收集完成后,可对交易数据进行排序。

步骤4,计算本轮的记账节点。本发明中,构造如下VRF函数计算本轮区块的记账节点,选取记账节点的VRF算法流程图参考图2。

选取记账节点的VRF算法总体思路为:各记账节点基于当前交易数据、区块链上一区块的头部哈希值、N值,计算随机数k,选择编号为k的记账节点进行记账。随机数k计算过程优选但不限于包括:

步骤401,基于当前交易数据、区块链上一区块的头部哈希值,计算整体哈希值h;即,将当前交易数据与区块链上一个区块的头部哈希值作为一个整体,计算出一个整体哈希值h。

步骤402,将整体哈希值h转换为十进制数值m;m优选但不限于为大十进制数值。

步骤403,计算k=mod(m,N);其计算方式为m除以N,求得余数k,例如,k=(8,3)=2。

步骤404,输出k。

上述VRF算法满足以下几条性质:

随机性:当前交易数据与上一个区块的哈希值具有高度的不可预测性和随机性,其作为整体计算的哈希值也是不可预测的,因此最后输出的k满足随机性。

可验证性:每个节点都保存了当前的交易数据和上一个区块的哈希值,很容易计算出相同的输出,从而验证本轮的k和实际的记账节点编号是否一致。

不可伪造性:当前交易数据和上一个区块的哈希值都是需要经过各个节点的验证才能作为合法输入,具有不可伪造性。

唯一性:每个节点的当前交易数据与上一个区块的哈希值都是相同的,即输入相同,从而计算出来的哈希值相同,最终输出相同的k,具有唯一性。

选择编号为k的记账节点进行记账。由于每个节点的区块信息一致,并且收集到的交易数据一样,因此,计算出来的k值也必定一致,同时所有节点都能通过本地的交易数据和区块信息对k进行验证。

步骤5,接收新区块,对新区块进行验证。具体包括:

第一记账节点(即编号为k的记账节点)生成新区块,将h作为区块链下一区块的头部哈希值,并将第一记账节点对区块头部哈希值的签名信息放到新区块的区块头中,以供校验;相邻区块间的关系示意图如图3所示。

第二记账节点接收新区块,对区块进行验证。具体包括:

第二记账节点(即编号为非k的记账节点)对接收到的新区块的区块头中签名信息、新区块的区块主体中交易数据进行验证,签名信息及交易数据均验证成功则将对应的新区块同步到区块链中。本发明验证过程中,必须是编号为k的记账节点的签名才能验证通过。

步骤6,广播新区块,具体为,向区块链系统中的所有节点广播通过验证的新区块。

步骤7,跳转至步骤3,继续收集交易信息。

在一些优选的实施例中,本发明还包括:在所述随机类共识记账方法执行过程中,若第一记账节点出现超时(比如记账节点k宕机)或不合法现象,则系统重新同步,回到步骤2的状态。

本发明对区块头信息增加一个新的签名字段(头部哈希值签名,参考图1),用于对区块的记账节点信息进行校验。

本发明对联盟链随机类共识记账方法新增了三个操作:(1)对记账节点编号;在系统初始化就对记账节点编号,方便对记账节点的定位。(2)构造VRF计算记账节点;在收集完本轮交易后,即可计算出记账节点,从而可以让记账节点生成新区块。(3)对记账节点校验;在收到新区块后,用本地计算出来的记账节点对区块的签名进行验证,校验记账节点。

本发明实施例的第二方面提供了一种基于联盟链的随机类共识记账系统,其用于执行所述的随机类共识记账方法。

本发明实施例的第三方面提供了一种区块链系统,所述区块链系统为联盟链,且包括若干个节点,其中若干个节点包括若干个非记账节点和N个记账节点,所述区块链系统中的节点采用所述的随机类共识记账方法。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所描述的方法和系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

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

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

所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

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

相关技术
  • 一种关联相关链的区块链记账节点选择方法及系统
  • 区块链系统的共识机制实现方法、介质、装置及系统
  • 基于交易评估的联盟链共识方法及系统
  • 基于区块链系统的支付方法、介质和区块链系统
  • 一种基于区块链联盟链的快速共识记账方法及其系统
  • 一种基于区块链联盟链的快速共识记账方法及系统
技术分类

06120116492700