CN113157450B - 在区块链系统中执行区块的方法及装置 - Google Patents

在区块链系统中执行区块的方法及装置 Download PDF

Info

Publication number
CN113157450B
CN113157450B CN202110420953.3A CN202110420953A CN113157450B CN 113157450 B CN113157450 B CN 113157450B CN 202110420953 A CN202110420953 A CN 202110420953A CN 113157450 B CN113157450 B CN 113157450B
Authority
CN
China
Prior art keywords
cross
sub
fragment
node
transactions
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
Application number
CN202110420953.3A
Other languages
English (en)
Other versions
CN113157450A (zh
Inventor
郑子彬
徐泉清
郑沛霖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Ant Blockchain Technology Shanghai Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd, Ant Blockchain Technology Shanghai Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202110420953.3A priority Critical patent/CN113157450B/zh
Publication of CN113157450A publication Critical patent/CN113157450A/zh
Application granted granted Critical
Publication of CN113157450B publication Critical patent/CN113157450B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Abstract

本说明书实施例提供了一种在区块链系统中执行区块的方法,所述区块链系统包括第一分片和第二分片,其中,所述第一分片中的第一节点和所述第二分片中的第二节点互为信任节点。该方法由所述第一节点执行,包括:在执行第一区块的过程中生成与所述第二分片对应的一个或多个第一跨分片子交易;将所述一个或多个跨分片子交易发送给所述第二节点,以使得所述第二节点执行所述一个或多个第一跨分片子交易。如此,可以提高区块链中区块的执行效率。

Description

在区块链系统中执行区块的方法及装置
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及在区块链系统中执行区块的方法及装置。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有难以篡改、去中心化等特征。区块链技术在金融、公益、司法、交易等场景中,具有巨大的应用潜力。
目前限制区块链技术大规模落地应用的一个很重要因素是性能,主要包括吞吐量,吞吐量一般可以通过每秒交易笔数(Transaction Per Second,简称TPS)来度量。开发者们提出了各种各样的方案来尝试提升区块的吞吐量,这一过程称为“扩容”。区块链分片技术是一种用于对区块链进行扩容的方案。区块链分片的基本思路是将区块链网络中的节点分成若干个相对独立的子网络,每个子网络构成一个区块链,一个子网络也就是一个分片(shard)。通过多个分片的并行处理,可提升整个网络的吞吐量。
然而,目前分片技术的实现方案难以满足实际应用中日益增长的需求,例如,难以满足在交易高并发环境中的吞吐量要求。因此,需要一种方案,可以有效提高区块链中交易的处理效率。
发明内容
本说明书一个或多个实施例描述了一种在区块链系统中执行区块的方法及装置,采用该方法或装置,可以有效提高区块链中区块的执行效率,有效提升区块链系统的吞吐量。
根据第一方面,提供了一种在区块链系统中执行区块的方法,所述区块链系统包括第一分片和第二分片,其中,所述第一分片中的第一节点和所述第二分片中的第二节点互为信任节点,所述方法由所述第一节点执行,包括:在执行第一区块的过程中生成与所述第二分片对应的一个或多个第一跨分片子交易;将所述一个或多个跨分片子交易发送给所述第二节点,以使得所述第二节点执行所述一个或多个第一跨分片子交易。
根据第二方面,提供了一种在区块链系统中执行区块的装置,所述区块链系统包括第一分片和第二分片,其中,所述第一分片中的第一节点和所述第二分片中的第二节点互为信任节点,所述装置部署于所述第一节点执行,包括:子交易生成单元,配置为在执行第一区块的过程中生成与所述第二分片对应的一个或多个第一跨分片子交易;子交易发送单元,配置为将所述一个或多个跨分片子交易发送给所述第二节点,以使得所述第二节点执行所述一个或多个第一跨分片子交易。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
根据本说明书实施例提供的方法和装置,不同分片中的节点之间可以建立信任关系,从而可以在彼此信任的节点之间进行分片间的跨分片通信,从而各自完成对自身分片中区块的执行,从而提高了区块链系统中的区块执行效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出根据一个实施例的区块链系统的分片及通讯架构示意图;
图2示出区块链系统中各个分片执行区块的过程示意图;
图3示出根据一个实施例的在区块链系统中执行区块的方法流程图;
图4示出根据一个示例的跨分片调用智能合约的传参示意图;
图5示出根据一个实施例的在区块链系统中执行区块的装置结构示意图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
如前所述,分片技术旨在提升区块的吞吐量。具体而言,分片技术根据不同的分片机制可以划分为三种:网络分片(network sharding),交易分片(transaction sharding),状态分片(state sharding)。网络分片是最基础的一种分片方式,包括将整个区块链网络划分成多个子网络,也就是多个分片。这样,区块链网络中的多个分片可以并行处理网络中不同的交易。交易分片是将交易按某种规则分配到不同分片,从而达到并行处理的目的。交易分片的前提是先进行网络分片。在所有的分片机制当中,状态分片是最具挑战的分片方式。状态分片的关键是将整个存储区分开,让不同的分片存储不同账户的状态,每个分片只负责存储归属于自己的一部分账户的世界状态,而不是存储区块链系统的全部账户的世界状态。状态分片能够解决存储能力瓶颈问题。本说明书实施例提供的方案可应用于状态分片,可以理解,本说明书实施例的方案也可应用于其它类型的分片。
区块链网络被划分为多个分片后,涉及到跨分片业务的处理,目前跨分片业务的处理产生大量的通讯开销,应用效果欠佳。
基于以上,发明人提出一种应用于区块链分片场景下的节点间通讯架构,在此架构中,不同分片中的节点之间可以建立信任关系,从而使得彼此信任的节点之间在发生通讯时,发送方不需要提供用于自证身份的验证信息,相应接收方也无需对发送方进行身份验证,从而可以有效节省通讯开销,提升区块链吞吐量。
在一种实施方式中,区块链系统包括多个分片,不同分片的相互信任的节点形成集合。图1示出根据一个实施例的区块链系统的分片及通讯架构示意图,其中示出属于分片1、分片2和分片3(未标出分片3)的节点,以及不同分片的互信的多个节点形成的集合A、集合B、集合C和集合D,其中各个集合中包括分别属于3个分片的3个节点,比如,集合A中包括节点1A、节点2A和节点3A,其中,节点1A为分片1中的节点,节点2A为分片2中的节点,节点3A为分片3中的节点,各个集合的任意两个节点彼此互为信任节点。同一分片中的节点可以搭建一条区块链,具体例如,分片1中的节点1A、1B和1C可以搭建一条区块链1,分片2中的节点2A、2B和2C可以搭建一条区块链2,分片3中的节点3A、3B和3C可以搭建一条区块链3。每个分片内部的各参与方节点之间进行共识。对于各个集合中节点间信任关系的建立,以集合A中的节点1A和节点2A为例进行说明。在一个实施例中,上述区块链系统包括联盟链系统,节点1A和节点2A属于相同的联盟成员,联盟成员中的节点彼此互相信任。进一步,在一个具体的实施例中,节点1A和节点2A通过所属联盟成员的内部网络连接。在另一个实施例中,节点1A和节点2A都是权威机构,两个机构之间彼此认可对方的权威性,比如,节点1A是国家某机关部门,节点2A是政府某部门。如此,可以建立从属于不同分片的节点之间的信任关系,并在由此形成的节点集合中,实现任意两个分片所对应节点之间的轻量级通讯。需理解,图1中示出3个分片和4个集合作为示意性说明,实际上,区块链系统中的分片和集合还可以具有其他大于1的数量,例如,区块链系统中包括50个分片和10个集合。
进一步,基于上述节点间通讯架构,发明人提出一种区块执行过程中的跨分片通讯方案。在此跨分片通讯方案中,通过在各个集合中包括各个分片的节点,可以在单个集合中的节点之间进行分片间的无需验证身份的跨分片通信,从而各自完成对自身分片区块的执行。
图2示出区块链系统中各个分片执行区块的过程示意图,上述集合A中分属于分片1、分片2和分片3的节点1A、节点2A和节点3A,通过相互之间进行跨分片通信,各自完成对应分片中区块M的执行。如图2所示,集合A中各个节点同时开始执行区块M,在执行过程中,涉及K(K为正整数)个轮次的跨分片通讯,K轮次的跨分片通讯结束也意味着对区块M的执行结束,之后再开始下一区块(即区块M+1)的执行。可以理解,分片1的区块M表示分片1中高度为M的区块,分片2的区块M表示分片2中高度为M的区块,以此类推,因此,分片1的区块M、分片2的区块M和分片3的区块M表示不同的区块。
在一种实施情况中,K≥2,这意味着在前K-1轮次通讯的各轮通讯内,集合A中均存在节点发送指示其他分片中的信任节点执行跨分片操作的跨分片子交易,直到第K轮次通讯中,集合A中的各个节点确定集合A内的全部节点均没有生成跨分片子交易,则结束跨分片通讯。在另一种实施情况中,K=1,这意味着集合A内的各个节点在首轮通讯中即明确集合A内的全部节点均没有生成跨分片子交易,跨分片通讯进行1轮次后即结束。
下面重点对跨分片通讯进行多轮(即K≥2)的情况进行介绍。图3示出根据一个实施例的在区块链系统中执行区块的方法流程图,所述方法可以由区块链系统中任一集合中的任一节点执行,下文中以由图1示出的集合A中的节点1A执行该方法为例进行描述,可以理解,节点1A可以实现为任何具有计算、处理能力的装置、服务器或设备集群等。
如图3所示,所述方法至少包括步骤:步骤S310,在执行分片1中的区块M(或简称分片1区块M)的过程中生成与其他分片对应的一个或多个跨分片子交易;步骤S320,将该一个或多个跨分片子交易发送给其他分片中的信任节点,以使得信任节点执行该一个或多个跨分片子交易。
在一种实施情况中,上述步骤S310和S320对应多轮通讯中的第1轮跨分片通讯。在首轮通讯前,集合A中的各个节点分别获取并执行属于对应分片的多个交易,相应,上述步骤S310中可以包括:节点1A获取属于分片1的n1(n1为自然数)个交易(Transaction,可简写为Tx),然后执行该n1个Tx,生成与分片2对应的一个或多个跨分片子交易,和/或,生成与分片3对应的一个或多个跨分片子交易。与第1轮跨分片通讯对应地,该执行n1个Tx的过程可表示为节点1A执行区块M的过程中的第1轮执行过程。
对于节点1A获取属于分片1的n1个Tx,在一个具体的实施例中,分片1中的各个节点都可以从用户设备或分片1中的其他节点接收到交易并将该交易扩散给分片1中的其他节点,分片1中的节点在接收到交易之后将交易放入本地的交易池中,通过这样,分片1中的各个节点的交易池中都包括相同的多个交易。为了确定属于区块M的交易,分片1中的节点1A、节点1B和节点1C进行共识确定记账节点,由记账节点从交易池中确定属于区块M的预定数目个(或记作n1个)交易,并将n1个交易的交易信息发送给分片1中的其他各节点,之后,其他各节点可以根据交易信息从本地交易池获取该n1个交易。在一个例子中,交易信息包括n1个交易的原始交易内容。在另一个例子中,交易信息中包括n1个交易的交易哈希,如此,相较于发送原始交易内容,可以有效节省消耗的通讯资源。在又一个例子中,交易信息中还可以包括n1个交易的执行顺序,例如,交易信息中可以包括按照执行顺序排列的n1个交易或n1个交易哈希。在另一个具体的实施例中,分片1中预先确定了主节点,由主节点从用户设备或分片1中的其他节点接收交易,并将交易放入本地的交易池中。分片1中在结束对上一区块(即区块M-1)的处理之后,由主节点从交易池中确定属于区块M的n1个交易,并将该n1个交易发送给分片1中的其他各节点。在一个例子中,可以将该n1个交易按照执行顺序排列后,发送给其他各节点。由上,分片1中包括节点1A在内的每个节点都能获取到属于分片1的n1个Tx。
节点1A在获取n1个Tx之后,对其进行执行,该执行过程通过图2中标记有“n1个Tx”的矩形框示出。在一个实施例中,节点1A在获取到n1个Tx的同时,还获取到该n1个Tx的执行顺序,相应,节点1A可以按照该执行顺序执行该n1个Tx。
在一个实施例中,n1个Tx中包括一个或多个跨分片交易,在执行该一个或多个跨分片交易的过程中,生成跨分片子交易,在状态分片(结合图1,分片1、分片2和分片3中存储了不同账户的状态)的场景下,跨分片子交易用于查询或修改其他分片中的状态。需说明,上述方法可以应用于包括状态分片在内的任何类型的分片场景,并且,执行某个跨分片交易而生成的跨分片子交易可能是一个或多个。在一个具体的实施例中,一个或多个跨分片交易中包括跨分片转账交易,节点1A在执行该跨分片转账交易时,对分片1中的转出账户的余额减少需要转账的数额,并且,生成对分片2中的转入账户增加余额的跨分片子交易,和/或,生成对分片3中转入账户增加余额的跨分片子交易。
在另一个具体的实施例中,上述一个或多个跨分片交易中包括跨分片调用合约交易,节点1A在执行该跨分片调用合约交易时,生成对分片2中的合约进行调用的跨分片子交易,和/或,生成对分片3中的合约进行调用的跨分片子交易,在状态分片场景下,生成的跨分片子交易通过指示执行其他分片中的合约而指示查询或修改其他分片中的状态。在一个示例中,图4示出根据一个示例的跨分片调用智能合约的传参示意图,如图4所示,分片1中部署合约A和合约B,分片2中部署合约A′和合约C,合约A和合约A′实现的功能相同,合约B和合约C实现的功能不同;进一步,节点1A获取的多个交易中包括调用合约A的跨分片调用合约交易和调用合约B的跨分片调用合约交易,通过执行这两个跨分片调用合约交易,分别生成跨分片子交易Cross-call(A′,data_A′)和Cross-call(C,data_C),用于调用分片2中的合约A′和C,其中data_A′表示需传入合约A′的参数,data_C表示需传入合约C的参数。如此,可以实现跨分片的合约调用。
对于以上通过执行跨分片交易生成的跨分片子交易,在一个实施方式中,节点1A生成的跨分片子交易中不包括节点1A的数字签名,如此,其他分片中与节点1A互为信任节点的节点2A等在执行对应的跨分片子交易时,无需验签,从而可以有效节省通讯消耗的资源、时间。在一种实施方式中,节点1A生成的跨分片子交易中可包括对应的原始交易的哈希值。在另一种实施方式中,考虑到其他分片在执行跨分片子交易后,可能会生成新的跨分片子交易,相应,可设计跨分片子交易中包括通讯轮次信息,指示对应的跨分片子交易针对第几轮跨分片通讯而产生,或者说,在第几轮次通讯中被传输。
针对步骤S310,根据一个具体的例子,节点1A在执行完n1个交易之后,生成多个与分片2对应的跨分片子交易和多个与分片3对应的跨分片子交易。节点1A以该多个跨分片子交易的产生顺序(也即各个跨分片子交易对应的交易的执行顺序)排列该多个跨分片子交易。同时,节点1A在执行完n1个交易之后,可获取基于n1个交易的执行结果产生的状态信息(即对世界状态的更改信息),并缓存该状态信息。
以上,节点1A在首轮通讯前,执行属于分片1中区块M的n1个交易,可以生成与其他分片对应的一个或多个跨分片子交易。进一步,上述步骤S320可以包括:在第1轮通讯中,节点1A将执行n1个交易而生成的一个或多个跨分片子交易,发送至其他分片中的信任节点。在一个实施例中,节点1A将生成的与分片2对应的跨分片子交易发送至节点2A,和/或,节点1A将生成的与分片3对应的跨分片子交易发送至节点3A。在一个实施例中,节点1A在向节点2A发送多个跨分片子交易之前,可先对该多个跨分片子交易进行打包压缩,再将压缩数据包发送至节点2A。
此外需说明,集合A中对应各个分片的各个节点各自执行属于区块M的交易后,部分或全部分片中的节点生成跨分片子交易,进而在第1轮通讯中,该部分或全部节点各自将生成的跨分片信息发送给对应分片的信任节点,而对于未生成跨分片子交易的节点,其向所属集合内的全部信任节点发送用于指示未生成跨分片子交易的信息。
在另一种实施情况中,上述步骤S310和S320对应多轮通讯中的第2轮跨分片通讯。相应,上述步骤S310可以包括:在第2轮通讯前的第2轮执行过程中,节点1A执行在第1轮跨分片通讯中从节点2A和/或节点3A接收到的q个跨分片子交易,生成与分片2对应的一个或多个子交易,和/或,生成与分片3对应的一个或多个子交易。图2中以标注“q”的矩形框示意节点1A对q个跨分片子交易的执行过程。需说明,q个跨分片子交易由节点2A在其第1轮执行过程中执行分片2中属于区块M的n2个Tx生成,和/或,由节点3A在其第1轮执行过程中执行分片3中属于区块M的n3个Tx生成,交易的执行过程可以参见前述对节点1A执行n1个Tx的描述,并且,因不同分片各自成块,所以不同分片的区块中所包含的交易数量可以相同也可以不相同,例如,n1=n2≠n3
在一个实施例中,节点1A首先以预定排序规则(如按照分片序号排序)排列从节点2A接收到的q1个跨分片子交易和q2个跨分片子交易,得到顺序排列的q(q=q1+q2)个跨分片子交易,然后基于第1轮执行过程对应的状态信息顺序执行该q个跨分片子交易,该执行过程可以表示为节点1A在执行区块M的过程中的第2轮执行过程。在一个具体的实施例中,节点1A存储执行该q个跨分片子交易而产生的状态信息,可以理解,由于该第2轮执行过程是基于第1轮执行过程对应的状态信息进行的,因此,该第2轮执行过程对应的状态信息中包括了前一状态信息在第2轮执行过程中未更新的内容。需说明,节点1A在执行区块M的过程中,对执行原始交易和跨分片子交易而产生的状态信息均进行存储,如此,将对区块M的执行操作分成与跨分片通讯对应的轮次,并记录每个轮次的状态信息,在一些需要进行状态回滚或者状态备份等情况中,可以以区块中的轮次为单位进行回滚或备份,而不需要以区块为单位进行处理,从而提高了处理效率。再参见图2,在第2轮通讯前,节点2A和节点3A分别执行m个跨分片子交易和p个跨分片子交易,对此,可以参见对节点1A执行p个跨分片子交易的描述,不作赘述。
以上,结合第1轮通讯和第2轮通讯,对上述步骤S310和S320进行介绍。依此类推,上述步骤S310和S320还可以对应多轮次通讯中除最后一轮次通讯以外的其他轮次,如第3轮通讯,等等。
对于多轮通讯中的最后一轮次通讯,其发生在上述步骤S310和步骤S320之后。具体,在一个实施例中,在第K-1轮通讯中,节点1A从节点2A和/或节点3A接收到跨分片子交易,之后,执行该跨分片子交易,且未产生跨新的跨分片子交易;或者,在第K-1轮通讯中,节点1A未从节点2A和节点3A接收到跨分片子交易,因而也无从生成新的跨分片子交易。据此,节点1A在没有产生新的跨分片子交易的情况下,在第K轮通讯中,向其他节点发送用于指示未生成跨分片子交易的信息,此信息中可以包括通讯轮次。进一步,在第K轮通讯中,节点1A还分别从节点2A和节点3A接收到用于指示未生成跨分片子交易的信息,于是,节点1A可以确定出集合A中的全部节点均未生成新的跨分片子交易。可以理解,同样地,节点2A和节点3A也会各自确定出集合A中的全部节点均未生成新的跨分片子交易。进而,集合A中的各个节点均可开始进行如下操作:存储与区块M对应的世界状态,该世界状态可基于与执行区块M的过程中的最后一轮(即第K轮)执行过程对应的状态信息获取,生成区块M(即区块M的区块体和区块头)、并存储区块M,即将区块M存储到本地的区块数据库中,从而结束对区块M的执行。以上主要对多轮通讯的情况进行介绍。实际在执行某一区块时,还可能出现单轮通讯的情况,具体,在第1轮通讯前,集合A中的各个节点各自执行属于区块M的交易后,均未生成跨分片子交易,此时,在第1轮通讯中,集合A中的各个节点各自广播用于指示未生成跨分片子交易的信息,于是,各个节点可以通过自己发出的信息和从集合内信任节点接收到的信息,确定出集合A中的全部节点均未生成跨分片子交易信息,进而在第1轮通讯后,结束跨分片通讯,结束对区块M的执行。
从上述描述可以看出,在本说明书实施例提供的如图1所示的包括多个分片的区块链系统中,执行区块的过程包括以下顺序进行的多个步骤:各个分片基本同时通过共识确定属于同一高度的区块(例如区块M)的多个交易,一个集合中包括的各个节点分别执行其所属分片的区块M的多个交易,执行来自集合中其他节点的多个跨分片子交易,集合中的各个节点在确定集合中各个节点都完成对跨分片子交易的执行、并且没有生成新的跨分片子交易之后,分别基于多个交易和多个跨分片子交易的执行结果对应的状态信息,更新区块M的世界状态,生成区块M的区块体和区块头,存储区块M。可以理解,在各个节点在执行属于区块M的多个交易的过程中都没有产生跨分片子交易的情况中,执行区块的过程将不包括上述执行跨分片子交易的过程。
以上,在集合A中的各个节点结束对区块M的执行后,随即进入下一区块(即区块M+1)的执行。
由上,对分片中区块的执行包括该分片内节点执行属于该区块的多个交易,还可能包括该节点在其他分片中的信任节点执行源自该多个交易的跨分片子交易,当每个集合中的全部节点在某轮通讯中均表明已没有需要执行的跨分片子交易时,判定全部分片各自对应的当前区块执行成功,之后再开启下一区块的执行,因此,不同分片之间对区块的执行是同步的,各个分片中在同一时间具有同样的区块高度。需理解,上述“区块M”中的“M”可指代区块高度。
分片1~分片3同时执行高度相同的各自的区块,可以是为了保证包括跨片事务的交易在不同分片的子交易的执行结果的原子性。具体是,分片1、分片2和分片3首先分别开始执行各自的创世块(下文称为区块0),各个分片在分别共识之后存入各自的创世块,创世块中一般包括配置信息,如分片中包括的分片节点,各个分片节点的IP地址、端口号、各个分片节点的公钥列表,分片中的共识节点标识等等。在执行创世块之后,分片1、分片2和分片3开始执行各自的区块1。具体是,分片1、分片2和分片3在分别通过共识确定属于区块1的多个交易及该多个交易的执行顺序之后,分片1、分片2和分片3分别开始执行经共识的各自的区块1中的多个交易。其中,分片1在执行交易的过程中可能会产生了需由分片2执行的跨分片子交易。如果该交易对应于对事务的执行,分片1在确定该交易的跨分片子交易执行成功之后才能确定对应交易执行成功。相应地,分片1在确定发送给全部其他分片节点的跨分片子交易都执行成功了,才能确定对区块1中的多个交易执行成功。其中,在上文及之后的描述中,使用“交易”表示在分片中共识的属于区块的多个交易,使用“跨分片子交易”表示通过执行交易或跨分片子交易所产生的子交易。
类似地,节点2A和节点3A也会向集合A中的其他节点发送跨分片子交易,也同样地在确定发送给全部其他节点的跨分片子交易都执行成功了,才能确定其对应的分片的区块1中的多个交易执行成功。因此,为了保证各个分片的区块1中的事务型交易的执行正确性,节点1A~节点3A分别等待集合A中的全部节点都结束对跨分片子交易的执行,并且确定这些跨分片子交易都执行成功之后才开始更新世界状态,即存储与区块1对应的世界状态,生成其所属分片的区块1(即区块1的区块体和区块头),存储区块1,从而结束对其所属分片的区块1的执行,这样保证各个分片的区块1中的事务型交易包括的子交易的执行原子性。节点1A~节点3A各自在确定集合A中的全部节点都结束对区块1的执行之后,才各自开始对区块2的执行,依此类推,节点1A~节点3A各自在确定全部节点都结束对区块2的执行之后,才各自开始对区块3的执行。因此,节点1A~节点3A(即不同分片)之间对区块的执行是同步的,各个节点在同一时间具有同样的区块高度。
可以理解,虽然在图2中示出节点1A~节点3A同时执行高度相同的各自所属的分片的区块,本说明书实施例不限于此,本说明书实施例也可以与其他用于保证交易原子性的技术相结合,在该其他用于保证交易原子性的技术中,不同的分片有可能执行不同高度的区块,也即,节点1A~节点3A有可能在同一时间执行不同高度的区块。
图1中的每个集合都可以在其内部多个节点中执行如图2所示的跨分片通讯,以进行跨分片操作,通过这样,可在每个集合的内部网络中进行跨分片通讯,从而不需要不同分片的节点之间通过外部网络传播跨分片子交易,从而提高了区块链系统中的区块执行效率。
综上,采用本说明书实施例披露的在区块链系统中执行交易的方法,可以有效提高在区块链分片场景中对区块的执行效率。
与上述执行交易的方法相对应的,本说明书实施例还披露一种执行交易的装置。具体如下:
图5示出根据一个实施例的在区块链系统中执行区块的装置结构示意图,所述区块链系统包括第一分片和第二分片,其中,所述第一分片中的第一节点和所述第二分片中的第二节点互为信任节点,所述装置部署于所述第一节点执行。如图5所示,所述装置500包括:
子交易生成单元510,配置为在执行第一区块的过程中生成与所述第二分片对应的一个或多个第一跨分片子交易;子交易发送单元520,配置为将所述一个或多个跨分片子交易发送给所述第二节点,以使得所述第二节点执行所述一个或多个第一跨分片子交易。
在一个实施例中,所述子交易生成单元510具体配置为:获取第一分片中属于第一区块的多个第一交易;执行所述多个第一交易,生成与所述第二分片对应的一个或多个第一跨分片子交易。
在一个实施例中,所述区块链系统包括联盟链系统,所述第一节点和所述第二节点属于相同的联盟成员。
在一个具体的实施例中,所述第一节点和所述第二节点通过所述联盟成员的内部网络连接。
在一个实施例中,第一跨分片子交易指示执行第二分片中的合约。
在一个实施例中,第一跨分片子交易中不包括所述第一节点的数字签名。
在一个实施例中,所述第一分片和第二分片存储不同账户的状态,第一跨分片子交易用于查询或修改所述第二分片中的状态。
在一个实施例中,所述子交易生成单元510具体配置为:从所述第二节点接收对应所述第一分片的一个或多个第二跨分片子交易,该一个或多个第二跨分片子交易由所述第二节点在执行第二区块的过程中生成,所述第二区块与第一区块具有相同的区块高度;执行所述多个第二跨分片子交易,生成与所述第二分片对应的一个或多个第三跨分片子交易。
在一个具体的实施例中,所述装置500还包括:存储单元530,配置为在执行所述多个第二跨分片子交易之后,存储通过执行所述多个第二跨分片子交易产生的状态信息。
在一个实施例中,所述装置500还包括信息发送单元540,配置为在执行所述第一区块的过程中没有生成与所述区块链系统中任一其他分片对应的新的跨分片子交易的情况下,向所述全部其他分片各自的信任节点发送用于指示未生成跨分片子交易的信息。
在一个实施例中,所述装置500还包括:区块执行结束单元550,配置为在向所述全部其他分片各自的信任节点发送用于指示未生成跨分片子交易的信息、且从所述全部其它分片各自的信任节点都接收到所述用于指示未生成跨分片子交易的信息之后,结束对所述第一区块的执行。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图3所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图3所描述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (20)

1.一种在区块链系统中执行区块的方法,所述区块链系统包括第一分片和第二分片,所述区块链系统包括联盟链系统,所述第一节点和所述第二节点属于相同的联盟成员;其中,所述第一分片中的第一节点和所述第二分片中的第二节点互为信任节点,所述方法由所述第一节点执行,包括:
在执行第一区块的过程中生成与所述第二分片对应的一个或多个第一跨分片子交易;
将所述一个或多个跨分片子交易通过所述联盟成员的内部网络发送给所述第二节点,以使得所述第二节点执行所述一个或多个第一跨分片子交易。
2.根据权利要求1所述的方法,其中,在执行第一区块的过程中生成与所述第二分片对应的一个或多个跨分片子交易包括:
获取第一分片中属于第一区块的多个第一交易;
执行所述多个第一交易,生成与所述第二分片对应的一个或多个第一跨分片子交易。
3.根据权利要求1所述的方法,其中,第一跨分片子交易指示执行第二分片中的合约。
4.根据权利要求1所述的方法,其中,第一跨分片子交易中不包括所述第一节点的数字签名。
5.根据权利要求1所述的方法,其中,所述第一分片和第二分片存储不同账户的状态,第一跨分片子交易用于查询或修改所述第二分片中的状态。
6.根据权利要求1所述的方法,其中,所述在执行第一区块的过程中生成与所述第二分片对应的一个或多个跨分片子交易包括:
从所述第二节点接收对应所述第一分片的一个或多个第二跨分片子交易,该一个或多个第二跨分片子交易由所述第二节点在执行第二区块的过程中生成;
执行所述多个第二跨分片子交易,生成与所述第二分片对应的一个或多个第三跨分片子交易。
7.根据权利要求6所述的方法,还包括:
在执行所述多个第二跨分片子交易之后,存储通过执行所述多个第二跨分片子交易产生的状态信息。
8.根据权利要求1所述的方法,还包括,在执行所述第一区块的过程中没有生成与所述区块链系统中任一其他分片对应的新的跨分片子交易的情况下,向所述全部其他分片各自的信任节点发送用于指示未生成跨分片子交易的信息。
9.根据权利要求8所述的方法,还包括:
在向所述全部其他分片各自的信任节点发送用于指示未生成跨分片子交易的信息、且从所述全部其它分片各自的信任节点都接收到所述用于指示未生成跨分片子交易的信息之后,结束对所述第一区块的执行。
10.一种在区块链系统中执行区块的装置,所述区块链系统包括第一分片和第二分片,所述区块链系统包括联盟链系统,所述第一节点和所述第二节点属于相同的联盟成员;其中,所述第一分片中的第一节点和所述第二分片中的第二节点互为信任节点,所述装置部署于所述第一节点执行,包括:
子交易生成单元,配置为在执行第一区块的过程中生成与所述第二分片对应的一个或多个第一跨分片子交易;
子交易发送单元,配置为将所述一个或多个跨分片子交易通过所述联盟成员的内部网络发送给所述第二节点,以使得所述第二节点执行所述一个或多个第一跨分片子交易。
11.根据权利要求10所述的装置,其中,所述子交易生成单元具体配置为:
获取第一分片中属于第一区块的多个第一交易;
执行所述多个第一交易,生成与所述第二分片对应的一个或多个第一跨分片子交易。
12.根据权利要求10所述的装置,其中,第一跨分片子交易指示执行第二分片中的合约。
13.根据权利要求10所述的装置,其中,第一跨分片子交易中不包括所述第一节点的数字签名。
14.根据权利要求10所述的装置,其中,所述第一分片和第二分片存储不同账户的状态,第一跨分片子交易用于查询或修改所述第二分片中的状态。
15.根据权利要求10所述的装置,其中,所述子交易生成单元具体配置为:
从所述第二节点接收对应所述第一分片的一个或多个第二跨分片子交易,该一个或多个第二跨分片子交易由所述第二节点在执行第二区块的过程中生成;
执行所述多个第二跨分片子交易,生成与所述第二分片对应的一个或多个第三跨分片子交易。
16.根据权利要求15所述的装置,还包括:
存储单元,配置为在执行所述多个第二跨分片子交易之后,存储通过执行所述多个第二跨分片子交易产生的状态信息。
17.根据权利要求10所述的装置,还包括,信息发送单元,配置为在执行所述第一区块的过程中没有生成与所述区块链系统中任一其他分片对应的新的跨分片子交易的情况下,向所述全部其他分片各自的信任节点发送用于指示未生成跨分片子交易的信息。
18.根据权利要求17所述的装置,还包括:
区块执行结束单元,配置为在向所述全部其他分片各自的信任节点发送用于指示未生成跨分片子交易的信息、且从所述全部其它分片各自的信任节点都接收到所述用于指示未生成跨分片子交易的信息之后,结束对所述第一区块的执行。
19.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-9中任一项的所述的方法。
20.一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-9中任一项所述的方法。
CN202110420953.3A 2021-04-19 2021-04-19 在区块链系统中执行区块的方法及装置 Active CN113157450B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110420953.3A CN113157450B (zh) 2021-04-19 2021-04-19 在区块链系统中执行区块的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110420953.3A CN113157450B (zh) 2021-04-19 2021-04-19 在区块链系统中执行区块的方法及装置

Publications (2)

Publication Number Publication Date
CN113157450A CN113157450A (zh) 2021-07-23
CN113157450B true CN113157450B (zh) 2024-01-05

Family

ID=76868735

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110420953.3A Active CN113157450B (zh) 2021-04-19 2021-04-19 在区块链系统中执行区块的方法及装置

Country Status (1)

Country Link
CN (1) CN113157450B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115797070B (zh) * 2023-01-10 2023-09-15 中山大学 一种基于中间人账户激励的区块链交易方法、装置及系统
CN116055064B (zh) * 2023-03-17 2023-06-23 安徽中科晶格技术有限公司 区块链分片中多区块同时共识方法、系统、介质及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109688199A (zh) * 2018-11-28 2019-04-26 西安电子科技大学 一种多域分层物联网联盟链平台及其分片方法、计算机
CN110400140A (zh) * 2019-06-04 2019-11-01 西安电子科技大学 基于Fabric的分层分片交易信息处理方法及应用
CN111680050A (zh) * 2020-05-25 2020-09-18 杭州趣链科技有限公司 一种联盟链数据的分片处理方法、设备和存储介质
CN112257118A (zh) * 2020-12-21 2021-01-22 支付宝(杭州)信息技术有限公司 一种锁定包含分片的区块链系统中跨片事务的方法及系统
CN112261159A (zh) * 2020-12-21 2021-01-22 支付宝(杭州)信息技术有限公司 执行跨片事务的方法及系统、主链节点和目标分片节点

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11194837B2 (en) * 2018-05-01 2021-12-07 International Business Machines Corporation Blockchain implementing cross-chain transactions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109688199A (zh) * 2018-11-28 2019-04-26 西安电子科技大学 一种多域分层物联网联盟链平台及其分片方法、计算机
CN110400140A (zh) * 2019-06-04 2019-11-01 西安电子科技大学 基于Fabric的分层分片交易信息处理方法及应用
CN111680050A (zh) * 2020-05-25 2020-09-18 杭州趣链科技有限公司 一种联盟链数据的分片处理方法、设备和存储介质
CN112257118A (zh) * 2020-12-21 2021-01-22 支付宝(杭州)信息技术有限公司 一种锁定包含分片的区块链系统中跨片事务的方法及系统
CN112261159A (zh) * 2020-12-21 2021-01-22 支付宝(杭州)信息技术有限公司 执行跨片事务的方法及系统、主链节点和目标分片节点

Also Published As

Publication number Publication date
CN113157450A (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
CN110348242B (zh) 业务请求处理方法及装置
JP7114629B2 (ja) ブロックチェーントランザクションの並列検証のためのシステム及び方法
CN109493050B (zh) 基于区块链主链加并行多子链的转账方法
CN109472572B (zh) 基于区块链主链加并行多子链的合约系统
US20230087138A1 (en) Data processing method, apparatus, and storage medium
CN111625593B (zh) 基于区块链的数据处理方法、装置、计算机设备
CN113157450B (zh) 在区块链系统中执行区块的方法及装置
CN111046437A (zh) 基于同构多链的区块链并行事务处理方法及系统、终端
US11374769B2 (en) Efficient and secure distributed ledger maintenance
CN109493052B (zh) 一种基于主链加并行多子链的跨链合约系统
CN111338806B (zh) 一种业务控制方法及装置
CN113064764B (zh) 在区块链系统中执行区块的方法及装置
CN113841359A (zh) 用于在区块链网络中传播区块的方法和装置
WO2021190179A1 (zh) 一种同步处理方法和相关装置
US20230370285A1 (en) Block-chain-based data processing method, computer device, computer-readable storage medium
Charapko et al. Bridging paxos and blockchain consensus
CN113708937B (zh) 区块链交易的处理方法和系统
US20190372825A1 (en) Communication apparatus, communication method, and recording medium
US20220383304A1 (en) Distributed network with consensus mechanism
CN112612855B (zh) 高可用数据库日志接收队列、同步方法及装置
Lewi et al. Securing update propagation with homomorphic hashing
CN114140115B (zh) 区块链交易池的分片方法、系统、存储介质和计算机系统
CN114499874A (zh) 一种应用于工业互联网的拜占庭容错共识优化方法
CN117010889A (zh) 数据处理方法、装置及设备、介质、产品
CN115145715A (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