CN112118239B - 区块链共识方法及装置、电子设备、存储介质 - Google Patents
区块链共识方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN112118239B CN112118239B CN202010925893.6A CN202010925893A CN112118239B CN 112118239 B CN112118239 B CN 112118239B CN 202010925893 A CN202010925893 A CN 202010925893A CN 112118239 B CN112118239 B CN 112118239B
- Authority
- CN
- China
- Prior art keywords
- block
- node
- voting
- consensus
- candidate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/126—Applying verification of the received information the source of the received data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的实施例揭示了一种区块链共识方法及装置,该区块链可以是以云存储的方式存储于云端。该方法包括:根据区块链上的当前区块的区块特征,确定所述共识节点集合中含有的主节点,所述区块链上的各个区块含有的区块特征互不相同;接收所述主节点广播的备选区块提案消息;基于接收到的所述备选区块提案消息,对所述主节点的身份以及所述主节点生成的备选区块的内容进行验证;若所述主节点的身份以及所述主节点生成的备选区块的内容通过验证,则发起对于所述备选区块进行投票的广播,以使所述主节点在接收到共识节点广播的投票消息之后,将所述备选区块添加至所述区块链上。本申请实施例的技术方案能够提升区块链系统的安全性。
Description
技术领域
本申请涉及区块链技术领域,具体涉及一种区块链共识方法及装置、电子设备和计算机可读存储介质。
背景技术
区块链(Blockchain)是一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案,本质上是一个去中心化的数据库,区块链系统中的每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据拷贝,并且节点之间基于共识机制共同维护整个区块链。区块链可以是以云存储的方式存储于云端,每个节点都可以与云端进行通信。
目前,区块链系统可以采用轮询的方式选举出主节点,并由主节点发起新区块所对应提案消息的广播,使得提案消息经由所有共识节点共识后完成新区块的上链,由此提升区块链的共识效率。但是,作恶节点能够预测自己当选主节点的时机并尝试以较低的作恶成本对区块链系统进行攻击,导致区块链系统的安全性较低。
由此,如何提升区块链系统在进行区块共识过程中的安全性,是现有技术中还有待解决的技术问题。
发明内容
为解决上述技术问题,本申请的实施例提供了一种区块链共识方法及装置、系统,还提供了一种电子设备以及一种计算机可读存储介质,用以提升区块链系统的安全性。
其中,本申请所采用的技术方案为:
一种区块链共识方法,所述方法应用于区块链系统,所述区块链系统含有共识节点集合,所述方法由所述共识节点集合中的共识节点执行,所述方法包括:根据区块链上的当前区块的区块特征,确定所述共识节点集合中含有的主节点,所述区块链上的各个区块含有的区块特征互不相同;接收所述主节点广播的备选区块提案消息;基于接收到的所述备选区块提案消息,对所述主节点的身份以及所述主节点生成的备选区块的内容进行验证;若所述主节点的身份以及所述主节点生成的备选区块的内容通过验证,则发起对于所述备选区块进行投票的广播,以使所述主节点在接收到共识节点广播的投票消息之后,将所述备选区块添加至所述区块链上。
一种区块链共识方法,所述方法应用于区块链系统,所述区块链系统含有共识节点集合,所述方法由所述共识节点集合中的共识节点执行,所述方法包括:根据区块链上的当前区块的区块特征,确定所述共识节点集合中含有的主节点,所述区块链上的各个区块含有的区块特征互不相同;若确定共识节点自身为所述主节点,则基于待上链的数据生成备选区块,并广播备选区块提案消息;基于自身广播的所述备选区块提案消息,进行所述主节点的身份以及所述备选区块的内容的验证,并在验证通过后发起对于所述备选区块进行投票的广播;基于接收到的共识节点广播的投票消息,将所述备选区块添加至所述区块链上。
一种区块链共识装置,所述装置配置于区块链系统含有的共识节点中,所述装置包括:主节点确定模块,用于根据区块链上的当前区块的区块特征,确定所述共识节点集合中含有的主节点,所述区块链上的各个区块含有的区块特征互不相同;广播接收模块,用于接收所述主节点广播的备选区块提案消息;信息验证模块,用于基于接收到的所述备选区块提案消息,对所述主节点的身份以及所述主节点生成的备选区块的内容进行验证;投票广播模块,用于在所述主节点的身份以及所述主节点生成的备选区块的内容通过验证时,发起对于所述备选区块进行投票的广播,以使所述主节点在接收到共识节点广播的投票消息之后,将所述备选区块添加至所述区块链上。
一种区块链共识装置,所述装置配置于区块链系统含有的共识节点中,所述装置包括:主节点确定模块,用于根据区块链上的当前区块的区块特征,确定所述共识节点集合中含有的主节点,所述区块链上的各个区块含有的区块特征互不相同;区块广播模块,用于在确定共识节点自身为所述主节点的情况下,基于待上链的数据生成备选区块,并广播备选区块提案消息;验证投票模块,用于基于自身广播的所述备选区块提案消息,进行所述主节点的身份以及所述备选区块的内容的验证,并在验证通过后发起对于所述备选区块进行投票的广播;区块上链模块,用于基于接收到的共识节点广播的投票消息,将所述备选区块添加至所述区块链上。
一种区块链共识系统,所述区块链共识系统含有共识节点集合,所述共识节点集合中含有主节点,所述主节点是根据区块链上当前区块的区块特征确定的,其中,所述主节点基于待上链的数据生成备选区块,并广播备选区块提案消息;所述共识节点集合中的各个共识节点基于所述主节点广播的备选区块提案消息,对所述主节点的身份以及所述备选区块的内容进行共识,并在共识通过时将所述备选区块添加至所述区块链上。
一种电子设备,包括处理器及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上所述的区块链共识方法。
一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行如上所述的区块链共识方法。
在上述技术方案中,由于区块链上的当前区块的不可预测性,使得主节点具有极大的随机性,作恶节点无法预测自身当选主节点的时机,从而能够避免作恶节点对区块链系统进行攻击,并且所有的共识节点在共识过程中还对主节点的身份进行验证,只有当主节点和身份以及备选区块的内容在所有的共识节点之间达成共识后才能完成备选区块的上链,极大地提升了区块链系统在区块共识过程中的安全性,也使得区块链系统具有很高的安全性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。在附图中:
图1是本申请涉及的一种实施环境的示意图;
图2是根据一示例性实施例示出的一种区块链的示意图;
图3是根据一示例性实施例示出的一种区块链共识方法的流程图;
图4是图3所示实施例中步骤210在一个实施例的流程图;
图5是图3所示实施例中步骤250在一个实施例的流程图;
图6是图3所示实施例中步骤250在另一个实施例的流程图;
图7是根据一示例性实施例示出的一种区块链共识装置的框图;
图8是根据一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
并且,本申请中描述的“多个”具体是指至少两个。
请参阅图1,图1是本申请涉及的一种实施环境的示意图,该实施环境具体为一区块链系统。
图1中示出的区块链系统100是指用于进行节点与节点之间数据共享的系统,该区块链系统中可以包括由多个共识节点101构成的共识节点集合,每个共识节点可以是指区块链系统100中各个客户端。
每个共识节点在进行正常工作时可以接收到输入信息,并基于接收到的输入信息维护该区块链系统100内的共享数据。为了保证区块链系统100内的信息互通,区块链系统100中的每个共识节点之间可以存在信息连接,共识节点之间可以通过此信息连接进行信息传输。
对于区块链系统100中的每个共识节点101,均具有与其对应的节点标识,而且区块链系统100中的每个共识节点101均可以存储有区块链系统100中其它共识节点的节点标识。例如,每个共识节点101中可维护一个如下表1所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。示例性的,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其它任一种能够用于标识该共识节点的信息,表1中仅以IP地址为例进行说明。
节点名称 | 节点标识 |
共识节点1 | 117.114.151.174 |
共识节点2 | 117.116.189.145 |
… | … |
共识节点N | 119.123.789.258 |
表1
区块链系统100中的每个共识节点101的本地均存储一条相同的区块链。区块链由多个区块组成,参见图2,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有区块高度、主节点标识、区块的结果状态根、区块的交易根、区块生成时间、区块链版本、区块链链标识、区块所打包的交易数、写入区块链的历史交易总数等信息,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中还存储有父区块的区块哈希,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
区块链系统100所含有各个共识节点都可以参与区块数据的共识,例如在生成区块链中的下一区块时,各个共识节点先根据区块链上的当前区块的区块特征在共识节点集合中确定主节点,以将主节点作为下一轮区块的出块节点,在主节点中基于待上链的数据生成备选区块,并由主节点在共识节点集合之间广播备选区块提案消息。
共识节点集合中除主节点以外的其它节点都作为验证节点,基于主节点广播的备选区块提案消息,对主节点的身份以及备选区块的内容进行验证,并在验证通过后发起对于备选区块进行投票的广播。同时,主节点也作为验证节点,基于自身广播的备选区块提案消息对主节点的身份以及备选区块的内容进行验证,并在验证通过后发起对于备选区块进行投票的广播。
如果主节点接收到验证节点广播的投票消息符合共识算法的规定,则表示共识节点集合中含有的共识节点之间对于主节点和身份以及备选区块的内容达成共识,因此由主节点作为出块节点将备选区块添加至区块链上。
示例性的,如果共识算法要求共识节点集合中有三分二以上的共识节点对主节点的身份以及备选区块的内容进行验证通过后,即可表示主节点和身份以及备选区块的内容在共识节点集合中达成共识,那么主节点在接收到共识节点集合中三分二以上的验证节点广播的投票消息后,即将备选区块添加至区块链上。而如果共识规则要求主节点和身份以及备选区块的内容在共识节点集合中达成共识必须通过共识节点集合中所有验证节点的验证通过,那么主节点需在接收到共识节点集合中所有的验证节点广播的投票消息后,才将备选区块添加至区块链上。
添加至区块链上的该备选区块将作为区块链上的当前区块,参与下一轮备选区块对应主节点的确定,并重复前述的备选区块的共识和上链过程,以实现区块链上各个区块的上链。
图3是根据一示例性实施例示出的一种区块链共识方法的流程图,该方法应用于区块链系统,例如可以应用于图1所示的区块链系统100,该区块链系统中含有共识节点集合,该共识节点集合中含有的共识节点可以区分为验证节点和主节点,且主节点同时也作为验证节点,本实施例的方法则可以由验证节点具体执行。
如图3所示,在一个示例性实施例中,该方法可以包括如下步骤:
步骤210,根据区块链上的当前区块的区块特征,确定共识节点集合中含有的主节点。
首先需要说明的是,本实施例提出的区块链共识方法是基于主节点模式的共识方法,属于半同步模式。该半同步模式是指,区块链系统中存在一个消息传递延迟的上界,这个上界要么不为区块链系统中的节点所知,要么所有节点知道这个上界,并在某个未知点遵循这个上界,由此提升区块数据的共识效率。
区块链系统中具有由多个共识节点构成的共识节点集合,基于主节点模式的共识方法在每一轮共识开始之前,需要将共识节点集合中的共识节点区分为主节点和验证节点。其中,主节点同时也是验证节点,并参与区块数据的共识过程,以使得区块链上的区块由所有的共识节点参与共识得到。因此在本实施例中,需要在共识节点集合中确定主节点。
在本实施例中,区块链上的当前区块是指区块链上的最新区块,在生成当前区块之后,当前区块即为区块链上最新的区块。而在生成区块链上的下一个区块之前,需要根据当前区块的区块特征,确定出下一区块对应的出块节点,即在共识节点集合中确定出作为下一区块的出块节点的主节点。
当前区块的区块特征是当前区块中含有的区块参数,例如可以包括区块高度、主节点标识、结果状态根、交易根、投票签名集合等特征信息中的一种或多种。其中,当前区块的结果状态根是区块主体中存储的区块内容经过执行所后所得到的执行结果的哈希值,结果状态根是指区块内容经过梅克尔算法计算出来的梅克尔根,投票签名集合是共识节点在针对当前区块进行投票得到的投票签名集合,主节点标识是指生成当前区块的主节点对应的节点标识。可以看出,当前区块含有的多数区块参数都能够唯一标识该区块,因此当前区块的区块特征可以唯一标识该当前区块。
区块链系统在每一轮进行新区块的上链时,由于区块链上的最新区块都不同,因此区块链上的当前区块以及当前区块的区块特征也不同,因此根据区块链上当前区块的区块特征在共识节点集合中确定的主节点是随机的,使得作恶节点无法预测出自己当选主节点的时机,从而无法在区块链系统中发起攻击,能够提升区块链系统的安全性。
步骤230,接收主节点广播的备选区块提案消息。
在本实施例中,主节点需要基于待上链的数据生成备选区块,具体来说,需要在主节点中执行将待上链的数据添加至备选区块的区块体中,以及将备选区块的区块信息添加至备选区块的区块头中,以得到备选区块的过程。备选区块具体是指待上链的区块,备选区块完成上链后,备选区块即为区块链上的当前区块,参与下一轮待上链区块对应的主节点的确定。在一些示例性的应用场景中,待上链的数据具体可以为交易列表。
备选区块的区块信息可以包括备选区块的区块高度、主节点标识、结果状态根、交易根、区块生成时间、区块链版本、区块链链标识、区块链上最新区块的区块哈希、该区块所打包的交易数量、区块链上的历史交易总数中的一种或多种,本处也不对此进行限制。
备选区块提案消息则可以是主节点根据主节点本地存储的投票签名集合、主节点随机值以及备选区块的区块内容生成的。其中,主节点本地存储的投票签名集合可以是共识节点针对备选区块的上一轮区块进行投票得到的投票签名集合,也即主节点本地存储的投票签名集合具体为当前区块中存入的投票签名集合;主节点随机值是根据当前区块的区块特征进行哈希运算得到的哈希值,备选区块的区块内容则是指待上链的数据。
主节点在对生成的备选区块提案消息进行签名后,则在共识节点集合所含有的各个共识节点之间广播备选区块提案消息。对共识节点集合中的其它共识节点来说,都将接收到主节点广播的备选区块提案消息。
步骤250,基于接收到的备选区块提案消息,对主节点的身份以及主节点生成的备选区块的内容进行验证。
如前所述的,主节点所广播的备选区块提案消息中含有备选区块的内容,基于此提案消息,共识节点集合中的各个共识节点可以对备选区块的内容进行验证。如果共识节点对备选区块的内容进行验证的结果符合共识算法的规定,例如规定所有共识节点均需要验证备选区块的内容是正确的,则表示备选区块的内容在共识节点之间通过共识。示例性的,若备选区块的内容为交易列表,各个共识节点则根据本地存储的交易信息对备选区块含有的交易列表进行验证。
并且,主节点广播的提案消息中还含有主节点本地存储的投票签名集合以及主节点随机值,基于这些信息,各个共识节点则可以对主节点的身份进行验证,若主节点的身份在各个共识节点之间通过共识,则表示主节点将备选区块添加至区块链上不会对区块链系统造成危害,以防止出现主节点伪造等情况,进而保证区块链系统的安全性。
步骤270,若主节点的身份以及主节点生成的备选区块的内容通过验证,则发起对于备选区块进行投票的广播,以使主节点在接收到共识节点广播的投票消息之后,将备选区块添加至所述区块链上。
在本实施例中,各个共识节点基于接收到的备选区块提案消息对主节点的身份以及备选区块的内容进行验证,并在验证通过后,发起对于备选区块进行投票的广播。也即是说,若共识节点针对备选区块广播了投票消息,则表示主节点的身份以及备选区块的内容在此共识节点中验证为是正确的。由此,若主节点接收到共识节点广播的投票消息符合共识算法的规定,则表示主节点的身份和备选区块的内容在各个共识节点之间达成共识。
具体的,各个共识节点发起对于备选区块进行投票的广播是指,各个共识节点根据主节点对应的节点标识以及备选区块的区块信息,生成投票数据,并对投票数据进行签名,得到投票数据对应的投票签名,然后根据投票数据和投票签名生成投票消息,并广播所生成的投票消息。投票签名是将投票数据组成数据序列后,对数据训练进行哈希运算得到的哈希值。
各个共识节点接收到共识节点广播的投票消息之后,基于所接收到的投票消息,确定主节点的身份以及备选区块的内容在共识节点集合中达成共识,因此将接收到的投票签名集合存入本地存储的备选区块,也即本地存储的最新本地区块中,然后将最新本地区块保存至本地存储的区块链上,由此保证各个共识节点本地存储的区块链上与区块链系统中的区块链是相同的。需要说明的是,共识节点本地存储的最新本地区块是共识节点基于待上链的数据生成的,且保存在共识节点的本地。
需要说明的是,主节点自身也作为共识节点,基于自身广播的备选区块提案消息,进行节点的身份以及所述备选区块的内容的验证,并在验证通过后发起对于所述备选区块进行投票的广播。
由于投票签名集合是由共识节点集合中的共识节点参与得到的,单个共识节点不可能预测和左右其它共识节点的投票签名,因此单个的共识节点无法伪造投票签名集合,根据投票签名集合计算的主节点随机值具有很强的随机性,因此可以有效地提高区块链系统的安全性,同时保证了公平。
如果各个共识节点对主节点的身份以及备选区块的内容达成共识,则表示将备选区块添加至区块链上不会给区块链系统带来风险,因此可以主节点将备选区块添加至区块链上,以作为区块链上的最新区块。
因此在本实施例中,由于主节点具备随机性,使得作恶节点无法预测自身当选主节点的时机,从而能够避免作恶节点对区块链系统进行攻击,并且所有的共识节点在共识过程中还对主节点的身份进行验证,只有当主节点和身份以及备选区块的内容在所有的共识节点之间达成共识后才能完成备选区块的上链,能够极大地提升区块链系统的安全性。
图4是图3所示实施例中步骤210在一个实施例的流程图。如图4所示,在一个示例性实施例中,共识节点根据区块链上的当前区块的区块特征,确定所述共识节点集合中含有的主节点,可以包括如下步骤:
步骤211,对当前区块含有的区块特征进行哈希运算,得到主节点随机值。
在本实施例中,备选区块的随机性具体通过主节点随机值体现,并且主节点随机值是对当前区块的多个区块特征进行拼接,并对拼接得到的区块特征序列进行哈希运算得到的。
示例性的,如果当前区块的区块特征包括区块高度(表示为“height”)、主节点标识(表示为“leader ID”)、结果状态根(表示为“StartRoot”)、交易根(表示为“TxRoot”)以及投票签名集合(表示为“QC”),主节点随机值则为针对区块特征序列“StartRoot+leaderID+StartRoot+TxRoot+QC”进行哈希运算得到的运算结果。例如,可以采用SHA256算法对区块特征序列进行哈希运算。
在一个实施例中,具体可以对区块特征序列进行哈希运算,以得到第一哈希值,然后再对第一哈希值进行哈希运算,从而得到主节点随机值。由此通过进行两次哈希运算,即可以加强主节点随机值的私密性。
例如,若将主节点随机值表示为“randomValue”,则可以通过如下公式计算该随机值:randomValue=SHA256(SHA265(StartRoot+leader ID+StartRoot+TxRoot+QC))。
步骤213,根据主节点随机值,在本地存储的节点标识列表中确定主节点对应的节点标识,节点标识列表中含有共识节点集合中的各个共识节点对应的节点标识。
如前所述,每个共识节点的本地存储有节点标识列表,节点标识列表中含有共识节点集合中的各个共识节点对应的节点标识,若确定了主节点对应的节点标识,即可以基于主节点对应的节点标识确定共识节点集合中含有的主节点。
示例性的,各个共识节点可以根据共识节点集合含有的共识节点的总数对主节点随机值取模,以得到主节点对应的模值,然后以此模值为索引,在共识节点集合对应的节点标识列表中查找排序序号为模值的节点标识,并将查找到的节点标识主节点对应的节点标识,该节点标识所对应的共识节点即为主节点。
在本实施例中,由于节点标识列表具体是由共识节点集合中所有的共识节点的节点标识构成的列表数据,因此在根据共识节点的总数对所述主节点随机值取模后,根据模值即可以在节点标识列表中将模值对应的节点标识作为共识节点所确定的主节点对应的节点标识。
由此,本实施例主节点是各个共识节点对区块链上当前区块的区块特征拼接得到的区块特征序列进行哈希运算得到主节点随机值后,根据此主节点随机值在共识节点集合中共识确定的,在保证了主节点具有随机性的同时,还确保了区块链系统中的主节点的唯一性。
图5是图3所示实施例中步骤250在一个实施例的流程图。如图5所示,在一示例性实施例中,基于接收到的备选区块提案消息,共识节点对主节点的身份进行验证,可以包括如下步骤:
步骤251,根据本地存储的当前区块含有的区块特征计算本地随机值。
如前所述的,在区块链系统中,各个共识节点的本地会同步存储区块链上的各个区块,因此各个共识节点从本地存储的当前区块中提取的区块特征应当与步骤210中确定主节点所依据的区块特征相同。
共识节点基于提取的区块特征计算本地随机值的过程也可以与步骤210中确定主节点时计算主节点随机值的过程相同,因此,各个共识节点所计算得到的本地随机值也应当与步骤210中确定主节点所计算得到的主节点随机值相同。
步骤153,若本地随机值与备选区块提案消息中含有的主节点随机值相同,则根据本地随机值,在本地存储的节点标识列表中确定所述主节点对应的节点标识。
各个共识节点基于自身计算得到的本地随机值,与主节点所广播的提案消息中含有的主节点随机值进行对比,如果二者随机值相同,则表示共识节点与主节点本地所存储的数据是同步的,因此根据本地随机值在本地存储的节点标识列表中确定主节点对应的节点标识。
共识节点根据本地随机值在本地存储的节点标识列表中确定主节点对应的标识的过程具体请参见步骤210中确定共识节点集合中的主节点的详细描述,本处不进行赘述。
如前所述的,由于各个共识节点本地均存储有相同的节点标识列表,因此在各个共识节点自身计算得到的本地随机值与提案消息中含有的主节点随机值相同的条件下,各个共识节点根据本地随机值在本地存储的节点标识列表中确定的主节点对应的节点标识,应当与主节点所广播的备选区块提案消息中含有的节点标识相同。
步骤255,若所确定的节点标识与备选区块提案消息中含有的节点标识相同,则确定主节点的身份通过验证。
如果确定的主节点对应的节点标识与备选区块提案消息中含有的节点标识相同,则表示发起备选区块提案消息的主节点是由各个共识节点所确定的主节点,因此可以确定发起备选区块提案消息的主节点的身份通过验证。
在另一示例性实施例中,如图6所示,共识节点还可以基于如下步骤对主节点的身份进行验证:
步骤310,根据本地存储的投票签名集合,对备选区块提案消息中含有的投票签名集合进行对比。
如前所述的,每个共识节点的本地均存储有一条相同的区块链,在执行每一轮新区块的上链之前,各个共识节点均基于自身存储的交易信息生成备选区块,这个备选区块即为本地存储的最新本地区块。主节点发起的备选区块提案消息中含有的投票签名集合,是区块链上当前区块中存储的投票签名集合。
若上一轮备选区块成功上链,上一轮备选区块则作为区块链上的当前区块,并且上一轮备选区块的内容以及生成上一轮备选区块的主节点的身份在共识节点之间达成共识,因此各个共识节点本地存储的区块链上的当前区块中含有的投票签名集合是相同的。
步骤330,若二者投票签名集合中含有的投票签名的数量和内容相同,则确定所述主节点的身份通过验证。
共识节点根据本地存储的投票签名集合,对接收到的备选区块提案消息中含有的投票签名集合进行对比,若二者投票签名集合中含有的投票签名的数量一致,并且二者投票签名集合中含有的投票签名的内容相同,则表示发起备选区块提案消息的主节点中同步的内容与共识节点中同步的内容是一致的,因此可以确定发起备选区块提案消息的主节点的身份通过验证。
在另外的实施例中,由于主节点广播的备选区块提案消息中还含有主节点针对备选区块提案消息的签名,因此可以根据各个共识节点获取到的主节点的公钥,对主节点针对备选区块提案消息的签名进行验证,如果确定主节点针对备选区块提案消息的签名正确,则表示发起备选区块提案消息的主节点是由各个共识节点投票选取得到的主节点,因此可以确定发起备选区块提案消息的主节点的身份在各个共识节点之间通过共识。
在另外的实施例中,各个共识节点基于接收到的备选区块提案消息对备选区块的内容进行验证的过程可以包括,对备选区块提案消息中含有的备选区块的内容进行哈希运算,得到备选区块对应的哈希值,以及对本地存储的最新本地区块的内容进行哈希运算,获得本地哈希值;若备选区块对应的哈希值与本地哈希值相同,表示二者内容是一致的,则确定备选区块的内容通过验证。
由此,本实施例在保证选取出来的主节点具有随机性的条件下,还进一步对主节点的身份和备选区块的内容进行验证,由此能够有效地维护区块链系统的安全性和稳定性。
本申请还提供一种区块链共识方法,该方法应用区块链系统,该区块链系统中含有共识节点集合,该共识节点集合中含有的共识节点可以区分为验证节点和主节点,且主节点同时也作为验证节点,本实施例的方法则可以由主节点具体执行。
该方法具体包括如下步骤:
根据区块链上的当前区块的区块特征,确定共识节点集合中含有的主节点,区块链上的各个区块含有的区块特征互不相同;
若确定共识节点自身为所述主节点,则基于待上链的数据生成备选区块,并广播备选区块提案消息;
基于自身广播的备选区块提案消息,进行主节点的身份以及备选区块的内容的验证,并在验证通过后发起对于备选区块进行投票的广播;
基于接收到的共识节点广播的投票消息,将备选区块添加至区块链上。需要说明的是,以上步骤的详细内容均在前述实施例中进行了相应描述,本实施例不再进行赘述。
本申请还提供一种区块链共识系统,该区块链共识系统含有共识节点集合,共识节点集合中含有主节点,主节点是根据区块链上当前区块的区块特征确定的。例如,区块链共识系统中的主节点可以根据图3所示实施例中的步骤210确定得到。
区块链系统在每一轮进行新区块的上链时,由于区块链上的最新区块(即当前区块)都不同,区块链上的当前区块以及当前区块的区块特征也不同,因此根据区块链上当前区块的区块特征在共识节点集合中确定的主节点是随机的,使得作恶节点无法预测出自己当选主节点的时机,从而无法在区块链系统中发起攻击,能够提升区块链系统的安全性。
在区块链共识系统中,主节点基于待上链的数据生成备选区块,并广播所述备选区块对应的备选区块提案消息。共识节点集合中的各个共识节点基于主节点广播的备选区块提案消息,对主节点的身份以及备选区块的内容进行共识,并在共识通过时将备选区块添加至区块链上。
由于所有的共识节点在共识过程中还对主节点的身份进行验证,只有当主节点和身份以及备选区块的内容在所有的共识节点之间达成共识后才能完成备选区块的上链,从而极大地提升区块链系统的安全性。
在一些示例性的应用场景中,区块链系统需要根据区块链上的当前区块的区块特征计算主节点对应的随机值,并基于此随机值投票选取出本轮执行区块链上链的主节点。选取得到的主节点负责从交易池中获取通过鉴权的交易列表,然后将交易列表打包为备选区块,并将备选区块对应的备选区块提案消息在共识节点集合之间及进行广播。共识节点集合中的各个共识节点对接收到的备选区块提案消息进行验证鉴权,具体包括对主节点的身份以及备选区块的内容进行验证,如果共识节点对主节点的身份和备选区块的内容进行验证的结果符合共识算法的规定,则表示备选区块提案消息在各个共识节点之间通过共识,因此可以将备选区块添加至区块链上,以保证区块链系统的安全。
图7是根据一示例性实施例示出的一种区块链共识装置的框图。该区块链共识装置可以配置于图1所示的区块链系统100中的共识界节点101中,如图7所示,该装置包括主节点确定模块410、广播接收430、信息验证模块450和投票广播模块470。
其中,主节点确定模块410用于根据区块链上的当前区块的区块特征,确定共识节点集合中含有的主节点,区块链上的各个区块含有的区块特征互不相同。广播接收模块430用于接收所述主节点广播的备选区块提案消息。信息验证模块450用于基于接收到的所述备选区块提案消息,对所述主节点的身份以及所述主节点生成的备选区块的内容进行验证。投票广播模块470用于在主节点的身份以及主节点生成的备选区块的内容通过验证时,发起对于备选区块进行投票的广播,以使主节点在接收到共识节点广播的投票消息之后,将备选区块添加至区块链上。
在另一示例性实施例中,主节点确定模块410包括随机值确定单元和节点确定单元。随机值确定单元用于对当前区块含有的区块特征进行哈希运算,得到主节点随机值。节点确定单元用于根据主节点随机值,在本地存储的节点标识列表中确定主节点对应的节点标识,节点标识列表中含有共识节点集合中的各个共识节点对应的节点标识。
在另一示例性实施例中,随机值确定单元包括模值计算子单元和模值索引子单元。模值计算子单元用于根据共识节点集含有的共识节点的总数对主节点随机值取模,获得主节点对应的模值。模值索引子单元用于以模值为索引,在共识节点集合对应的节点标识列表中查找排列序号为模值的节点标识,将查找到的节点标识主节点对应的节点标识。
在另一示例性实施例中,随机值确定单元包括区块特征获取子单元和随机值计算子单元。区块特征获取子单元用于获取当前区块的多个区块特征。随机值计算子单元用于将提取得到的多个区块特征进行拼接,并对拼接得到的区块特征序列进行哈希运算,得到主节点随机值。
在另一示例性实施例中,随机值计算子单元包括第一哈希运算子单元和第二哈希运算子单元。包括第一哈希运算子单元用于对区块特征序列进行哈希运算,得到第一哈希值。第二哈希运算子单元用于对第一哈希值进行哈希运算,以得到主节点随机值。
在另一示例性实施例中,投票广播模块470包括投票数据生成子单元、投票数据签名子单元和投票消息广播子单元。投票数据生成子单元用于基于主节点对应的节点标识以及备选区块的区块信息,生成投票数据。投票数据签名子单元用于对投票数据进行签名,得到投票签名。投票消息广播子单元用于根据投票数据和投票签名生成投票消息,并广播投票消息。
在另一示例性实施例中,该装置还包括本地区块上链模块,本地区块上链模块用于基于接收到共识节点广播的投票消息,确定主节点的身份以及备选区块的内容在共识节点集合中达成共识,然后将共识节点广播的投票消息中含有的投票签名构成的投票签名集合存入本地存储的最新本地区块中,并将含有最新本地区块添加至本地存储的区块链上。
在另一示例性实施例中,备选区块提案消息中含有主节点随机值以及主节点对应的节点标识;信息验证模块450包括本地随机值计算单元、节点标识确定单元和节点标识对比单元。本地随机值计算单元用于根据本地存储的当前区块含有的区块特征计算本地随机值。节点标识确定单元用于在本地随机值与提案消息中含有的主节点随机值相同的情况下,根据本地随机值,在本地存储的节点标识列表中确定主节点对应的节点标识。节点标识对比单元用于在所确定的主节点对应的节点标识与备选区块提案消息中含有的节点标识相同的情况下,确定主节点的身份通过验证。
在另一示例性实施例中,提案消息中含有主节点本地存储的投票签名集合;信息验证模块450包括投票签名对比单元,投票签名对比单元用于根据本地存储的投票签名集合,对备选区块提案消息中含有的投票签名集合进行对比,若二者投票签名集合中含有的投票签名的数量和内容相同,则确定主节点的身份通过验证。
在另一示例性实施例中,备选区块提案消息中含有主节点针对备选区块提案消息的签名;信息验证模块450包括公钥验证单元,公钥验证单元用于根据获取到的主节点的公钥,对主节点针对备选区块提案消息的签名进行验证,如果验证主节点针对备选区块提案消息的签名正确,则确定主节点的身份通过验证。
在另一示例性实施例中,信息验证模块450包括哈希值计算单元和哈希值对比单元。哈希值计算单元用于对备选区块提案消息中含有的备选区块的内容进行哈希运算,得到备选区块对应的哈希值,以及对本地存储的最新本地区块的内容进行哈希运算,获得本地哈希值。哈希值对比单元用于对比备选区块对应的哈希值与本地哈希值是否相同,如果是,则确定备选区块的内容通过验证。
本申请还提供另一种区块链共识装置,该装置配置于区块链系统含有的共识节点中,该装置包括:主节点确定模块,用于根据区块链上的当前区块的区块特征,确定共识节点集合中含有的主节点,区块链上的各个区块含有的区块特征互不相同;区块广播模块,用于在确定共识节点自身为主节点的情况下,基于待上链的数据生成备选区块,并广播备选区块提案消息;验证投票模块,用于基于自身广播的备选区块提案消息,进行主节点的身份以及备选区块的内容的验证,并在验证通过后发起对于备选区块进行投票的广播;区块上链模块,用于基于接收到的共识节点广播的投票消息,将备选区块添加至所述区块链上。
需要说明的是,上述实施例所提供的装置与上述实施例所提供的方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
本申请的实施例还提供了一种电子设备,包括处理器和存储器,其中,存储器上存储有计算机可读指令,该计算机可读指令被处理器执行时实现如前所述的区块链共识方法。
图8是根据一示例性实施例示出的一种电子设备的结构示意图。
需要说明的是,该电子设备只是一个适配于本申请的示例,不能认为是提供了对本申请的使用范围的任何限制。该电子设备也不能解释为需要依赖于或者必须具有图8中示出的示例性的电子设备中的一个或者多个组件。
如图8所示,在一示例性实施例中,电子设备包括处理组件801、存储器802、电源组件803、多媒体组件804、音频组件805、传感器组件807和通信组件808。其中,上述组件并不全是必须的,电子设备可以根据自身功能需求增加其它组件或减少某些组件,本实施例不作限定。
处理组件801通常控制电子设备的整体操作,诸如与显示、数据通信以及日志数据处理相关联的操作等。处理组件801可以包括一个或多个处理器809来执行指令,以完成上述区块链共识方法的全部或部分步骤。此外,处理组件801可以包括一个或多个模块,便于处理组件801和其它组件之间的交互。例如,处理组件801可以包括多媒体模块,以方便多媒体组件804和处理组件801之间的交互。
存储器802被配置为存储各种类型的数据以支持在电子设备的操作,这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器802中存储有一个或多个模块,该一个或多个模块被配置成由该一个或多个处理器809执行,以完成上述实施例中所描述的区块链共识方法中的全部或者部分步骤。
电源组件803为电子设备的各种组件提供电力。电源组件803可以包括电源管理系统,一个或多个电源,及其它与为电子设备生成、管理和分配电力相关联的组件。
多媒体组件804包括在电子设备和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括TP(Touch Panel,触摸面板)和LCD(Liquid Crystal Display,液晶显示器)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
音频组件805被配置为输出和/或输入音频信号。例如,音频组件805包括一个麦克风,当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。在一些实施例中,音频组件805还包括一个扬声器,用于输出音频信号。
传感器组件807包括一个或多个传感器,用于为电子设备提供各个方面的状态评估。例如,传感器组件807可以检测到电子设备的打开/关闭状态,还可以检测电子设备的温度变化。
通信组件808被配置为便于电子设备和其它设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,例如Wi-Fi(Wireless-Fidelity,无线网络)。
可以理解,图8所示的结构仅为示意,电子设备该可以包括比图8中所示更多或更少的组件,或者具有与图8所示不同的组件。图8中所示的各组件均可以采用硬件、软件或者其组合来实现。
本申请的另一方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前所述的区块链共识方法。该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
本申请的另一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的区块链共识方法。
上述内容,仅为本申请的较佳示例性实施例,并非用于限制本申请的实施方案,本领域普通技术人员根据本申请的主要构思和精神,可以十分方便地进行相应的变通或修改,故本申请的保护范围应以权利要求书所要求的保护范围为准。
Claims (19)
1.一种区块链共识方法,其特征在于,所述方法应用于区块链系统,所述区块链系统含有共识节点集合,所述方法由所述共识节点集合中的共识节点执行,所述方法包括:
在每一轮新区块上链时,根据区块链上的当前区块的区块特征,从所述共识节点集合中确定所述当前区块的下一个区块对应的主节点,所述区块链上的各个区块含有的区块特征互不相同;所述区块链上的当前区块为所述区块链上的最新区块;
接收所述主节点广播的备选区块提案消息;
基于接收到的所述备选区块提案消息,对所述主节点的身份以及所述主节点生成的备选区块的内容进行验证;
若所述主节点的身份以及所述主节点生成的备选区块的内容通过验证,则发起对于所述备选区块进行投票的广播,以使所述主节点在接收到共识节点广播的投票消息之后,将所述备选区块添加至所述区块链上,以基于所述备选区块的区块特征从所述共识节点集合中确定所述备选区块的下一个区块对应的主节点;
其中,根据区块链上的当前区块的区块特征,从所述共识节点集合中确定所述当前区块的下一个区块对应的主节点,包括:
获取所述当前区块含有的多个区块特征;
将所述多个区块特征进行拼接,并对拼接得到的区块特征序列进行哈希运算,以得到主节点随机值;
根据所述主节点随机值,在本地存储的节点标识列表中确定所述主节点对应的节点标识,所述节点标识列表中含有所述共识节点集合中的各个共识节点对应的节点标识。
2.根据权利要求1所述的方法,其特征在于,根据所述主节点随机值,在本地存储的节点标识列表中确定所述主节点对应的节点标识,包括:
根据所述共识节点集合含有的共识节点的总数对所述主节点随机值取模,获得所述主节点对应的模值;
以所述模值为索引,在所述节点标识列表中查找排列序号为所述模值的节点标识,将查找到的节点标识作为所述主节点对应的节点标识。
3.根据权利要求1所述的方法,其特征在于,所述备选区块提案消息中含有主节点随机值以及所述主节点对应的节点标识;基于接收到的所述备选区块提案消息,对所述主节点的身份进行验证,包括:
根据本地存储的当前区块含有的区块特征计算本地随机值;
若所述本地随机值与所述主节点随机值相同,则根据所述本地随机值在本地存储的节点标识列表中确定所述主节点对应的节点标识;
若确定的所述节点标识与所述备选区块提案消息中含有的节点标识相同,则确定所述主节点的身份通过验证。
4.根据权利要求1所述的方法,其特征在于,所述备选区块提案消息中含有所述主节点所存储的投票签名集合;基于接收到的所述备选区块提案消息,对所述主节点的身份进行验证,包括:
根据本地存储的投票签名集合,对所述备选区块提案消息中含有的投票签名集合进行对比;
若二者投票签名集合中含有的投票签名的数量和内容相同,则确定所述主节点的身份通过验证。
5.根据权利要求1所述的方法,其特征在于,所述备选区块提案消息中含有所述主节点针对所述备选区块提案消息的签名;基于接收到的所述备选区块提案消息,对所述主节点的身份进行验证,包括:
根据获取到的所述主节点的公钥,对所述主节点针对所述备选区块提案消息的签名进行验证;
如果验证所述主节点针对所述备选区块提案消息的签名正确,则确定所述主节点的身份通过验证。
6.根据权利要求1所述的方法,其特征在于,基于接收到的所述备选区块提案消息,对所述备选区块的内容进行验证,包括:
对所述备选区块提案消息中含有的所述备选区块的内容进行哈希运算,得到所述备选区块对应的哈希值,以及对本地存储的最新本地区块的内容进行哈希运算,获得本地哈希值;
若所述备选区块对应的哈希值与所述本地哈希值相同,则确定所述备选区块的内容通过验证。
7.根据权利要求1所述的方法,其特征在于,发起对于所述备选区块进行投票的广播,包括:
基于所述主节点对应的节点标识以及所述备选区块的区块信息,生成投票数据;
对所述投票数据进行签名,得到投票签名;
根据所述投票数据和所述投票签名生成投票消息,并广播所述投票消息。
8.根据权利要求1所述的方法,其特征在于,在发起对于所述备选区块进行投票的广播之后,所述方法还包括:
基于接收到共识节点广播的投票消息,确定所述主节点的身份以及所述备选区块的内容在所述共识节点集合中达成共识;
将共识节点广播的投票消息中含有的投票签名构成的投票签名集合存入本地存储的最新本地区块中,并将含有所述最新本地区块添加至本地存储的区块链上。
9.一种区块链共识方法,其特征在于,所述方法应用于区块链系统,所述区块链系统含有共识节点集合,所述方法由所述共识节点集合中的共识节点执行,所述方法包括:
在每一轮新区块上链时,根据区块链上的当前区块的区块特征,从所述共识节点集合中确定所述当前区块的下一个区块对应的主节点,所述区块链上的各个区块含有的区块特征互不相同;所述区块链上的当前区块为所述区块链上的最新区块;
若确定共识节点自身为所述主节点,则基于待上链的数据生成备选区块,并广播备选区块提案消息;
基于自身广播的所述备选区块提案消息,进行所述主节点的身份以及所述备选区块的内容的验证,并在验证通过后发起对于所述备选区块进行投票的广播;
基于接收到的共识节点广播的投票消息,将所述备选区块添加至所述区块链上,以基于所述备选区块的区块特征从所述共识节点集合中确定所述备选区块的下一个区块对应的主节点;
其中,根据区块链上的当前区块的区块特征,从所述共识节点集合中确定所述当前区块的下一个区块对应的主节点,包括:
获取所述当前区块含有的多个区块特征;
将所述多个区块特征进行拼接,并对拼接得到的区块特征序列进行哈希运算,以得到主节点随机值;
根据所述主节点随机值,在本地存储的节点标识列表中确定所述主节点对应的节点标识,所述节点标识列表中含有所述共识节点集合中的各个共识节点对应的节点标识。
10.一种区块链共识装置,其特征在于,所述装置配置于共识节点集合的共识节点中,区块链系统含有所述共识节点集合,所述装置包括:
主节点确定模块,用于在每一轮新区块上链时,获取当前区块含有的多个区块特征,将所述多个区块特征进行拼接,并对拼接得到的区块特征序列进行哈希运算,以得到主节点随机值,根据所述主节点随机值,在本地存储的节点标识列表中确定所述主节点对应的节点标识;所述区块链上的各个区块含有的区块特征互不相同;所述区块链上的当前区块为所述区块链上的最新区块;所述节点标识列表中含有所述共识节点集合中的各个共识节点对应的节点标识;
广播接收模块,用于接收所述主节点广播的备选区块提案消息;
信息验证模块,用于基于接收到的所述备选区块提案消息,对所述主节点的身份以及所述主节点生成的备选区块的内容进行验证;
投票广播模块,用于在所述主节点的身份以及所述主节点生成的备选区块的内容通过验证时,发起对于所述备选区块进行投票的广播,以使所述主节点在接收到共识节点广播的投票消息之后,将所述备选区块添加至所述区块链上,以基于所述备选区块的区块特征从所述共识节点集合中确定所述备选区块的下一个区块对应的主节点。
11.根据权利要求10所述的装置,其特征在于,所述主节点确定模块包括:
模值计算子单元,用于根据所述共识节点集合含有的共识节点的总数对所述主节点随机值取模,获得所述主节点对应的模值;
模值索引子单元,用于以所述模值为索引,在所述节点标识列表中查找排列序号为所述模值的节点标识,将查找到的节点标识作为所述主节点对应的节点标识。
12.根据权利要求10所述的装置,其特征在于,所述备选区块提案消息中含有主节点随机值以及所述主节点对应的节点标识;所述信息验证模块包括:
本地随机值计算单元,用于根据本地存储的当前区块含有的区块特征计算本地随机值;
节点标识确定单元,用于若所述本地随机值与所述主节点随机值相同,则根据所述本地随机值在本地存储的节点标识列表中确定所述主节点对应的节点标识;
节点标识对比单元,用于若确定的所述节点标识与所述备选区块提案消息中含有的节点标识相同,则确定所述主节点的身份通过验证。
13.根据权利要求10所述的装置,其特征在于,所述备选区块提案消息中含有所述主节点所存储的投票签名集合;所述信息验证模块包括:
投票签名对比单元,用于根据本地存储的投票签名集合,对所述备选区块提案消息中含有的投票签名集合进行对比,若二者投票签名集合中含有的投票签名的数量和内容相同,则确定所述主节点的身份通过验证。
14.根据权利要求10所述的装置,其特征在于,所述备选区块提案消息中含有所述主节点针对所述备选区块提案消息的签名;所述信息验证模块包括:
公钥验证单元,用于根据获取到的所述主节点的公钥,对所述主节点针对所述备选区块提案消息的签名进行验证;如果验证所述主节点针对所述备选区块提案消息的签名正确,则确定所述主节点的身份通过验证。
15.根据权利要求10所述的装置,其特征在于,所述信息验证模块包括:
哈希值计算单元,用于对所述备选区块提案消息中含有的所述备选区块的内容进行哈希运算,得到所述备选区块对应的哈希值,以及对本地存储的最新本地区块的内容进行哈希运算,获得本地哈希值;
哈希值对比单元,用于若所述备选区块对应的哈希值与所述本地哈希值相同,则确定所述备选区块的内容通过验证。
16.根据权利要求10所述的装置,其特征在于,所述投票广播模块包括:
投票数据生成子单元,用于基于所述主节点对应的节点标识以及所述备选区块的区块信息,生成投票数据;
投票数据签名子单元,用于对所述投票数据进行签名,得到投票签名;
投票消息广播子单元,用于根据所述投票数据和所述投票签名生成投票消息,并广播所述投票消息。
17.根据权利要求10所述的装置,其特征在于,所述装置还包括:
本地区块上链模块,用于基于接收到共识节点广播的投票消息,确定所述主节点的身份以及所述备选区块的内容在所述共识节点集合中达成共识;将共识节点广播的投票消息中含有的投票签名构成的投票签名集合存入本地存储的最新本地区块中,并将含有所述最新本地区块添加至本地存储的区块链上。
18.一种电子设备,其特征在于,包括:
存储器,存储有计算机可读指令;
处理器,读取存储器存储的计算机可读指令,以执行权利要求1-8中的任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1-8中的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010925893.6A CN112118239B (zh) | 2020-09-03 | 2020-09-03 | 区块链共识方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010925893.6A CN112118239B (zh) | 2020-09-03 | 2020-09-03 | 区块链共识方法及装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112118239A CN112118239A (zh) | 2020-12-22 |
CN112118239B true CN112118239B (zh) | 2022-01-11 |
Family
ID=73803445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010925893.6A Active CN112118239B (zh) | 2020-09-03 | 2020-09-03 | 区块链共识方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112118239B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287033B (zh) * | 2020-12-24 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、设备以及计算机可读存储介质 |
CN112734586A (zh) * | 2021-01-27 | 2021-04-30 | 国网信息通信产业集团有限公司 | 基于区块链的数据处理方法及系统 |
CN112907369B (zh) * | 2021-02-08 | 2022-04-12 | 网易(杭州)网络有限公司 | 基于区块链的数据共识方法及装置、电子设备、存储介质 |
CN113254272B (zh) * | 2021-06-09 | 2022-09-13 | 腾讯科技(深圳)有限公司 | 区块链网络的数据处理方法、装置、计算机设备和介质 |
CN113505024B (zh) * | 2021-07-08 | 2024-02-23 | 网易(杭州)网络有限公司 | 联盟链的数据处理方法、装置、电子设备及存储介质 |
CN114065246B (zh) * | 2021-11-16 | 2022-08-19 | 上海柯林布瑞信息技术有限公司 | 医疗区块链数据上链方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111556133A (zh) * | 2020-04-26 | 2020-08-18 | 布比(北京)网络技术有限公司 | 区块链共识方法、系统及计算机存储介质、电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11063746B2 (en) * | 2018-04-19 | 2021-07-13 | Electronics And Telecommunications Research Institute | Method for selecting consensus node using nonce and method and apparatus for generating blockchain using the same |
CN110941859A (zh) * | 2018-09-21 | 2020-03-31 | 上海派链信息科技有限公司 | 用于区块链形成共识的方法、设备、计算机可读存储介质和计算机程序产品 |
CN110943838A (zh) * | 2018-09-21 | 2020-03-31 | 上海派链信息科技有限公司 | 区块链网络中确定区块的共识的方法、设备和存储介质 |
CN109831425B (zh) * | 2019-01-25 | 2022-02-15 | 中国联合网络通信集团有限公司 | 区块链共识方法、装置、设备及计算机可读存储介质 |
CN110289966B (zh) * | 2019-06-19 | 2021-08-03 | 西南交通大学 | 基于拜占庭容错的抗自适应攻击联盟链共识方法 |
CN111427957B (zh) * | 2020-03-26 | 2021-05-11 | 财付通支付科技有限公司 | 区块链投票信息校验方法、装置、设备以及存储介质 |
-
2020
- 2020-09-03 CN CN202010925893.6A patent/CN112118239B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111556133A (zh) * | 2020-04-26 | 2020-08-18 | 布比(北京)网络技术有限公司 | 区块链共识方法、系统及计算机存储介质、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112118239A (zh) | 2020-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112118239B (zh) | 区块链共识方法及装置、电子设备、存储介质 | |
US10862959B2 (en) | Consensus system and method for adding data to a blockchain | |
CN107888562B (zh) | 一种平行链接入互联链的数据验证和收发方法、节点及系统 | |
CN107396360B (zh) | 区块验证方法及装置 | |
CN109542888B (zh) | 区块链的数据修改和同步方法、装置、设备及存储介质 | |
CN108769230B (zh) | 交易数据存储方法、装置、服务器及存储介质 | |
CN110505305B (zh) | 一种区块链分片方法、装置及区块链系统 | |
CN112257095B (zh) | 一种联盟链共识节点的选择方法 | |
CN108848148B (zh) | 基于区块链的交易信息确认方法及装置 | |
CN110177124B (zh) | 基于区块链的身份认证方法及相关设备 | |
CN110569251A (zh) | 一种数据处理方法、相关设备及计算机可读存储介质 | |
CN112000744B (zh) | 一种签名方法及相关设备 | |
CN110380847A (zh) | 一种区块链共识方法和装置 | |
EP4191498A1 (en) | Data communication method and apparatus, computer device, and storage medium | |
CN109861996B (zh) | 基于区块链的关系证明方法、装置、设备及存储介质 | |
US11362836B2 (en) | Consensus protocol for permissioned ledgers | |
CN113328997A (zh) | 联盟链跨链系统及方法 | |
CN113888164A (zh) | 区块链交易池实现方法、装置、计算机设备和存储介质 | |
CN110990790B (zh) | 一种数据处理方法及设备 | |
CN110619022B (zh) | 基于区块链网络的节点检测方法、装置、设备及存储介质 | |
CN110545261A (zh) | 一种应用于区块链网络中的共识算法 | |
CN114862397B (zh) | 一种基于双链结构的双解耦区块链分布式方法 | |
CN115964755A (zh) | 数据授权及验证方法、装置、设备和存储介质 | |
CN114465714B (zh) | 联盟链中的节点配置方法及系统 | |
CN112036884B (zh) | 一种签名方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |