CN110399424B - 区块生成方法、装置、区块链节点及存储介质 - Google Patents
区块生成方法、装置、区块链节点及存储介质 Download PDFInfo
- Publication number
- CN110399424B CN110399424B CN201810369102.9A CN201810369102A CN110399424B CN 110399424 B CN110399424 B CN 110399424B CN 201810369102 A CN201810369102 A CN 201810369102A CN 110399424 B CN110399424 B CN 110399424B
- Authority
- CN
- China
- Prior art keywords
- block
- proposal information
- link
- proposal
- endorsement
- 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/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0876—Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
Landscapes
- Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供一种区块生成方法、装置、区块链节点及存储介质,该方法包括:第一区块链接节点接收多个第二区块链节点发送的区块生成请求,区块生成请求包括待生成区块的提案信息;第一区块链节点根据第一规则,确定各提案信息的排列顺序;第一区块链节点按照排列顺序,在区块链中生成各提案信息对应的区块。第一区块链节点可以接收多个第二区块链节点发送的区块生成请求,按照排列顺序,批量在区块链中生成区块,从而使背书过程与区块生成入链过程可以并行进行,大大提高了出块入链的效率,进而提高数据写入性能和吞吐。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块生成方法、装置、区块链节点及存储介质。
背景技术
随着计算机技术的不断发展,区块链技术因其有效性和安全性逐渐成为当前的热门话题,当前,多种业务模式都开始或已经引入区块链技术,以为用户提供更为有效的安全的服务。
现有的区块链技术,在实际应用中,通常需要区块链节点接收用户通过终端或客户端发送的待处理的交易数据,并在通过对交易数据的验证后,向区块链系统中的其他区块链节点发起共识,在达成共识后,将达成共识的区块加入到区块链中,然后才能开始下一个区块的生成。
现有的区块生成方法,共识效率较低,出块速度慢,导致区块链的TPS(Transaction Per Second,每秒钟区块链系统能够处理的交易的数量)较低,限制了区块链的应用范围。
发明内容
本申请提供一种区块生成方法、装置、区块链节点及存储介质,以解决现有技术出块效率低等缺陷。
本申请第一个方面提供一种区块生成方法,包括:
第一区块链接节点接收多个第二区块链节点发送的区块生成请求,所述区块生成请求包括待生成区块的提案信息;
所述第一区块链节点根据第一规则,确定各所述提案信息的排列顺序;
所述第一区块链节点按照所述排列顺序,在区块链中生成各所述提案信息对应的区块。
本申请第二个方面提供一种区块生成方法,包括:
第二区块链节点接收客户端发送的提案请求,所述提案请求包括一笔或多笔交易数据;
所述第二区块链节点对所述提案请求进行校验并执行合约交易后,向区块链系统中的其他第二区块链节点发起背书申请;
所述第二区块链节点将携带通过所述背书申请的提案信息的区块生成请求发送给第一区块链节点,以使所述第一区块链节点生成所述提案信息对应的区块。
本申请第三个方面提供一种区块生成装置,包括:
第一接收模块,用于第一区块链接节点接收多个第二区块链节点发送的区块生成请求,所述区块生成请求包括待生成区块的提案信息;
确定模块,用于所述第一区块链节点根据第一规则,确定各所述提案信息的排列顺序;
生成模块,用于所述第一区块链节点按照所述排列顺序,在区块链中生成各所述提案信息对应的区块。
本申请第四个方面提供一种区块生成装置,包括:
第二接收模块,用于第二区块链节点接收客户端发送的提案请求,所述提案请求包括一笔或多笔交易数据;
处理模块,用于所述第二区块链节点对所述提案请求进行校验并执行合约交易后,向区块链系统中的其他第二区块链节点发起背书申请;
发送模块,用于所述第二区块链节点将携带通过所述背书申请的提案信息的区块生成请求发送给第一区块链节点,以使所述第一区块链节点生成所述提案信息对应的区块。
本申请第五个方面提供一种区块链节点,包括:至少一个处理器和存储器;
所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现第一个方面提供的方法。
本申请第六个方面提供一种区块链节点,包括:至少一个处理器和存储器;
所述存储器存储计算机程序;所述处理器执行所述存储器存储的计算机程序,以实现第二个方面提供的方法。
本申请的第七个方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现第一个方面提供的方法。
本申请的第八个方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现第二个方面提供的方法。
本申请提供的区块生成方法、装置、区块链节点及存储介质,第一区块链节点可以接收多个第二区块链节点发送的区块生成请求,按照排列顺序,批量在区块链中生成区块,从而使背书过程与区块生成入链过程可以并行进行,解决了现有技术中需要串行通过生成一个新区块、进行共识算法通过背书申请、新区块入链生效的过程,在一个区块生成后才能开始下一个区块,从而导致出块慢,数据处理效率低等问题,大大提高了出块入链的效率,进而提高数据写入性能和吞吐。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的区块链系统的结构示意图;
图2为本申请一实施例提供的区块生成方法的流程示意图;
图3为本申请另一实施例提供的区块生成方法的流程示意图;
图4为本申请再一实施例提供的区块生成方法的流程示意图;
图5为本申请又一实施例提供的区块生成方法的流程示意图;
图6为本申请一实施例提供的区块生成装置的结构示意图;
图7为本申请另一实施例提供的区块生成装置的结构示意图;
图8为本申请一实施例提供的区块链节点的结构示意图;
图9为本申请一实施例提供的区块链节点的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请所涉及的名词进行解释:
区块链:狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
区块链系统:是指将区块链构建在现有通信网络中,由多个区块链节点形成一个区块链系统,系统中的每个区块链节点之间可以共享广播在区块链系统中的信息。各区块链节点之间属于对等的关系。
区块:是指区块链中包含的一张列表,有着持续增长并且排列整齐的记录。每个区块都包含一个时间戳和一个与前一区块的链接。
背书:是指其他区块链节点对背书申请签名的过程,背书申请即申请其他区块链节点对本次提案请求达成共识,允许生成新的区块。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
本申请实施例提供的区块生成方法适用于以下场景:如图1所示,为本申请实施例提供的区块链系统的结构示意图。该区块链系统可以包括多个第二区块链节点和一个第一区块链节点。在实际应用中,各第二区块链节点可以对应参与方的客户端,即参与方的客户端可以向第二区块链节点发起提案请求。具体的,一个客户端可以向一个第二区块链节点发起提案请求,也可以并行向多个第二区块链节点发起提案请求。一个提案请求中可以包括一笔或多笔交易数据。由各第二区块链节点向区块链系统中的其他第二区块链节点发起背书申请,通过背书申请后,各第二区块链节点向第一区块链节点发送区块生成请求,由第一区块链节点批量出块入链。由于参与方可以根据自己当前交易量决定单次提案请求中的交易量,以及决定提案请求发往的第二区块链节点数,第二区块链节点可以灵活扩展,需要支持更大量的交易吞吐,只需要部署更多的第二区块链节点,集群性能高。并且,批量出块入链的设计,节省了现有技术中多个区块的生成需要执行多次共识算法和背书策略的时间,有效提升了出块入链的效率。
本申请实施例中,所有的网络通讯采用基于TLS的加密安全通讯方式,比如HTTP+TLS,grpc等,对于可信任的网络环境,可选为http请求,以提升网络通讯效率。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
本实施例提供一种区块生成方法,用于在区块链中生成新的区块。本实施例的执行主体为区块链节点,为了便于说明,称为第一区块链节点。
如图2所示,为本实施例提供的区块生成方法的流程示意图,该方法包括:
步骤101,第一区块链接节点接收多个第二区块链节点发送的区块生成请求,区块生成请求包括待生成区块的提案信息。
具体的,多个第二区块链节点可以并行向第一区块链节点发送区块生成请求,每个区块生成请求包括待生成区块的提案信息,待生成区块的该提案信息是在其对应的第二区块链节点通过了背书申请的提案信息,即各第二区块链节点接收其对应的客户端发送的提案请求,对提案请求进行校验并执行合约交易后,向其他第二区块链节点发起背书申请,并最终达成共识通过背书申请后的提案信息,每个提案信息中可以包括一笔或多笔交易数据。
第一区块链则可以接收多个第二区块链节点发送的区块生成请求,并进行批量出块入链。这样就打破了现有技术中在同一时刻,只能有一个区块的串行生成过程在进行的情况,在多个第二区块链节点并行进行多个提案信息的背书申请的同时,第一区块链节点可以处理各第二区块链节点已经提交来的提案信息的区块生成入链过程,节省了现有技术中多个区块的生成需要执行多次共识算法和背书策略的时间,有效提升了出块入链的效率。
步骤102,第一区块链节点根据第一规则,确定各提案信息的排列顺序。
具体的,第一区块链接收到多个第二区块链节点发送的区块生成请求后,按照一定的策略(即第一规则)对各区块生成请求中的提案信息进行排序,确定各提案信息的排列顺序,以确定提案信息对应的区块的生成顺序。
其中,第一规则可以包括:按时间顺序排序、按背书成功率排序、按交易量排序以及其他任意可以实时的排序方式等等。具体可以根据实际需求进行设置,本实施例不做限定。
步骤103,第一区块链节点按照排列顺序,在区块链中生成各提案信息对应的区块。
具体的,确定了各提案信息的排列顺序即确定了各提案信息对应的区块的生成顺序,第一区块链节点则可以按照排列顺序,依次在区块链中生成各提案信息对应的区块。具体的生成区块的操作可以是现有技术中任意可实施的操作,本实施例不做限定。
示例性的,将提案信息中的交易数据记录到区块主体中,生成交易信息Merkle树,根据版本号、父区块哈希值、Merkle根、时间戳、随机数等生成区块头,区块头与区块主体形成了区块。
本实施例提供的区块生成方法,第一区块链节点可以接收多个第二区块链节点发送的区块生成请求,按照排列顺序,批量在区块链中生成区块,从而使背书过程与区块生成入链过程可以并行进行,解决了现有技术中需要串行通过生成一个新区块、进行共识算法通过背书申请、新区块入链生效的过程,在一个区块生成后才能开始下一个区块,从而导致出块慢,数据处理效率低等问题,大大提高了出块入链的效率,进而提高数据写入性能和吞吐。
实施例二
本实施例对实施例一提供的区块生成方法做进一步补充说明。
如图3所示,为本实施例提供的区块生成方法的流程示意图。
作为一种可实施的方式,在上述实施例一的基础上,可选地,区块生成请求包括多个子提案信息,多个子提案信息为第二区块链节点根据第二规则将提案信息拆分成的具有拆分顺序的多个提案信息。相应的,步骤103具体包括:第一区块链节点按照拆分顺序,在区块链中生成各子提案信息对应的区块。
具体的,在各第二区块链节点完成一次背书申请,要将通过背书申请的提案信息携带在区块生成请求中发送给第一区块链节点时,还可以根据预设的判断该提案信息是否太大,若太大导致生成的区块过于庞大,会影响出块效率。若提案信息太大,第二区块链节点还可以根据第二规则将提案信息拆分成具有拆分顺序的多个子提案信息,并对各子提案信息进行签名,将签名后的各子提案信息作为提案信息携带在区块生成请求中,即,拆分后的每个子提案信息还是相当于一个提案信息,为了区分说明,称为子提案信息。
可选的,第一区块链节点接收到的多个区块生成请求中,可以是有一个区块生成请求包括多个子提案信息,也可以是有两个或两个以上的区块生成请求中包括多个子提案信息。
第一区块链节点在接收到多个区块生成请求后,若其中某个或多个区块生成请求中包括多个子提案信息,其他的区块生成请求中包括一个提案信息,则第一区块链节点在进行排序时将具有拆分序列的多个子提案信息作为一个整体参与与其他提案信息的排序。
示例性的,第一区块链节点接收到了3个区块生成请求A、B、C,其中A中包括提案信息a,B中包括4个子提案信息b1、b2、b3、b4,C中包括提案信息c,则排序时若第一规则为按接收时间顺序排序,接收到A、B、C的顺序为A-B-C,则根据第一规则确定的各提案信息的排列顺序为:
a-b1-b2-b3-b4-c。各子提案信息的排列顺序按照其拆分顺序即可。
可选的,拆分顺序可以为提案信息中交易数据的顺序,具体本实施例不做限定。
第一区块链在确定了排列顺序后,生成各提案信息对应的区块时,对于序列中的提案信息,生成提案信息对应的区块的过程与上述实施例一致,对于各子提案信息,则按照拆分顺序,生成各子提案信息对应的区块。
可选的,对于一个区块生成请求中的多个子提案信息,也可以按照第一规则分别排序,示例性的,若第一规则为按交易量排序,最终的排列顺序为:a-b2-b1-c-b3-b4。
作为另一种可实施的方式,在上述实施例一的基础上,可选地,步骤103具体包括:第一区块链节点按照排列顺序,对于每个提案信息,执行以下过程:
步骤1031,计算提案信息对应的父区块哈希值,父区块哈希值为提案信息对应的区块所引用的区块链中父区块头的哈希值。
具体的,可以通过SHA256哈希算法生成父区块哈希值。
步骤1032,根据提案信息中的交易数据,生成交易信息默克尔树MerkleTree,并根据默克尔树生成提案信息对应的区块的区块主体。
具体的,将提案信息中的所有交易数据记录到区块主体中,在区块主体中,根据提案信息中的所有交易数据生成交易信息的Merkle树(即,MerkleTree),把Merkle树根的值保存在区块头中。Merkle树根的值可以是由区块主体中所有交易的哈希值再逐级两两哈希计算出来的一个数值,用于检验一笔交易是否在这个区块中存在。
步骤1033,根据父区块哈希值及默克尔树的根值生成提案信息对应的区块的区块头。
具体的,把Merkle树根的值保存在区块头中,将父区块哈希值填入到当前区块的父哈希值中,把当前的时间戳保存在时间戳字段中等等,时间戳记录该区块产生的时间,可以精确到秒。具体操作可以为现有技术,在此不再赘述。
步骤1034,根据区块头和区块主体,生成提案信息对应的区块。
具体的,每个区块是由区块头和区块主体组成,区块主体负责记录前一段时间内的所有交易信息,区块链的大部分功能都由区块头实现。父区块的哈希值实现区块链中区块的连接。
步骤1035,将提案信息对应的区块加入区块链。
作为又一种可实施的方式,在上述实施例一的基础上,可选地,在步骤101之后,该方法还包括:
步骤201,第一区块链节点对各区块生成请求进行权限验证,权限验证包括各提案信息的验证、各区块生成请求对应的第二区块链的权限与签名验证、各第二区块链节点在所属的区块链系统中的身份验证,以及各提案信息的唯一性验证。
具体的,对提案信息的验证、第二区块链的权限与签名验证、第二区块链在所属的区块链系统中的身份验证都可以为现有技术中的验证方式。提案信息的唯一性验证是通过业务ID来进行验证,业务ID是客户端向第二区块链节点发起提案请求时生成的,用于避免相同提案的重复请求。业务ID可以根据提案中包括的交易数据采用一定的规则生成随机的ID,若是相同的提案,生成的业务ID相同,不同的提案生成的业务ID不同,从而保证提案请求的唯一性。可选的,业务ID的生成也可以是现有技术中任意可实施的方式,只要能保证提案请求不重复即可。校验成功后将业务ID插入第一区块链节点的KV库。KV库是Key-Value存储数据库,是NoSQL(非关系型数据库)模型,按键值对的形式进行组织、索引、存储。
可选的,若区块生成请求中包括多个子提案信息,第一区块链节点还需要验证各子提案信息的签名,并依次执行所有子提案信息,校验状态。
可选地,在步骤201之后,该方法还可以包括:
步骤202,若验证结果为通过,第一区块链节点判断当前链块号是否等于区块链上最新一个区块的链块号当前链块号为第一区块链节点已生成的最新一个区块的链块号。
具体的,在通过权限验证后,第一区块链节点还可以判断其记录的当前链块号是否等于区块链上最新一个区块的链块号,若判断结果为等于,证明其之前生成的区块已完成信息同步,可以继续生成下一批的区块。若判断结果为不等于,则证明当前之前所生成的区块还未完成信息同步,则不允许新增块。
可选地,对于当前链块号的判断,可以是一批区块(多个区块)生成判断一次,也可以是每个区块生成判断一次,即第一区块链节点可以批量出块入链后,再进行广播这一批新生成的区块的信息,使其他区块链节点(具体为系统中其他所有区块链节点)进行信息同步,信息同步完成后,更新当前链块号为最新生成的区块的链块号。也可以是生成一个区块就广播同步一次,更新当前链块号。在生成下个区块或开始生成下一批区块时,则需要判断第一区块链节点当前链块号是否已经是更新后的链块号,即判断当前链块号是否等于区块链上最新一个区块的链块号,若不等于,证明尚未完成信息同步,当前链块号尚未更新,则不允许新增块。若等于,则证明已经完成了信息同步,可以开始下一个或下一批区块的生成。
作为再一种可实施的方式,在上述实施例一的基础上,可选地,该方法还可以包括:
步骤104,第一区块链节点在区块链系统中进行广播,以使区块链系统中的其他区块链节点进行信息同步。
步骤105,当其他区块链节点完成信息同步后,第一区块链节点更新当前链块号。
具体的,第一区块链节点可以批量出块入链后,再进行广播这一批新生成的区块的信息,使其他区块链节点(具体为系统中其他所有区块链节点)进行信息同步,信息同步完成后,更新当前链块号为最新生成的区块的链块号。也可以是生成一个区块就广播同步一次,更新当前链块号。
示例性的,第一区块链节点上一批接收了3个区块生成请求,生成了3个区块,最后一个区块的链块号为S5,第一区块链节点的当前链块号为S2,在完成3个区块的信息同步后,更新当前链块号为S=S2+len(提案信息序列)=S2+3=S5。其中,len(提案信息序列)表示提案信息序列的长度,即这一批待入链的提案信息的个数。同理,若每个区块生成并同步后都更新一次当前链块号,则每次加1即可,在此不再赘述。
需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本申请不做限定。
本实施例提供的区块生成方法,在上述实施例一的基础上,第二区块链还可以将通过背书申请的提案信息拆分成具有拆分顺序的多个子提案信息,并将签名后的多个子提案信息作为提案信息携带在区块生成请求中发送到第一区块链节点,第一区块链节点则根据拆分顺序生成各子提案信息对应的区块,由于是将通过背书申请的提案信息进行拆分的,拆分后只需要进行签名即可,无需再次通过背书申请,即相当于通过一次背书申请,可以生成多个区块,明显节省了通过背书申请的时间,进一步提高了区块生成效率。
实施例三
本实施例提供一种区块生成方法,用于在区块链中生成新的区块。本实施例的执行主体为区块链节点,为了便于说明,称为第二区块链节点。
如图4所示,为本实施例提供的区块生成方法的流程示意图,该方法包括:
步骤301,第二区块链节点接收客户端发送的提案请求,提案请求包括一笔或多笔交易数据。
具体的,当参与方需要交易时,可以通过客户端向第二区块链节点发起提案请求,提案请求可以包括一笔交易数据,为了单次网络通信效率,提案请求也可以包括多笔交易数据。具体可以由参与方根据实际需求设置,本实施例不做限定。
可选的,若参与方有很多笔交易,可以根据当前交易量决定单次提案请求包括的交易量,并可以决定并行向多个第二区块链节点发起提案请求。第二区块链节点可以灵活扩展,当需要支持更大量的交易吞吐时,只需要部署更多的第二区块链节点,集群性能稿。
对于一个第二区块链节点来说,可以接收到参与方通过客户端发送的提案请求,提案请求中可以包括一笔或多笔交易数据。
提案请求的请求参数如下:
提案请求的请求参数,与现有技术相比,增加了业务ID(requestId),用于后续提案请求的唯一性验证。其他参数则可以用于后续的其他权限验证。具体不再赘述。
步骤302,第二区块链节点对提案请求进行校验并执行合约交易后,向区块链系统中的其他第二区块链节点发起背书申请。
具体的,第二区块链节点在接收到客户端发送的提案请求后,需要对提案请求进行校验并执行合约交易,然后想区块链系统中的其他第二区块链节点发起背书申请,由其他第二区块链节点对本次提案请求进行背书,以达成共识。可以采用一定的背书策略实现背书申请的过程。具体背书策略本实施例不做限定,比如PBFT(Practical ByzantineFault Tolerance,拜占庭容错算法)、POS(Proof of Stake,股权证明)、POW(Proof ofWork,工作证明)等。
其中,对提案请求进行校验具体可以包括:验证参与方权限、验证参与方签名、验证链和节点权限等等。具体操作可以为现有技术中的操作,在此不再赘述。
可选的,多个参与方的提案请求及背书申请也可以并行进行,相互不影响。即参与方X在发起提案请求(一个或多个提案请求)的同时,参与方Y也可以发起提案请求(一个或多个提案请求),一个第二区块链节点可以在处理自己的提案请求的同时,为其他第二区块链节点发起的背书申请进行背书。更近一步的提高了背书申请过程的效率,从而提高出块入链效率。
可选的,第二区块链节点还可以查询当前区块链系统中活跃的其他第二区块链节点,向活跃的其他第二区块链节点发起背书申请。
可选的,对于一个参与方对应多个其他第二区块链节点的情况,可以只向其中一个其他第二区块链节点发起背书申请。
可选的,对于发起背书申请的参与方,若其对应多个第二区块链节点,则其中一个第二区块链节点发起的背书申请可以不向该参与方对应的其他第二区块链节点发起背书申请。
步骤303,第二区块链节点将携带通过背书申请的提案信息的区块生成请求发送给第一区块链节点,以使第一区块链节点生成提案信息对应的区块。
具体的,第二区块链节点发起的背书申请通过后,即达成共识,允许生成区块,第二区块链节点则将通过背书申请的提案信息携带在区块生成请求中发送给第一区块链节点,以使第一区块链节点生成提案信息对应的区块。
该提案信息可以包括上述的一笔或多笔交易数据,以及用于后续权限验证的信息,比如签名、业务ID等,具体不再赘述。
本实施例提供的区块生成方法,第一区块链节点可以接收多个第二区块链节点发送的区块生成请求,按照排列顺序,批量在区块链中生成区块,从而使背书过程与区块生成入链过程可以并行进行,解决了现有技术中需要串行通过生成一个新区块、进行共识算法通过背书申请、新区块入链生效的过程,在一个区块生成后才能开始下一个区块,从而导致出块慢,数据处理效率低等问题,大大提高了出块入链的效率,进而提高数据写入性能和吞吐
实施例四
本实施例对实施例三提供的区块生成方法做进一步补充说明。
如图5所示,为本实施例提供的区块生成方法的流程示意图。
作为一种可实施的方式,在上述实施例一的基础上,可选地,步骤302之后,该方法还包括:
步骤4011,第二区块链节点接收各其他第二区块链节点返回的背书结果信息。
具体的各其他第二区块链节点接收到第二区块链节点的背书申请后,需要校验申请数据、权限、签名等,校验成功后执行交易,并返回背书结果信息。若执行成功,则向发起背书申请的第二区块链节点返回背书成功的消息,否则返回背书失败的消息。具体的背书操作为现有技术,在此不再赘述。
第二区块链节点则可以接收各其他第二区块链节点返回的背书结果信息。
步骤4012,第二区块链节点根据各背书结果信息,确定是否通过背书申请。
具体的,第二区块链节点接收到各其他第二区块链节点返回的背书结果信息后,则根据各背书结果信息确定是否通过背书申请。可以采用现有的背书策略确定是否通过背书申请,比如拜占庭容错算法,具体不做限定。
可选的,第二区块链节点接收到各其他第二区块链节点返回的背书结果信息后,还需要校验背书结果信息、验证背书结果信息的签名等。具体可以为现有技术,在此不再赘述。
示例性的,背书结果信息的格式如下:
可选的,步骤4012具体可以包括:
第二区块链节点采用改进的拜占庭SBFT共识算法,根据各背书结果信息,确定是否通过背书申请。
具体的,第二区块链节点可以采用改进的拜占庭SBFT共识算法,来确定是否通过背书申请。可以自由设置容错系数delta控制满足的条件。网络条件不好,阈值会设置的比较高,反之会设置的比较低。可以灵活变动的,避免了PBFT共识算法需要满足n>=3f+1,n是系统中的区块链节点总数,f是允许出现故障的区块链节点数,条件限制太死板,不够灵活的问题。
SBFT共识算法具体为:可以为不同的背书策略设定不同的背书成功数(即返回的背书结果信息为背书成功消息的区块链节点数)或背书成功率(背书成功的区块链节点数/参与背书的区块链节点总数的比值)的阈值,通过阈值控制容错processSum=Min(targetEndorseNum*(1+delta),len(nodeInfos))。其中processSum表示需要向其发起背书申请的其他第二区块链节点的数量,比如要向系统中60个其他第二区块链节点发起背书申请,targetEndorseNum表示需要达到的背书成功的第二区块链节点数,即返回的背书结果信息为背书成功的消息的第二区块链节点数,delta表示容错系数,0<=delta<=1,len(nodeInfos)表示系统中总的区块链节点数,其中delta可以人为根据实际网络情况进行设置,若网络可信度较好,可以将delta设置较小,若网络可信度较差,可以将delta设置较大。如果背书成功数或背书成功率未达到设置的阈值,则没有通过背书申请;否则通过背书申请。
示例性的,设置的targetEndorseNum是50,即通过背书申请,需要50个其他第二区块链节点返回的背书结果信息是背书成功的消息。则可以增加一定的容错,例如设置delta=0.2,说明第二区块链节点将会向min(50*1.2,100)=60个其他第二区块链节点发起背书申请,其中若有至少50个其他第二区块链节点返回的背书结果信息为背书成功的消息,则通过背书申请。否则不能通过背书申请。
采用SBFT共识算法,可以根据当前网络状况灵活确定需要背书成功的区块链节点数,解决了现有的PBFT算法条件不够灵活,只要当前系统中出现故障的区块链节点数不满足n>=3f+1,就会导致背书申请的失败的问题。
作为另一种可实施的方式,在上述实施例一的基础上,可选地,步骤303之前,该方法还包括:
步骤4021,第二区块链节点根据第二规则将通过背书申请的提案信息拆分成具有拆分顺序的多个子提案信息。
步骤4022,第二区块链节点对各子提案信息进行签名。
步骤4023,第二区块链节点将签名后的各子提案信息作为提案信息携带在区块生成请求中。
具体的,在各第二区块链节点完成一次背书申请,要将通过背书申请的提案信息携带在区块生成请求中发送给第一区块链节点时,还可以根据预设的判断该提案信息是否太大,若太大导致生成的区块过于庞大,会影响出块效率。若提案信息太大,第二区块链节点还可以根据第二规则将提案信息拆分成具有拆分顺序的多个子提案信息,并对各子提案信息进行签名,将签名后的各子提案信息作为提案信息携带在区块生成请求中,即,拆分后的每个子提案信息还是相当于一个提案信息,为了区分说明,称为子提案信息。
可选的,第二规则包括预设的每个提案信息中包括交易数据的数量阈值和预设的每个提案信息的大小阈值中的一种。
具体的,第二区块链节点可以查询获取第一区块链节点的信息,第二区块链节点对包含较多交易数据的提案信息进行拆分,此步骤可以配置化,可以视每笔交易数据的存储或耗时,控制每个拆分后的提案信息包含的交易数据量,比如预设每个提案信息最多允许包括10笔交易数据,若当前提案信息中包括100笔交易数据,则拆分成10个子提案信息,第二区块链节点为拆分后的每一笔子提案信息进行签名,第二区块链节点将拆分后的提案信息序列(具有拆分顺序的多个子提案信息)一次性提交至第一区块链节点。
需要说明的是,在本申请的任一实施例中,在所有的通讯过程中,不论是请求还是回复,都要两两验证消息的来源、签名等,以实现安全通讯,保证消息的未篡改。本申请实施例提供的方案侧重点在于实现并行处理,因此对于消息验证,未提及之处均可以为现有技术中的验证方式。
需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本申请不做限定。
本实施例提供的区块生成方法,在上述实施例三的基础上,第二区块链还可以将通过背书申请的提案信息拆分成具有拆分顺序的多个子提案信息,并将签名后的多个子提案信息作为提案信息携带在区块生成请求中发送到第一区块链节点,第一区块链节点则根据拆分顺序生成各子提案信息对应的区块,由于是将通过背书申请的提案信息进行拆分的,拆分后只需要进行签名即可,无需再次通过背书申请,即相当于通过一次背书申请,可以生成多个区块,明显节省了通过背书申请的时间,进一步提高了区块生成效率。
实施例五
本实施例提供一种区块生成装置,用于执行上述实施例一的区块生成方法。
如图6所示,为本实施例提供的区块生成装置的结构示意图。该区块生成装置50包括第一接收模块51、确定模块52和生成模块53。
其中,第一接收模块51用于第一区块链接节点接收多个第二区块链节点发送的区块生成请求,区块生成请求包括待生成区块的提案信息;确定模块52用于第一区块链节点根据第一规则,确定各提案信息的排列顺序;生成模块53用于第一区块链节点按照排列顺序,在区块链中生成各提案信息对应的区块。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
根据本实施例提供的区块生成装置,第一区块链节点可以接收多个第二区块链节点发送的区块生成请求,按照排列顺序,批量在区块链中生成区块,从而使背书过程与区块生成入链过程可以并行进行,解决了现有技术中需要串行通过生成一个新区块、进行共识算法通过背书申请、新区块入链生效的过程,在一个区块生成后才能开始下一个区块,从而导致出块慢,数据处理效率低等问题,大大提高了出块入链的效率,进而提高数据写入性能和吞吐。
实施例六
本实施例对上述实施例五提供的区块生成装置做进一步补充说明,以执行上述实施例二提供的区块生成方法。
作为一种可实施的方式,在上述实施例五的基础上,可选地,区块生成请求包括多个子提案信息,多个子提案信息为第二区块链节点根据第二规则将提案信息拆分成的具有拆分顺序的多个提案信息;相应的,生成模块还用于第一区块链节点按照拆分顺序,在区块链中生成各子提案信息对应的区块。
作为另一种可实施的方式,在上述实施例五的基础上,可选地,所示生成模块,具体用于第一区块链节点按照排列顺序,对于每个提案信息,执行以下过程:
计算提案信息对应的父区块哈希值,父区块哈希值为提案信息对应的区块所引用的区块链中父区块头的哈希值;根据提案信息中的交易数据,生成交易信息默克尔树Merkle Tree,并根据默克尔树生成提案信息对应的区块的区块主体;根据父区块哈希值及默克尔树的根值生成提案信息对应的区块的区块头;根据区块头和区块主体,生成提案信息对应的区块;将提案信息对应的区块加入区块链。
作为又一种可实施的方式,在上述实施例五的基础上,可选地,生成模块还用于第一区块链节点对各区块生成请求进行权限验证,权限验证包括各提案信息的验证、各区块生成请求对应的第二区块链的权限与签名验证、各第二区块链节点在所属的区块链系统中的身份验证,以及各提案信息的唯一性验证。
可选的,生成模块还用于若验证结果为通过,第一区块链节点判断当前链块号是否等于区块链上最新一个区块的链块号当前链块号为第一区块链节点已生成的最新一个区块的链块号。
作为再一种可实施的方式,在上述实施例五的基础上,可选地,生成模块还用于第一区块链节点在区块链系统中进行广播,以使区块链系统中的其他区块链节点进行信息同步;生成模块还用于当其他区块链节点完成信息同步后,第一区块链节点更新当前链块号。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本申请不做限定。
根据本实施例的区块生成装置,在上述实施例五的基础上,第二区块链还可以将通过背书申请的提案信息拆分成具有拆分顺序的多个子提案信息,并将签名后的多个子提案信息作为提案信息携带在区块生成请求中发送到第一区块链节点,第一区块链节点则根据拆分顺序生成各子提案信息对应的区块,由于是将通过背书申请的提案信息进行拆分的,拆分后只需要进行签名即可,无需再次通过背书申请,即相当于通过一次背书申请,可以生成多个区块,明显节省了通过背书申请的时间,进一步提高了区块生成效率。
实施例七
本实施例提供一种区块生成装置,用于执行上述实施例三的区块生成方法。
如图7所示,为本实施例提供的区块生成装置的结构示意图。该区块生成装置70包括第二接收模块71、处理模块72和发送模块73。
其中,第二接收模块71用于第二区块链节点接收客户端发送的提案请求,提案请求包括一笔或多笔交易数据;处理模块72用于第二区块链节点对提案请求进行校验并执行合约交易后,向区块链系统中的其他第二区块链节点发起背书申请;发送模块73用于第二区块链节点将携带通过背书申请的提案信息的区块生成请求发送给第一区块链节点,以使第一区块链节点生成提案信息对应的区块。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
根据本实施例的区块生成装置,第一区块链节点可以接收多个第二区块链节点发送的区块生成请求,按照排列顺序,批量在区块链中生成区块,从而使背书过程与区块生成入链过程可以并行进行,解决了现有技术中需要串行通过生成一个新区块、进行共识算法通过背书申请、新区块入链生效的过程,在一个区块生成后才能开始下一个区块,从而导致出块慢,数据处理效率低等问题,大大提高了出块入链的效率,进而提高数据写入性能和吞吐。
实施例八
本实施例对上述实施例七提供的区块生成装置做进一步补充说明,以执行上述实施例四提供的区块生成方法。
作为一种可实施的方式,在上述实施例七的基础上,可选地,第二接收模块还用于第二区块链节点接收各其他第二区块链节点返回的背书结果信息;处理模块还用于第二区块链节点根据各背书结果信息,确定是否通过背书申请。
可选的,处理模块具体用于第二区块链节点采用改进的拜占庭SBFT共识算法,根据各背书结果信息,确定是否通过背书申请。
作为另一种可实施的方式,在上述实施例七的基础上,可选地,处理模块,还用于:
第二区块链节点根据第二规则将通过背书申请的提案信息拆分成具有拆分顺序的多个子提案信息;第二区块链节点对各子提案信息进行签名;发送模块,还用于第二区块链节点将签名后的各子提案信息作为提案信息携带在区块生成请求中。
可选的,第二规则包括预设的每个提案信息中包括交易数据的数量阈值和预设的每个提案信息的大小阈值中的一种。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本申请不做限定。
根据本实施例的区块生成装置,在上述实施例七的基础上,第二区块链还可以将通过背书申请的提案信息拆分成具有拆分顺序的多个子提案信息,并将签名后的多个子提案信息作为提案信息携带在区块生成请求中发送到第一区块链节点,第一区块链节点则根据拆分顺序生成各子提案信息对应的区块,由于是将通过背书申请的提案信息进行拆分的,拆分后只需要进行签名即可,无需再次通过背书申请,即相当于通过一次背书申请,可以生成多个区块,明显节省了通过背书申请的时间,进一步提高了区块生成效率。
实施例九
本实施例提供一种区块链节点,用于执行上述实施例一或实施例二提供的区块生成方法。
如图8所示,为本实施例提供的区块链节点的结构示意图。该区块链节点90包括:至少一个处理器91和存储器92;
存储器存储计算机程序;至少一个处理器执行存储器存储的计算机程序,以实现上述实施例一或实施例二提供的区块生成方法。
根据本实施例的区块链节点,第一区块链节点可以接收多个第二区块链节点发送的区块生成请求,按照排列顺序,批量在区块链中生成区块,从而使背书过程与区块生成入链过程可以并行进行,解决了现有技术中需要串行通过生成一个新区块、进行共识算法通过背书申请、新区块入链生效的过程,在一个区块生成后才能开始下一个区块,从而导致出块慢,数据处理效率低等问题,大大提高了出块入链的效率,进而提高数据写入性能和吞吐。
实施例十
本实施例提供一种区块链节点,用于执行上述实施例三或实施例四提供的区块生成方法。
如图9所示,为本实施例提供的区块链节点的结构示意图。该区块链节点100包括:至少一个处理器1001和存储器1002;
存储器存储计算机程序;至少一个处理器执行存储器存储的计算机程序,以实现上述实施例三或实施例四提供的区块生成方法。
根据本实施例的区块链节点,第一区块链节点可以接收多个第二区块链节点发送的区块生成请求,按照排列顺序,批量在区块链中生成区块,从而使背书过程与区块生成入链过程可以并行进行,解决了现有技术中需要串行通过生成一个新区块、进行共识算法通过背书申请、新区块入链生效的过程,在一个区块生成后才能开始下一个区块,从而导致出块慢,数据处理效率低等问题,大大提高了出块入链的效率,进而提高数据写入性能和吞吐。
实施例十一
本实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,计算机程序被执行时实现上述实施例一或实施例二提供的方法。
根据本实施例的计算机可读存储介质,第一区块链节点可以接收多个第二区块链节点发送的区块生成请求,按照排列顺序,批量在区块链中生成区块,从而使背书过程与区块生成入链过程可以并行进行,解决了现有技术中需要串行通过生成一个新区块、进行共识算法通过背书申请、新区块入链生效的过程,在一个区块生成后才能开始下一个区块,从而导致出块慢,数据处理效率低等问题,大大提高了出块入链的效率,进而提高数据写入性能和吞吐。
实施例十二
本实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,计算机程序被执行时实现上述实施例三或实施例四提供的方法。
根据本实施例的计算机可读存储介质,第一区块链节点可以接收多个第二区块链节点发送的区块生成请求,按照排列顺序,批量在区块链中生成区块,从而使背书过程与区块生成入链过程可以并行进行,解决了现有技术中需要串行通过生成一个新区块、进行共识算法通过背书申请、新区块入链生效的过程,在一个区块生成后才能开始下一个区块,从而导致出块慢,数据处理效率低等问题,大大提高了出块入链的效率,进而提高数据写入性能和吞吐。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (26)
1.一种区块生成方法,其特征在于,包括:
第一区块链节点接收多个第二区块链节点发送的区块生成请求,所述区块生成请求包括待生成区块的提案信息,所述待生成区块的提案信息为在对应的第二区块链节点上通过背书申请的提案信息;
所述第一区块链节点根据第一规则,确定各所述提案信息的排列顺序;
所述第一区块链节点按照所述排列顺序,在区块链中生成各所述提案信息对应的区块。
2.根据权利要求1所述的方法,其特征在于,所述区块生成请求包括多个子提案信息,多个子提案信息为所述第二区块链节点根据第二规则将提案信息拆分成的具有拆分顺序的多个提案信息;
相应的,所述第一区块链节点按照所述排列顺序,在区块链中生成各所述提案信息对应的区块,包括:
所述第一区块链节点按照所述拆分顺序,在区块链中生成各所述子提案信息对应的区块。
3.根据权利要求1所述的方法,其特征在于,所述第一区块链节点按照所述排列顺序,在区块链中生成各所述提案信息对应的区块,包括:
所述第一区块链节点按照所述排列顺序,对于每个提案信息,执行以下过程:
计算所述提案信息对应的父区块哈希值,所述父区块哈希值为所述提案信息对应的区块所引用的区块链中父区块头的哈希值;
根据所述提案信息中的交易数据,生成交易信息默克尔树Merkle Tree,并根据所述默克尔树生成所述提案信息对应的区块的区块主体;
根据所述父区块哈希值及所述默克尔树的根值生成所述提案信息对应的区块的区块头;
根据所述区块头和所述区块主体,生成所述提案信息对应的区块;
将所述提案信息对应的区块加入所述区块链。
4.根据权利要求1所述的方法,其特征在于,所述第一区块链节点在接收各第二区块链节点发送的区块生成请求之后,所述方法还包括:
所述第一区块链节点对各所述区块生成请求进行权限验证,所述权限验证包括各提案信息的验证、各区块生成请求对应的第二区块链节点的权限与签名验证、各第二区块链节点在所属的区块链系统中的身份验证,以及各提案信息的唯一性验证。
5.根据权利要求4所述的方法,其特征在于,若验证结果为通过,所述第一区块链节点判断当前链块号是否等于所述区块链上最新一个区块的链块号,所述当前链块号为所述第一区块链节点已生成的最新一个区块的链块号。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
所述第一区块链节点在所述区块链系统中进行广播,以使所述区块链系统中的其他区块链节点进行信息同步;
当其他区块链节点完成信息同步后,所述第一区块链节点更新当前链块号。
7.一种区块生成方法,其特征在于,包括:
第二区块链节点接收客户端发送的提案请求,所述提案请求包括一笔或多笔交易数据;
所述第二区块链节点对所述提案请求进行校验并执行合约交易后,向区块链系统中的其他第二区块链节点发起背书申请;
所述第二区块链节点将携带通过所述背书申请的提案信息的区块生成请求发送给第一区块链节点,以使所述第一区块链节点根据各所述第二区块链节点发送的所述区块生成请求,按照排列顺序在区块链中生成各所述提案信息对应的区块。
8.根据权利要求7所述的方法,其特征在于,所述第二区块链节点对所述提案请求进行校验并执行合约交易后,向区块链系统中的其他区块链节点发起背书申请之后,所述方法还包括:
所述第二区块链节点接收各所述其他第二区块链节点返回的背书结果信息;
所述第二区块链节点根据各所述背书结果信息,确定是否通过所述背书申请。
9.根据权利要求8所述的方法,其特征在于,所述第二区块链节点根据各所述背书结果信息,确定是否通过所述背书申请,包括:
所述第二区块链节点采用改进的拜占庭SBFT共识算法,根据各所述背书结果信息,确定是否通过所述背书申请。
10.根据权利要求7-9任一项所述的方法,其特征在于,所述第二区块链节点将携带通过所述背书申请的提案信息的区块生成请求发送给第一区块链节点之前,还包括:
所述第二区块链节点根据第二规则将通过所述背书申请的所述提案信息拆分成具有拆分顺序的多个子提案信息;
所述第二区块链节点对各所述子提案信息进行签名;
所述第二区块链节点将签名后的各所述子提案信息作为所述提案信息携带在所述区块生成请求中。
11.根据权利要求10所述的方法,其特征在于,所述第二规则包括预设的每个提案信息中包括交易数据的数量阈值和预设的每个提案信息的大小阈值中的一种。
12.一种区块生成装置,其特征在于,包括:
第一接收模块,用于第一区块链节点接收多个第二区块链节点发送的区块生成请求,所述区块生成请求包括待生成区块的提案信息,所述待生成区块的提案信息为在对应的第二区块链节点上通过背书申请的提案信息;
确定模块,用于所述第一区块链节点根据第一规则,确定各所述提案信息的排列顺序;
生成模块,用于所述第一区块链节点按照所述排列顺序,在区块链中生成各所述提案信息对应的区块。
13.根据权利要求12所述的装置,其特征在于,所述区块生成请求包括多个子提案信息,多个子提案信息为所述第二区块链节点根据第二规则将提案信息拆分成的具有拆分顺序的多个提案信息;
相应的,所述生成模块,还用于所述第一区块链节点按照所述拆分顺序,在区块链中生成各所述子提案信息对应的区块。
14.根据权利要求12所述的装置,其特征在于,所示生成模块,具体用于:
所述第一区块链节点按照所述排列顺序,对于每个提案信息,执行以下过程:
计算所述提案信息对应的父区块哈希值,所述父区块哈希值为所述提案信息对应的区块所引用的区块链中父区块头的哈希值;
根据所述提案信息中的交易数据,生成交易信息默克尔树Merkle Tree,并根据所述默克尔树生成所述提案信息对应的区块的区块主体;
根据所述父区块哈希值及所述默克尔树的根值生成所述提案信息对应的区块的区块头;
根据所述区块头和所述区块主体,生成所述提案信息对应的区块;
将所述提案信息对应的区块加入所述区块链。
15.根据权利要求12所述的装置,其特征在于,所述生成模块,还用于所述第一区块链节点对各所述区块生成请求进行权限验证,所述权限验证包括各提案信息的验证、各区块生成请求对应的第二区块链节点的权限与签名验证、各第二区块链节点在所属的区块链系统中的身份验证,以及各提案信息的唯一性验证。
16.根据权利要求15所述的装置,其特征在于,所述生成模块,还用于若验证结果为通过,所述第一区块链节点判断当前链块号是否等于所述区块链上最新一个区块的链块号,所述当前链块号为所述第一区块链节点已生成的最新一个区块的链块号。
17.根据权利要求12-16任一项所述的装置,其特征在于,所述生成模块,还用于所述第一区块链节点在所述区块链系统中进行广播,以使所述区块链系统中的其他区块链节点进行信息同步;
所述生成模块,还用于当其他区块链节点完成信息同步后,所述第一区块链节点更新当前链块号。
18.一种区块生成装置,其特征在于,包括:
第二接收模块,用于第二区块链节点接收客户端发送的提案请求,所述提案请求包括一笔或多笔交易数据;
处理模块,用于所述第二区块链节点对所述提案请求进行校验并执行合约交易后,向区块链系统中的其他第二区块链节点发起背书申请;
发送模块,用于所述第二区块链节点将携带通过所述背书申请的提案信息的区块生成请求发送给第一区块链节点,以使所述第一区块链节点根据各所述第二区块链节点发送的所述区块生成请求,按照排列顺序在区块链中生成各所述提案信息对应的区块。
19.根据权利要求18所述的装置,其特征在于,所述第二接收模块,还用于所述第二区块链节点接收各所述其他第二区块链节点返回的背书结果信息;
所述处理模块,还用于所述第二区块链节点根据各所述背书结果信息,确定是否通过所述背书申请。
20.根据权利要求19所述的装置,其特征在于,所述处理模块,具体用于所述第二区块链节点采用改进的拜占庭SBFT共识算法,根据各所述背书结果信息,确定是否通过所述背书申请。
21.根据权利要求18-20任一项所述的装置,其特征在于,所述处理模块,还用于:
所述第二区块链节点根据第二规则将通过所述背书申请的所述提案信息拆分成具有拆分顺序的多个子提案信息;所述第二区块链节点对各所述子提案信息进行签名;
所述发送模块,还用于所述第二区块链节点将签名后的各所述子提案信息作为所述提案信息携带在所述区块生成请求中。
22.根据权利要求21所述的装置,其特征在于,所述第二规则包括预设的每个提案信息中包括交易数据的数量阈值和预设的每个提案信息的大小阈值中的一种。
23.一种区块链节点,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现权利要求1-6中任一项所述的方法。
24.一种区块链节点,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现权利要求7-11中任一项所述的方法。
25.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现权利要求1-6中任一项所述的方法。
26.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现权利要求7-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810369102.9A CN110399424B (zh) | 2018-04-23 | 2018-04-23 | 区块生成方法、装置、区块链节点及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810369102.9A CN110399424B (zh) | 2018-04-23 | 2018-04-23 | 区块生成方法、装置、区块链节点及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110399424A CN110399424A (zh) | 2019-11-01 |
CN110399424B true CN110399424B (zh) | 2022-05-20 |
Family
ID=68319754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810369102.9A Active CN110399424B (zh) | 2018-04-23 | 2018-04-23 | 区块生成方法、装置、区块链节点及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399424B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111083221B (zh) * | 2019-12-13 | 2023-08-04 | 北京菲林方德科技有限公司 | 一种交易验证方法及装置 |
CN111274273A (zh) * | 2020-01-22 | 2020-06-12 | 北京瑞卓喜投科技发展有限公司 | 一种合同智能化方法和系统、存储介质 |
CN113347219B (zh) * | 2020-03-02 | 2022-06-28 | 续科天下(北京)科技有限公司 | 区块链节点共识的方法和装置 |
CN111522873B (zh) * | 2020-03-19 | 2023-09-05 | 金蝶软件(中国)有限公司 | 区块生成方法、装置、计算机设备和存储介质 |
CN111522648B (zh) * | 2020-07-03 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 一种区块链的交易处理方法、装置及电子设备 |
CN111984733A (zh) * | 2020-09-03 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 基于区块链的数据传输方法、装置及存储介质 |
CN112131236B (zh) * | 2020-09-21 | 2022-07-05 | 中国电子科技网络信息安全有限公司 | 一种新型区块链并行处理性能优化方法 |
CN112017051B (zh) * | 2020-10-29 | 2021-02-12 | 北京易真学思教育科技有限公司 | 区块链系统、相关方法、用户节点及存储介质 |
CN112417038B (zh) * | 2020-11-10 | 2021-07-13 | 深圳百纳维科技有限公司 | 一种基于海洋运输的异步区块构造方法、装置及存储介质 |
CN112702419B (zh) * | 2020-12-21 | 2023-03-24 | 杭州趣链科技有限公司 | 基于区块链的数据处理方法、装置、设备和存储介质 |
CN114338673B (zh) * | 2021-12-30 | 2024-08-20 | 马上消费金融股份有限公司 | 一种交易数据处理方法、装置、设备、系统及存储介质 |
CN115033645B (zh) * | 2022-07-06 | 2023-11-21 | 贵州电网有限责任公司 | 一种基于区块链技术的电力数据存储方法、系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106603698A (zh) * | 2016-12-28 | 2017-04-26 | 北京果仁宝科技有限公司 | 基于dpos的区块链共识方法和节点 |
CN107451874A (zh) * | 2017-07-27 | 2017-12-08 | 武汉天喻信息产业股份有限公司 | 基于区块链的电子发票综合处理方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160299918A1 (en) * | 2015-04-07 | 2016-10-13 | Dell Software, Inc. | Device Control Using a Secure Decentralized Transactional Ledger |
-
2018
- 2018-04-23 CN CN201810369102.9A patent/CN110399424B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106603698A (zh) * | 2016-12-28 | 2017-04-26 | 北京果仁宝科技有限公司 | 基于dpos的区块链共识方法和节点 |
CN107451874A (zh) * | 2017-07-27 | 2017-12-08 | 武汉天喻信息产业股份有限公司 | 基于区块链的电子发票综合处理方法及系统 |
Non-Patent Citations (2)
Title |
---|
hyperledger fabric的一些疑问?;寞月;《https://www.zhihu.com/question/65593290》;20180223;第1-2页 * |
Hyperledger Fabric的交易旅程;凌云智链;《https://cloud.tencent.com/developer/news/169323》;20180403;第1-2页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110399424A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110399424B (zh) | 区块生成方法、装置、区块链节点及存储介质 | |
CN109936457B (zh) | 区块链多方见证方法、装置、设备及计算机可读存储介质 | |
CN107171810B (zh) | 区块链的验证方法及装置 | |
EP3780553B1 (en) | Blockchain-based transaction consensus processing method and apparatus, and electrical device | |
CN111629039B (zh) | 一种区块链共识方法及客户端、背书节点、排序节点 | |
CN107276765B (zh) | 区块链中共识的处理方法及装置 | |
CN110612700B (zh) | 基于恢复的公钥进行认证 | |
US20200081805A1 (en) | Byzantine agreement using communications having linear complexity | |
Kim et al. | SCC: Storage compression consensus for blockchain in lightweight IoT network | |
CN112468302B (zh) | 基于可验证多方秘密分享的可编辑区块链 | |
CN110046894B (zh) | 一种基于纠删码的分组可重构区块链建立方法 | |
EP3609125A1 (en) | Blockchain-assisted hash-based data signature system and method | |
KR20210003234A (ko) | 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것 | |
CN108200208B (zh) | 基于云计算的物流区块链共识算法 | |
CN110417502B (zh) | 一种区块链节点时钟共识方法及装置 | |
CN111066285A (zh) | 基于sm2签名恢复公钥的方法 | |
CN111682942B (zh) | 一种应用于许可链的二元加权拜占庭容错共识方法 | |
CN112001502A (zh) | 高延时网络环境鲁棒的联邦学习训练方法及装置 | |
CN111314067A (zh) | 区块存储方法、装置、计算机设备及存储介质 | |
CN111092896A (zh) | 基于优化paxos的食品溯源分布式数据同步方法 | |
CN115665170B (zh) | 基于信誉和节点压缩机制的区块链共识方法 | |
CN110874351A (zh) | 工作量证明协同工作方法、区块链节点及区块链系统 | |
CN112348518B (zh) | 一种区块链交易证明的方法及装置 | |
CN113612604B (zh) | 面向异步网络的安全分布式随机数生成方法及装置 | |
CN109840769B (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 |