CN113064764B - 在区块链***中执行区块的方法及装置 - Google Patents

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

Info

Publication number
CN113064764B
CN113064764B CN202110419704.2A CN202110419704A CN113064764B CN 113064764 B CN113064764 B CN 113064764B CN 202110419704 A CN202110419704 A CN 202110419704A CN 113064764 B CN113064764 B CN 113064764B
Authority
CN
China
Prior art keywords
transaction
transactions
node
block
sub
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
CN202110419704.2A
Other languages
English (en)
Other versions
CN113064764A (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 CN202110419704.2A priority Critical patent/CN113064764B/zh
Publication of CN113064764A publication Critical patent/CN113064764A/zh
Application granted granted Critical
Publication of CN113064764B publication Critical patent/CN113064764B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Technology Law (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Development Economics (AREA)
  • Computer Security & Cryptography (AREA)
  • Retry When Errors Occur (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供了一种在区块链***中执行区块的方法和装置,所述区块链***包括第一分片和第二分片,所述第一分片中包括第一节点,所述方法由所述第一节点执行,包括:在执行第一区块的过程中,从所述第二分片接收第一信息,所述第一信息指示属于所述第一区块的n个交易中执行错误的第一交易,其中,所述第一信息由所述第二分片在对与所述第一交易对应的第一跨分片子交易执行失败之后发送,所述第一跨分片子交易为所述第二分片中属于第二区块的跨分片子交易;重新执行所述n个交易中去除所述第一交易之后的多个交易。

Description

在区块链***中执行区块的方法及装置
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及在区块链***中执行区块的方法及装置。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有难以篡改、去中心化等特征。区块链技术在金融、公益、司法、交易等场景中,具有巨大的应用潜力。
目前限制区块链技术大规模落地应用的一个很重要因素是性能,主要包括吞吐量,吞吐量一般可以通过每秒交易笔数(Transaction Per Second,简称TPS)来度量。开发者们提出了各种方案来尝试提升区块的吞吐量,这一过程称为“扩容”。区块链分片技术是一种用于对区块链进行扩容的方案。区块链分片的基本思路是将区块链网络中的节点分成若干个相对独立的子网络,每个子网络构成一个区块链,一个子网络也就是一个分片(shard)。通过多个分片的并行处理,可提升整个网络的吞吐量。
在包括分片的区块链***中,在一个分片中对交易的执行可能产生跨分片执行的子交易,在该情况中,该交易的执行及其子交易的执行需要满***易原子性,即二者必须同时成功或同时失败,不允许存在中间状态的执行结果。为了解决这一问题,在一种分片方案中通过引入一种2阶段客户端驱动的"锁/解锁"协议来保证区块中交易的原子性。在另一种分片方案中提出一种类似柔性事务的原子性概念,即在一段时间交易完全执行完成后体现交易的原子性特征。另外,在又一种分片方案中通过委员会协调员来进行即两阶段提交,由此解决区块链交易的原子性问题。
发明内容
本说明书实施例旨在提供一种更有效的执行区块的方案,以更高效地解决交易的原子性问题。
为实现上述目的,本说明书一个方面提供一种在区块链***中执行区块的方法,所述区块链***包括第一分片和第二分片,所述第一分片中包括第一节点,所述方法由所述第一节点执行,包括:
在执行第一区块的过程中,从所述第二分片接收第一信息,所述第一信息指示属于所述第一区块的n个交易中执行错误的第一交易,其中,所述第一信息由所述第二分片在对与所述第一交易对应的第一跨分片子交易执行失败之后发送,所述第一跨分片子交易为所述第二分片中属于第二区块的跨分片子交易;
重新执行所述n个交易中去除所述第一交易之后的多个交易。
本说明书另一方面提供一种在区块链***中执行区块的装置,所述区块链***包括第一分片和第二分片,所述第一分片中包括第一节点,所述装置部署于所述第一节点,包括:
接收单元,用于在执行第一区块的过程中,从所述第二分片接收第一信息,所述第一信息指示属于所述第一区块的n个交易中执行错误的第一交易,其中,所述第一信息由所述第二分片在对与所述第一交易对应的第一跨分片子交易执行失败之后发送,所述第一跨分片子交易为所述第二分片中属于第二区块的跨分片子交易;
重新执行单元,用于重新执行所述n个交易中去除所述第一交易之后的多个交易。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的区块执行方案,通过对错误交易进行状态回滚和区块回放,实现了高效的错误交易剔除,保证了区块执行过程中的交易原子性,另外,通过在各个分片的互信节点之间进行对错误交易信息的分片广播,提供了对错误交易信息的高效广播,提高了区块链***中的区块执行效率。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示出根据一个实施例的区块链***的架构图;
图2为本说明书实施例提供的区块链***中的多个分片执行区块的过程示意图;
图3为本说明书实施例提供的区块链***中的多个分片执行区块的另一过程示意图;
图4为本说明书实施例提供的在区块链***中执行区块的方法流程图;
图5示出根据本说明书实施例的一种在区块链***中执行区块的装置架构图。
具体实施方式
下面将结合附图描述本说明书实施例。
如前所述,分片技术旨在提升区块的吞吐量。具体而言,分片技术根据不同的分片机制可以划分为三种:网络分片(network sharding),交易分片(transaction sharding),状态分片(state sharding)。网络分片是最基础的一种分片方式,包括将整个区块链网络划分成多个子网络,也就是多个分片。这样,区块链网络中的多个分片可以并行处理网络中不同的交易。交易分片是将交易按某种规则分配到不同分片,从而达到并行处理的目的。交易分片的前提是先进行网络分片。状态分片的关键是将整个存储区分开,让不同的分片存储不同账户的状态,每个分片只负责存储归属于自己的一部分账户的世界状态,而不是存储区块链***的全部账户的世界状态。状态分片能够解决存储能力瓶颈问题。本说明书实施例提供的方案可应用于状态分片,可以理解,本说明书实施例的方案也可应用于其它类型的分片。
区块链网络被划分为多个分片后,涉及到跨分片业务的处理,因此就存在上述交易原子性问题。本说明书实施例提供一种执行区块的方案,其中通过分片广播使得在剔除区块错误交易之后重新执行区块,从而保证交易原子性。下文中,将以图1示出的根据本说明书实施例的区块链***作为示例,描述本说明书实施例提供的区块执行方案。
图1示出根据一个实施例的区块链***的架构图。如图1所示,区块链***可以包括分片1,分片2和分片3(图1中未示出),其中,不同分片的互信的多个节点可以形成一个集合,该集合中可包括分别属于3个分片的3个节点,所述节点可以实现为任何具有计算、处理能力的装置、服务器或设备集群等。其中,同一分片中的节点可以搭建一条区块链,具体例如,分片1中的节点1A、1B和1C可以搭建一条区块链1,分片2中的节点2A、2B和2C可以搭建一条区块链2,分片3中的节点3A、3B和3C可以搭建一条区块链3。每个分片内部的各参与方节点之间进行共识。例如,区块链***可以为联盟链***,该***中可以包括联盟方A,联盟方B,联盟方C和联盟方D,各个联盟方即为上述包括不同分片的互信的多个节点的集合。可以理解,图1仅是示例性的示出三个分片和四个联盟方,实际上区块链***中可以包括任意数目的分片和联盟方。下文中将以联盟链***为例进行描述,可以理解,本说明书实施例不限于应用于联盟链***,而可以应用于任意区块链***。
在图1所示的区块链***中,一个联盟方中包括的分别属于不同分片的多个节点例如可以通过联盟方的内网连接。当该***中的一个分片需要向另一个分片发送跨分片子交易时,可以在一个联盟方的该两个分片的节点中进行跨分片通信,从而可提供较快的通信速度。另外,由于一个联盟方包括的节点之间相互信任,该跨分片通信过程中不需要进行身份验证,从而可以进一步提高该***的处理效率。
可以理解,本说明书实施例提供的方案不限于用于图1所示的区块链***,而是可以应用与任何包括分片的区块链***中。
图2为本说明书实施例提供的区块链***中的多个分片执行区块的过程示意图。图2中以联盟方A中包括的各个节点代表各个分片为例进行描述,可以理解,图2所示的多个分片执行区块的过程不限于由一个联盟方中的多个节点执行,而可以由各个分片中的任意其他节点执行。
如图2所示,在对区块执行的过程中,节点1A~节点3A同时执行高度相同的各自所属的分片的区块。例如,节点1A执行高度为M的分片1的区块(即分片1区块M),同时,节点2A执行高度为M的分片2的区块(即分片2区块M),节点3A执行高度为M的分片3的区块(即分片3区块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各自在确定全部节点都结束对区块1的执行之后,才各自开始对区块2的执行,依此类推,节点1A~节点3A各自在确定全部节点都结束对区块2的执行之后,才各自开始对区块3的执行。因此,节点1A~节点3A(即不同分片)之间对区块的执行是同步的,各个节点在同一时间具有同样的区块高度。
可以理解,虽然在图2中示出节点1A~节点3A同时执行高度相同的各自所属的分片的区块,本说明书实施例不限于此,本说明书实施例也可以与其他用于保证交易原子性的技术相结合,在该其他用于保证交易原子性的技术中,不同的分片有可能执行不同高度的区块,也即,节点1A~节点3A有可能在同一时间执行不同高度的区块。
从上述描述可以看出,在本说明书实施例提供的包括多个分片的区块链***中,执行区块的过程包括以下顺序进行的多个步骤:各个分片基本同时通过共识确定属于同一高度的区块(例如区块M)的多个交易,各个分片分别执行各自的属于区块M的多个交易,执行来自其他分片的多个跨分片子交易,各个分片在确定各个分片都完成对跨分片子交易的执行、并且没有生成新的跨分片子交易之后,分别基于多个交易和多个跨分片子交易的执行结果对应的状态信息,更新世界状态,即存储与区块M对应的世界状态,生成区块M的区块体和区块头,并存储区块M。可以理解,在各个分片在执行属于区块M的多个交易的过程中都没有产生跨分片子交易的情况中,执行区块的过程将不包括上述执行跨分片子交易的过程。
具体是,如图2所示,以联盟方A中的各个节点执行区块M为例,在分片1、分片2和分片3分别通过共识确定属于各自的区块M的n个交易之后,节点1A、节点2A和节点3A分别开始执行对应分片的属于区块M的n个交易(如图2中标注“n”的矩形框所示,图2中,以同样的矩形框表示对交易或者跨分片子交易的执行过程),该对n个交易的执行过程可以视为在执行区块M过程中的第1轮交易执行过程。可以理解,图2中虽然示例示出节点1A、节点2A和节点3A在第1轮交易执行过程中分别执行属于分片1区块M、分片2区块M和分片3区块M的n个交易,本说明书实施例不限于此,分片1、分片2和分片3可分别设定属于分片1区块M、分片2区块M和分片3区块M的交易个数,该交易个数有可能是不等的。可以理解,分片1区块M表示分片1中高度为M的区块,分片2区块M表示分片2中高度为M的区块,以此类推,因此,分片1区块M、分片2区块M和分片3区块M表示不同的区块。
各个分片在执行完区块M的第1轮交易执行过程之后,分别产生了一个或多个跨分片子交易,并将这些跨分片子交易分别发送给对应的分片的节点。例如,节点1A在执行n个交易之后,产生了与分片2对应的一个或多个跨分片子交易,并将这些跨分片子交易发送给节点2A,产生了与分片3对应的一个或多个跨分片子交易,并将这写跨分片子交易发送给节点3A。节点2A和节点3A也类似地进行跨分片通信。最终,节点1A例如从节点2A和节点3A共接收q个跨分片子交易,并执行该q个跨分片子交易,节点2A例如从节点1A和节点3A共接收m个跨分片子交易,并执行该m个跨分片子交易,节点3A例如从节点1A和节点2A共接收p个跨分片子交易,并执行该p个跨分片子交易,如图2中所示,该执行过程可视为各个节点在执行区块M的过程中的第2轮交易执行过程。同时,各个节点在完成该第2轮交易执行过程,又可能产生新的跨分片子交易,并可将该新产生的跨分片子交易发送给对应的节点,以使得该节点开始新一轮的交易执行过程。
其中,所述跨分片子交易是在执行区块过程中产生的交易,具体是,可以是执行属于区块的多个交易的过程中产生的需要跨分片执行的子交易,或者可以是执行跨分片子交易的过程中产生的需要跨分片执行的子交易。该跨分片子交易例如包括操作指令,以指示在对应的分片中执行与该操作指令对应的操作。该子交易可以与交易具有相同的形式,即包括发送账户、接收账户、数据字段等。在该子交易在同一个联盟方包括的多个相互信任的节点之间发送的情况下,该多个节点之间不需要对子交易进行验证,因此,该子交易可以不包括数字签名。在该区块链***包括状态分片的情况中,该跨分片子交易用于查询或更改对应分片中的账户的状态(即世界状态),该跨分片子交易例如可通过调用对应分片中的合约来查询或更改对应分片中的账户的状态。在一种实施方式中,跨分片子交易中可包括对应的原始交易的哈希值。在另一种实施方式中,可在跨分片子交易中包括对应的执行轮次信息,该执行轮次信息例如可指示生成该跨分片子交易的交易执行过程的轮次。
也就是说,各个节点对区块的执行过程可包括多轮交易执行过程,其中,在一轮交易执行过程之后可包括跨分片通信过程,该跨分片通信过程可跨分片发送跨分片子交易,使得接收该跨分片子交易的节点进行下一轮的交易执行过程以执行该跨分片子交易,各个节点执行的所述多轮交易执行过程也是基本同步的。
图3为本说明书实施例提供的区块链***中的多个分片执行区块的另一过程示意图。如图3所示,假设节点1A在执行区块M的第i轮交易执行过程时对其中的某个子交易SubTx1执行失败,该子交易SubTx1中包括交易Tx1的哈希值,即,该子交易SubTx1与交易Tx1相对应,例如,该子交易SubTx1是节点2A在执行交易Tx1之后产生的与分片1对应的跨分片子交易。节点1A将通过分片广播将交易Tx1为错误交易的信息分别发送给节点2A和节点3A,从而使得节点1A、节点2A和节点3A进行区块回放,即对状态信息进行回滚,重新执行区块M。其中,节点2A将在属于区块M的多个交易中剔除交易Tx1之后重新执行属于区块M的多个交易,从而实现交易原子性。
其中,节点1A可能在多种情况下对跨分片的子交易SubTx1执行失败,例如,交易Tx1为转账交易,在一种情况下,分片1中没有SubTx1需要转入的账户,从而节点1A将确定对SubTx1执行失败;在另一种情况下,一些业务对每日交易额设置有上限,当节点1A确定在执行SubTx1时,对转入账户的交易额已经达到上限时,则节点1A可确定对SubTx1执行失败。该SubTx1例如调用了分片1中部署的智能合约,在该智能合约中设置了其它需要满足的条件,节点1A在执行SubTx1的过程中确定不满足任意预设的条件时则可以确定对SubTx1执行失败。
图4为本说明书实施例提供的在区块链***中执行区块的方法流程图,所述方法由包括分片的区块链***执行,包括以下步骤:
步骤S401,区块链***的一分片在执行区块的过程中从其他分片接收到错误交易信息;步骤S403,所述分片重新执行所述区块的去除错误交易之后的多个交易。下文中将结合图3描述图4所示方法。
首先,在步骤S401,区块链***的一分片在执行区块的过程中从其他分片接收到错误交易信息。
参考图3,节点1A可以在执行区块M的第i轮交易执行过程中在确定子交易SubTx1执行失败之后,立即进行分片广播,也可以在执行完第i轮交易执行过程之后,再进行分片广播,在后一种情况中,节点1A可能确定了多个错误交易(其中包括交易Tx1),并对多个错误交易的信息进行分片广播,从而可以实现对错误交易的更高效的剔除。
节点1A在进行分片广播时可以广播包括错误交易信息的数据包。在一种实施方式中,该数据包中例如至少包括各个错误交易的哈希值。在另一种实施方式中,该数据包例如可包括如表1所示的字段及其字段值。
表1
字段 字段值
BlockNum(区块高度) M
ErrorCount(错误交易数量) 1
ErrorTx[](错误交易的哈希值数组) 0x1756…
PacketID(交易执行过程轮次) i
FromShard(起始分片) 分片1
ToShard(目标分片)
其中,在数据包中包括BlockNum字段用于表明该数据包对应的区块的高度。在由于网络延迟导致分片延迟接收数据包的情况中,通过在数据包中包括区块高度,可以对时间靠前的区块的错误交易先进行处理。另外,由于在不同加密方式下,尤其在交易不带有nonce值的情况中,交易哈希值可能相同,因此,在广播错误交易哈希值时,可通过区块高度进行区分。
在数据包中包括ErrorCount字段用于表示该数据包中的错误交易数量,从而在对该数据包进行压缩处理时,通过设置哈希值数组的元素长度为定长,不需要在各个错误交易哈希值之间使用分隔符处理,并且可加速解压缩处理。
ErrorTx[]字段为错误交易的哈希值数组,其数组元素长度由特定的哈希值算法确定,通常可取256位。
PacketID字段指示该数据包对应的交易执行过程的轮次。在分片环境的分布式广播下,由于网络延迟等因素,消息到达的顺序可能是乱序的,从而通过在数据包中包括交易执行过程的轮次,以保证执行的一致性。例如,假设节点2A同时从节点1A接收到对应于第i轮次的数据包,并从节点3A接收到对应于第i+1轮次的数据包,则节点2A根据轮次信息,可基于第i轮次的数据包进行区块回放。
FromShard字段表示该数据包的起始分片,即发送该数据包的分片,在高安全性的业务场景下,该字段的字段值可以为发送该数据包的分片的节点对该数据包的数字签名。
ToShard字段表示该数据包的目标分片,即该数据包将要广播到的分片。该字段字段值留空可表示目标分片为除起始分片(即分片1)之外的全部分片。
可以理解,所述数据包的内容不限于如表1所示的内容,区块链***中可以根据需要设置分片广播的数据包中包括的字段。
其中,为了最简化跨分片通信的成本,在跨分片子交易中通常仅包括原始交易的哈希值,而未包括原始交易的来源分片,因此,节点1A在对跨分片子交易(例如SubTx1)执行失败之后,不能获知对应的错误交易的来源分片,因此也就不能确定错误交易的目标分片。在该情况下,节点1A可对ToShard字段留空,以将数据包分别发送给节点2A和节点3A,节点2A和节点3A可分别基于本地记录的所属分片的区块M中包括的交易的哈希值,确定交易包中各个错误交易是否为所属分片的区块M中的交易。
例如区块链***的分片2的节点2A(即分片2)在执行区块M的过程中从节点1A(即从分片1)接收到广播的数据包,该数据包中包括交易Tx1的哈希值,以指示交易Tx1为错误交易。从而节点2A可基于本地记录的属于分片2区块M的多个交易的哈希值,确定交易Tx1为属于分片2区块M的多个交易的一个交易。在进行上述确定之后,节点2A可中止本地的对区块M的执行,或者可在完成第i轮交易执行过程之后中止对区块M的执行,在中止对区块M的执行之后将该从节点1A接收的数据包缓存起来,并进行等待,以确定节点3A是否发送包括错误交易信息的数据包。
节点3A在从节点1A接收到同样的数据包之后,可确定交易Tx1不是属于分片3区块M的多个交易中的交易,并可在完成第i轮交易执行过程之后,确定是否存在子交易执行失败的情况。其中,在确定存在子交易执行失败的情况,则与节点1A类似地,对节点1A和节点2A分别发送包括错误交易信息的数据包,在确定不存在子交易执行失败的情况中,也可以分别通知节点1A和节点2A。
在步骤S403,所述分片重新执行所述区块的去除错误交易之后的多个交易。
下文中将以分片2的节点2A为例进行描述,可以理解,分片2中的其他节点、以及其他分片对该步骤的执行都可以参考对分片2的节点2A执行该步骤的过程描述。
参考图3,节点2A在从节点1A接收到上述数据包之后就进行区块回放的操作,或者节点2A可以在从节点1A和节点2A都接收到包括错误交易信息的数据包之后进行区块回放的操作,或者节点2A可在从节点1A接收到数据包,且从节点2A接收到未出现错误交易的信息之后进行区块回放的操作。后两种情况可以使得在发现尽可能多的错误交易之后再进行区块回放,提供了对错误交易的更高效的剔除。
在开始区块回放之后,首先,节点2A执行第1′轮交易执行过程,即,将状态回滚到分片2区块M-1对应的世界状态,基于分片2区块M-1对应的世界状态,执行在剔除错误交易之后的属于分片2区块M的多个交易。例如,节点2A从节点1A和节点3A都接收的包括错误交易信息的数据包,其中,该两个数据包可都包括第i轮轮次信息,节点2A根据该两个数据包确定共有与分片2区块M对应的k个错误交易,则节点2A从初始的属于分片2区块M的n个交易中剔除该k个交易,并在第1′轮交易执行过程中重新执行经剔除之后的n-k个交易。其中,在执行该n-k个交易时,由于已经在前述第1轮交易执行过程中对该n-k个交易进行了数字签名的验证,因此,在该重新执行时,不需要再次对该n-k个交易进行数字签名的验证。
如图3所示,在该第1′轮交易执行过程中,如果节点1A和/或节点3A未从其他分片接收到错误交易信息,则节点1A和/或节点3A不需要重新执行相应分片区块M的多个交易,但是在第1′轮交易执行过程中,由于其从节点2A接收到新的跨分片子交易,因此需要基于原先的第1轮交易执行过程对应的状态信息重新执行第2′轮交易执行过程。其中,第1轮交易执行过程对应的状态信息包括对第1轮交易执行过程中写入变量的值的记录。如果节点1A和/或节点3A也从其他分片接收到错误交易信息,则其执行与节点2A相同的过程。
在区块回放之后的第2′轮交易执行过程中,如图3所示,如果节点1A和节点3A都未重新执行属于相应分片区块M的多个交易,因此,节点2A在第2′轮交易执行过程需要执行的跨分片子交易未发生变化,因此,节点2A在第2′轮交易执行过程也不需要重新执行。
通过上述区块回放过程,在剔除错误交易之后重新执行区块,从而在执行区块的过程中保证了交易原子性。在该区块回放之后,如果再次出现跨分片子交易执行失败的情况,可再次进行区块回放,直到将区块包括的全部错误交易都剔除出去。
可以理解,上文中虽然示出了各个分片在区块M的某轮交易执行过程中发现错误交易之后就进行区块回放,本说明书实施例不限于此,例如,各个分片可以在某轮交易执行过程中发现错误交易之后,可缓存该错误交易信息,并在执行完区块M之后,再将包括错误交易的信息的数据包发送给其它分片,以进行区块回放。
图5示出根据本说明书实施例的一种在区块链***中执行区块的装置的架构图,该装置用于执行图4所示的区块执行方法,所述区块链***包括第一分片和第二分片,所述第一分片中包括第一节点,所述装置部署于所述第一节点,包括:
接收单元51,用于在执行第一区块的过程中,从所述第二分片接收第一信息,所述第一信息指示属于所述第一区块的n个交易中执行错误的第一交易,其中,所述第一信息由所述第二分片在对与所述第一交易对应的第一跨分片子交易执行失败之后发送,所述第一跨分片子交易为所述第二分片中属于第二区块的跨分片子交易;
重新执行单元52,用于重新执行所述n个交易中去除所述第一交易之后的多个交易。
在一种实施方式中,所述第一节点与所述第二分片中的第二节点互为信任节点,所述第一节点从所述第二分片接收第一信息包括,所述第一节点从所述第二节点接收第一信息。
在一种实施方式中,所述区块链***包括联盟链***,所述第一节点和所述第二节点属于相同的联盟成员。
在一种实施方式中,第一跨分片子交易中包括所述第一交易的标识。
在一种实施方式中,所述装置还包括:生成单元53,用于在重新执行属于所述第一区块的多个交易之后,生成与所述第二分片对应的多个第二跨分片子交易,将所述多个第二跨分片子交易发送给所述第二分片,以使得所述第二分片基于第一状态信息执行所述多个第二跨分片子交易,所述第一状态信息由所述第二分片通过执行属于所述第二区块的多个交易所生成。
在一种实施方式中,所述区块链***包括多个第二分片,所述重新执行单元具体用于,在确定从全部所述第二分片都接收到第一信息之后,重新执行所述n个交易中去除所述全部所述第一信息中包括的第一交易之后的多个交易。
在一种实施方式中,所述多个第一信息包括相同的轮次信息,所述轮次信息指示所述第一跨分片子交易对应的第二区块的执行过程中包括的交易执行过程的轮次。
在一种实施方式中,所述第一跨分片子交易为所述第二分片中属于第二区块的第一轮次的交易执行过程中的跨分片子交易,所述第一信息由所述第二分片在完成所述第一轮次的交易执行过程之后发送。
在一种实施方式中,所述重新执行单元具体用于,基于所述第一区块的前一个区块的世界状态,重新执行所述n个交易中去除所述第一交易之后的多个交易。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的区块执行方案,通过对错误交易进行状态回滚和区块回放,实现了高效的错误交易剔除,保证了区块执行过程中的交易原子性,另外,通过在各个分片的互信节点之间进行对错误交易信息的分片广播,提供了对错误交易信息的高效广播,提高了区块链***中的区块执行效率。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (21)

1.一种在区块链***中执行区块的方法,所述区块链***包括第一分片和第二分片,所述第一分片中包括第一节点,所述方法由所述第一节点执行,包括:
在执行第一区块的过程中,从所述第二分片接收第一信息,所述第一信息指示属于所述第一区块的n个交易中执行错误的第一交易,其中,所述第一信息由所述第二分片在对与所述第一交易对应的第一跨分片子交易执行失败之后发送,所述第一跨分片子交易为所述第二分片中属于第二区块的跨分片子交易;
重新执行所述n个交易中去除所述第一交易之后的多个交易。
2.根据权利要求1所述的方法,其中,所述第一节点与所述第二分片中的第二节点互为信任节点,所述第一节点从所述第二分片接收第一信息包括,所述第一节点从所述第二节点接收第一信息。
3.根据权利要求2所述的方法,其中,所述区块链***包括联盟链***,所述第一节点和所述第二节点属于相同的联盟成员。
4.根据权利要求1或2所述的方法,其中,第一跨分片子交易中包括所述第一交易的标识。
5.根据权利要求1或2所述的方法,还包括:
在重新执行属于所述第一区块的多个交易之后,生成与所述第二分片对应的多个第二跨分片子交易,将所述多个第二跨分片子交易发送给所述第二分片,以使得所述第二分片基于第一状态信息执行所述多个第二跨分片子交易,所述第一状态信息由所述第二分片通过执行属于所述第二区块的多个交易所生成。
6.根据权利要求1或2所述的方法,所述区块链***包括多个第二分片,所述重新执行所述n个交易中去除所述第一交易之后的多个交易包括,在确定从全部所述第二分片都接收到第一信息之后,重新执行所述n个交易中去除所述全部所述第一信息中包括的第一交易之后的多个交易。
7.根据权利要求6所述的方法,其中,多个第一信息包括相同的轮次信息,所述轮次信息指示所述第一跨分片子交易对应的第二区块的执行过程中包括的交易执行过程的轮次。
8.根据权利要求1或2所述的方法,其中,所述第一跨分片子交易为所述第二分片中在第二区块的第一轮次的交易执行过程中执行的跨分片子交易,所述第一信息由所述第二分片在完成所述第一轮次的交易执行过程之后发送。
9.根据权利要求1或2所述的方法,其中,重新执行所述n个交易中去除所述第一交易之后的多个交易包括,基于所述第一区块的前一个区块的世界状态,重新执行所述n个交易中去除所述第一交易之后的多个交易。
10.根据权利要求1所述的方法,其中,所述重新执行所述n个交易中去除所述第一交易之后的多个交易的过程不包括对交易数字签名的验证过程。
11.一种在区块链***中执行区块的装置,所述区块链***包括第一分片和第二分片,所述第一分片中包括第一节点,所述装置部署于所述第一节点,包括:
接收单元,用于在执行第一区块的过程中,从所述第二分片接收第一信息,所述第一信息指示属于所述第一区块的n个交易中执行错误的第一交易,其中,所述第一信息由所述第二分片在对与所述第一交易对应的第一跨分片子交易执行失败之后发送,所述第一跨分片子交易为所述第二分片中属于第二区块的跨分片子交易;
重新执行单元,用于重新执行所述n个交易中去除所述第一交易之后的多个交易。
12.根据权利要求11所述的装置,其中,所述第一节点与所述第二分片中的第二节点互为信任节点,所述第一节点从所述第二分片接收第一信息包括,所述第一节点从所述第二节点接收第一信息。
13.根据权利要求12所述的装置,其中,所述区块链***包括联盟链***,所述第一节点和所述第二节点属于相同的联盟成员。
14.根据权利要求11或12所述的装置,其中,第一跨分片子交易中包括所述第一交易的标识。
15.根据权利要求11或12所述的装置,还包括:
生成单元,用于在重新执行属于所述第一区块的多个交易之后,生成与所述第二分片对应的多个第二跨分片子交易,将所述多个第二跨分片子交易发送给所述第二分片,以使得所述第二分片基于第一状态信息执行所述多个第二跨分片子交易,所述第一状态信息由所述第二分片通过执行属于所述第二区块的多个交易所生成。
16.根据权利要求11或12所述的装置,所述区块链***包括多个第二分片,所述重新执行单元具体用于,在确定从全部所述第二分片都接收到第一信息之后,重新执行所述n个交易中去除所述全部所述第一信息中包括的第一交易之后的多个交易。
17.根据权利要求16所述的装置,其中,多个第一信息包括相同的轮次信息,所述轮次信息指示所述第一跨分片子交易对应的第二区块的执行过程中包括的交易执行过程的轮次。
18.根据权利要求11或12所述的装置,其中,所述第一跨分片子交易为所述第二分片中在第二区块的第一轮次的交易执行过程中执行的跨分片子交易,所述第一信息由所述第二分片在完成所述第一轮次的交易执行过程之后发送。
19.根据权利要求11或12所述的装置,其中,所述重新执行单元具体用于,基于所述第一区块的前一个区块的世界状态,重新执行所述n个交易中去除所述第一交易之后的多个交易。
20.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-10中任一项的所述的方法。
21.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-10中任一项所述的方法。
CN202110419704.2A 2021-04-19 2021-04-19 在区块链***中执行区块的方法及装置 Active CN113064764B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110419704.2A CN113064764B (zh) 2021-04-19 2021-04-19 在区块链***中执行区块的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110419704.2A CN113064764B (zh) 2021-04-19 2021-04-19 在区块链***中执行区块的方法及装置

Publications (2)

Publication Number Publication Date
CN113064764A CN113064764A (zh) 2021-07-02
CN113064764B true CN113064764B (zh) 2023-10-27

Family

ID=76567013

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110419704.2A Active CN113064764B (zh) 2021-04-19 2021-04-19 在区块链***中执行区块的方法及装置

Country Status (1)

Country Link
CN (1) CN113064764B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254171B (zh) * 2021-06-17 2021-11-09 支付宝(杭州)信息技术有限公司 退出跨片事务的方法、区块链***和主链节点
CN113468200B (zh) * 2021-09-01 2021-12-21 支付宝(杭州)信息技术有限公司 对区块链***中的分片进行扩容的方法及装置
CN114090376A (zh) * 2021-11-09 2022-02-25 ***股份有限公司 一种基于联盟链***的业务处理方法及装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325762A (zh) * 2018-08-30 2019-02-12 杭州复杂美科技有限公司 平行链跨链交易方法、设备和存储介质
KR20190142649A (ko) * 2018-06-18 2019-12-27 주식회사 비즈모델라인 Pos 기반 블록체인을 이용한 정보 거래 방법
CN110808838A (zh) * 2019-10-24 2020-02-18 华东师范大学 一种面向联盟链的分片方法
CN111046437A (zh) * 2019-10-31 2020-04-21 中国科学院计算技术研究所 基于同构多链的区块链并行事务处理方法及***、终端
CN111047445A (zh) * 2019-12-11 2020-04-21 深圳区块大陆科技有限公司 一种完全去中心化的侧链跨链方法
CN111680050A (zh) * 2020-05-25 2020-09-18 杭州趣链科技有限公司 一种联盟链数据的分片处理方法、设备和存储介质
CN112261162A (zh) * 2020-12-21 2021-01-22 支付宝(杭州)信息技术有限公司 执行跨片事务的方法及***、主链节点和目标分片节点
CN112287029A (zh) * 2020-11-17 2021-01-29 北京物资学院 一种区块链多链跨链***及其实现机制
CN112435123A (zh) * 2020-11-25 2021-03-02 国网能源研究院有限公司 一种基于同构多链***的交易方法、***及存储介质
CN112579261A (zh) * 2020-12-21 2021-03-30 支付宝(杭州)信息技术有限公司 退出跨片事务的方法和***、主链节点和目标分片节点
CN112667647A (zh) * 2020-12-11 2021-04-16 深圳前海微众银行股份有限公司 一种区块链的交易数据传输方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11018850B2 (en) * 2017-12-26 2021-05-25 Akamai Technologies, Inc. Concurrent transaction processing in a high performance distributed system of record
US11228439B2 (en) * 2019-01-02 2022-01-18 Jiaping Wang Scale out blockchain with asynchronized consensus zones

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190142649A (ko) * 2018-06-18 2019-12-27 주식회사 비즈모델라인 Pos 기반 블록체인을 이용한 정보 거래 방법
CN109325762A (zh) * 2018-08-30 2019-02-12 杭州复杂美科技有限公司 平行链跨链交易方法、设备和存储介质
CN110808838A (zh) * 2019-10-24 2020-02-18 华东师范大学 一种面向联盟链的分片方法
CN111046437A (zh) * 2019-10-31 2020-04-21 中国科学院计算技术研究所 基于同构多链的区块链并行事务处理方法及***、终端
CN111047445A (zh) * 2019-12-11 2020-04-21 深圳区块大陆科技有限公司 一种完全去中心化的侧链跨链方法
CN111680050A (zh) * 2020-05-25 2020-09-18 杭州趣链科技有限公司 一种联盟链数据的分片处理方法、设备和存储介质
CN112287029A (zh) * 2020-11-17 2021-01-29 北京物资学院 一种区块链多链跨链***及其实现机制
CN112435123A (zh) * 2020-11-25 2021-03-02 国网能源研究院有限公司 一种基于同构多链***的交易方法、***及存储介质
CN112667647A (zh) * 2020-12-11 2021-04-16 深圳前海微众银行股份有限公司 一种区块链的交易数据传输方法及装置
CN112261162A (zh) * 2020-12-21 2021-01-22 支付宝(杭州)信息技术有限公司 执行跨片事务的方法及***、主链节点和目标分片节点
CN112579261A (zh) * 2020-12-21 2021-03-30 支付宝(杭州)信息技术有限公司 退出跨片事务的方法和***、主链节点和目标分片节点

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
5G+区块链网络分片技术;刘秋妍;张忠皓;李福昌;冯毅;李佳俊;;移动通信(第04期);全文 *
区块链技术在公共资源交易领域的应用研究;周业军;王丛虎;高友富;潘辉;;中国招标(第07期);全文 *
高性能联盟区块链技术研究;朱立;俞欢;詹士潇;邱炜伟;李启雷;;软件学报(第06期);全文 *

Also Published As

Publication number Publication date
CN113064764A (zh) 2021-07-02

Similar Documents

Publication Publication Date Title
CN113064764B (zh) 在区块链***中执行区块的方法及装置
CN110730204B (zh) 区块链网络中删除节点的方法和区块链***
US20230259430A1 (en) Byzantine agreement using communications having linear complexity
JP7154234B2 (ja) ブロックチェーン・ネットワークにおける高速伝搬のための方法及び特殊ネットワーク・ノード
CN109189751B (zh) 基于区块链的数据同步方法及终端设备
US7801997B2 (en) Asynchronous interconnect protocol for a clustered DBMS
Duan et al. FIN: practical signature-free asynchronous common subset in constant time
US20230019637A1 (en) Multi-shard transactions in a byzantine computing environment
CN115098229A (zh) 事务处理方法、装置、节点设备及存储介质
Arun et al. ezbft: Decentralizing byzantine fault-tolerant state machine replication
CN113807851B (zh) 一种基于分片的区块链可扩展性实现方法及***
CN113157450B (zh) 在区块链***中执行区块的方法及装置
CN112612855B (zh) 高可用数据库日志接收队列、同步方法及装置
CN113254526A (zh) 区块链共识方法、装置及***
Kishi et al. SSS: scalable key-value store with external consistent and abort-free read-only transactions
CN113064768B (zh) 在区块链***中切换分片节点的方法和装置
CN114499874B (zh) 一种应用于工业互联网的拜占庭容错共识优化方法
CN113268382B (zh) 在区块链***中切换分片节点的方法及装置
CN114119242B (zh) 基于自适应窗口分片的联盟链性能优化方法及装置
CN116977067A (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN115426125A (zh) 一种用于区块链分片***的区块有效性验证方法
CN113157494B (zh) 区块链***中数据备份的方法及装置
Ozdayi et al. Instachain: Breaking the sharding limits via adjustable quorums
Jiménez-Peris et al. A low-latency non-blocking commit service
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