CN112884586B - 交易执行方法和区块链节点 - Google Patents

交易执行方法和区块链节点 Download PDF

Info

Publication number
CN112884586B
CN112884586B CN202110465890.3A CN202110465890A CN112884586B CN 112884586 B CN112884586 B CN 112884586B CN 202110465890 A CN202110465890 A CN 202110465890A CN 112884586 B CN112884586 B CN 112884586B
Authority
CN
China
Prior art keywords
transaction
transactions
balance
hotspot account
account
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
CN202110465890.3A
Other languages
English (en)
Other versions
CN112884586A (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 CN202110465890.3A priority Critical patent/CN112884586B/zh
Publication of CN112884586A publication Critical patent/CN112884586A/zh
Application granted granted Critical
Publication of CN112884586B publication Critical patent/CN112884586B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Theoretical Computer Science (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Computer Security & Cryptography (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本说明书实施例提供了一种交易执行方法和区块链节点,所述方法包括:获取待执行的多个交易,所述多个交易具有预定的执行顺序;按照所述多个交易的执行顺序依次将所述多个交易中的每个交易分组到第一集合或第二集合中,其中,所述第一集合中的交易为不会导致热点账户的余额不足的交易;并行执行所述第一集合中的交易;在执行完成所述第一集合中的全部交易之后,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额;基于所述更新的热点账户的余额,串行执行所述第二集合中的交易。

Description

交易执行方法和区块链节点
技术领域
本说明书实施例涉及区块链技术领域,更具体地,涉及一种交易执行方法和区块链节点。
背景技术
为了在区块链加快交易执行速度,可并行执行相互没有读写依赖关系的多个交易。但在有些场景下,多个交易会更新同一数据(此时该数据被称作热点数据)。比如对于文娱链而言,某部电影的发行方账户为热点账户,交易的执行将导致从发行方账户转移预定账户资源到交易指定的账户,此时,涉及到此部电影的所有交易都会修改发行方账户的余额,即,这些交易都具有读写依赖关系,从而,现有的区块链平台(或区块链节点)无法通过多机/多处理器来并行执行这些交易以提升交易处理性能。在一种相关技术中,将热点账户拆分为多个子热点账户,不同的交易从不同的子热点账户中进行转账,从而将热点账户分散化,在一定程度提升并行能力。
发明内容
本说明书实施例旨在提供一种更有效的交易执行方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种交易执行方法,包括:
获取待执行的多个交易,所述多个交易具有预定的执行顺序;
按照所述多个交易的执行顺序依次将所述多个交易中的每个交易分组到第一集合或第二集合中,其中,所述第一集合中的交易为不会导致热点账户的余额不足的交易;
并行执行所述第一集合中的交易;
在执行完成所述第一集合中的全部交易之后,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额;
基于所述更新的热点账户的余额,串行执行所述第二集合中的交易。
在一种实施方式中,并行执行所述第一集合中的交易包括,在执行第一集合中的每个用于更改所述热点账户的余额的交易时,记录该交易对所述热点账户的余额的更改量,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额包括,基于所述记录的对所述热点账户余额的更改量,更新所述热点账户的余额。
在一种实施方式中,按照所述多个交易的执行顺序依次将所述多个交易中的每个交易分组到第一集合或第二集合中包括:
对于所述多个交易中的每个交易,确定该交易是否为对热点账户的转账交易;在确定不是对热点账户的转账交易的情况中,将该交易放入所述第一集合;在确定该交易为对热点账户的转账交易的情况中,确定该交易是否不会导致热点账户的余额不足;在确定为是的情况中,将该交易放入所述第一集合,在确定为否的情况中,将该交易放入所述第二集合。
在一种实施方式中,在确定该交易为对热点账户的转账交易的情况中,确定该交易是否不会导致热点账户的余额不足包括,在确定该交易为对热点账户的转账交易的情况中,基于该交易调用的第一合约中包括的与所述热点账户相关的描述信息确定该交易对所述热点账户的最大更改量,基于所述最大更改量的确定该交易是否不会导致热点账户的余额不足。
在一种实施方式中,所述第一集合中包括用于更改所述热点账户的余额的第一交易,所述并行执行第一集合中的各个交易包括,执行所述第一交易中调用的第一合约,使得记录该第一交易对所述热点账户的余额的更改量。
在一种实施方式中,并行执行所述第一集合中的交易具体包括,基于所述第一集合中各个交易访问的除所述热点账户之外的变量,对所述第一集合中的交易分组为多个交易组,基于所述多个交易组并行执行所述第一集合中的交易。
在一种实施方式中,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额包括,基于所述第一集合中的交易对所述热点账户余额的更改量之和,更新所述热点账户的余额。
本说明书另一方面提供一种交易执行装置,包括:
获取单元,用于获取待执行的多个交易,所述多个交易具有预定的执行顺序;
分组单元,用于按照所述多个交易的执行顺序依次将所述多个交易中的每个交易分组到第一集合或第二集合中,其中,所述第一集合中的交易为不会导致热点账户的余额不足的交易;
并行执行单元,用于并行执行所述第一集合中的交易;
更新单元,用于在执行完成所述第一集合中的全部交易之后,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额;
串行执行单元,用于基于所述更新的热点账户的余额,串行执行所述第二集合中的交易。
在一种实施方式中,所述并行执行单元具体用于,在执行第一集合中的每个用于更改所述热点账户的余额的交易时,记录该交易对所述热点账户的余额的更改量,所述更新单元具体用于,基于所述记录的对所述热点账户余额的更改量,更新所述热点账户的余额。
在一种实施方式中,所述分组单元具体用于:
对于所述多个交易中的每个交易,确定该交易是否为对热点账户的转账交易;在确定不是对热点账户的转账交易的情况中,将该交易放入所述第一集合;在确定该交易为对热点账户的转账交易的情况中,确定该交易是否不会导致热点账户的余额不足;在确定为是的情况中,将该交易放入所述第一集合,在确定为否的情况中,将该交易放入所述第二集合。
在一种实施方式中,所述分组单元具体用于,在确定该交易为对热点账户的转账交易的情况中,基于该交易调用的第一合约中包括的与所述热点账户相关的描述信息确定该交易对所述热点账户的最大更改量,基于所述最大更改量的确定该交易是否不会导致热点账户的余额不足。
在一种实施方式中,所述第一集合中包括用于更改所述热点账户的余额的第一交易,所述并行执行单元具体用于,执行所述第一交易中调用的第一合约,使得记录该第一交易对所述热点账户的余额的更改量。
在一种实施方式中,所述并行执行具体用于,基于所述第一集合中各个交易访问的除所述热点账户之外的变量,对所述第一集合中的交易分组为多个交易组,基于所述多个交易组并行执行所述第一集合中的交易。
在一种实施方式中,所述更新单元具体用于,基于所述第一集合中的交易对所述热点账户余额的更改量之和,更新所述热点账户的余额。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的交易执行方案,通过将多个交易分组到第一集合和第二集合中,使得可以在并行执行第一集合中的交易的同时保证交易执行的正确性,提高了区块链的交易处理效率。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1为一种区块链系统的架构图;
图2示出根据本说明书实施例的一种交易执行方法的流程图;
图3为本说明书实施例中对交易进行分组的过程示意图;
图4示出根据本说明书实施例的一种区块链节点。
具体实施方式
下面将结合附图描述本说明书实施例。
图1为一种区块链系统的架构图。在图1示出的架构图中,示例性地示出6个区块链节点,可以理解,实际上区块链中可以包括任意数目的区块链节点。在区块链中可通过共识确定一个记账节点(可以是区块链节点中的任意一个),记账节点可以确定属于将要生成的区块的多个交易以及该多个交易的执行顺序,并将该确定结果发送给区块链中的每个节点(或者全节点)。如图1所示,假设记账节点确定将要生成的区块m中包括顺序排列的交易Tx1、交易Tx2等多个交易。该区块链例如为上文所述的文娱链,交易Tx1和交易Tx2都是涉及相同文娱对象(例如电影)的交易,其都通过调用与该文娱对象对应的合约Contract1,从而用于从该文娱对象对应的热点账户HotAddr1向交易发送账户转移预定金额的资源。其中,在交易Tx1和交易Tx2的数据字段中都调用合约Contract1中的函数Update(HotAddr1,delta)以用于从热点账户HotAddr1中转出的资源。
在相关技术中,由于交易Tx1和交易Tx2涉及对相同账户的余额的修改,因此,当在执行属于区块m的多个交易时,只能在执行交易Tx1之后再串行执行交易Tx2,以防止出现错误的执行结果。也就说说,在该情况中不能并行执行交易Tx1和交易Tx2。
在本说明书实施例中,如图1中所示,在各个区块链节点中都预先部署有合约Contact1,合约Contract1中例如包括函数DeclareHotData(HotAddr1,max_delta)和函数Update(HotAddr1,delta)。函数DeclareHotData(HotAddr1,max_delta)中例如包括描述性信息,以用于确定交易可能从账户HotAddr1转出的最大金额max_delta,区块链节点在接收到待执行的交易Tx1之后,可预先执行函数DeclareHotData(HotAddr1,max_delta),确定交易Tx1可能从账户HotAddr1转出的最大金额max_delta1,并基于账户HotAddr1的当前余额和max_delta1确定交易Tx1是否可能导致账户HotAddr1余额不足,从而基于该确定结果将交易Tx1分组到第一集合或第二集合中,其中,在第一集合中包括不会导致热点账户余额不足的交易,在第二集合中包括所述多个交易中的剩余交易。区块链节点可通过与上述相同的方法将交易Tx2分组到第一集合或第二集合中。在对一批交易都进行上述处理之后,区块链节点可并行执行第一集合中的多个交易,从而提高了区块链的交易处理效率。
可以理解,图1所示内容仅仅是示例性的,而不用于限制本说明书实施例的范围,例如,区块链节点将要执行的交易不限于具有交易Tx1和交易Tx2的形式,在区块链中可部署有与多个热点账户分别相关的多个合约,或者,所述合约Contract1可与多个热点账户相关,等等。下文将详细描述本说明书实施例提供的交易执行方案。
图2示出根据本说明书实施例的一种交易执行方法的流程图,该方法由区块链中的任一节点执行,包括:
步骤S202,获取待执行的多个交易,所述多个交易具有预定的执行顺序;
步骤S204,按照所述多个交易的执行顺序依次将所述多个交易中的每个交易分组到第一集合或第二集合中,其中,所述第一集合中的交易为不会导致热点账户的余额不足的交易;
步骤S206,并行执行所述第一集合中的交易;
步骤S208,在执行完成所述第一集合中的全部交易之后,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额;
步骤S210,基于所述更新的热点账户的余额,串行执行所述第二集合中的交易。
首先,在步骤S202,获取待执行的多个交易,所述多个交易具有预定的执行顺序。
在一种实施方式中,区块链中的记账节点在确定属于区块m的多个交易及该多个交易的执行顺序之后,可将该多个交易及该多个交易的执行顺序发送给区块链中的各个节点,从而区块链中的各个节点可基于该多个交易的执行顺序开始执行属于区块m的多个交易。在另一种实施方式中,区块链中的记账节点在确定属于区块m的多个交易及该多个交易的执行顺序之后,将该多个交易的标识及该多个交易的执行顺序发送给区块链中的各个节点,各个节点基于该多个交易的标识从本地的交易池中获取所述多个交易,并可以开始基于所述多个交易的执行顺序执行该多个交易。
步骤S204,按照所述多个交易的执行顺序依次将所述多个交易中的每个交易分组到第一集合或第二集合中,其中,所述第一集合中的交易为不会导致热点账户的余额不足的交易。
图3为本说明书实施例中对交易进行分组的过程示意图。可以理解,图3所示过程只是本说明书实施例中执行步骤S204的一种示例方式,步骤S204也可以通过其他方式实施,而不限于如图3所示的过程。
如图3所示,在步骤S2041,对于多个交易中的每个交易,获取该交易的访问的账户。
这里可以是获取交易进行转账涉及的转出金额的账户和转入金额的账户。进一步地,可仅获取交易的转出金额的账户。所述多个交易中可包括由热点账户发送的向其他账户转账的交易,对于该种类型的交易,区块链节点在获取该交易之后可从该交易的发送字段获取该交易中将转出金额的账户。所述多个交易中可包括通过调用合约(例如上述合约Contract1)使得从热点账户向交易发送账户转移金额的交易。在一种实施方式中,例如,交易中调用合约Contract1中的函数Update,则区块链节点可通过读取合约Contract1的函数Update的入参(如HotAddr1)或代码,来确定转出金额的账户。
但是在一些业务中,从交易调用的合约的函数中可能不能直接确定交易中的将转出金额的账户。在本说明书实施例中,在Contract1的代码中增加该合约的描述信息,即图1中的函数DeclareHotData(HotAddr1,max_delta),该函数DeclareHotData显式地声明函数Update中将转出金额的热点账户(例如HotAddr1),从而区块链节点在确定交易中调用了Contract1中的函数Update之后,可从状态数据库中读取Contract1的代码,并可从Contract1的代码中包括的函数DeclareHotDatad的代码获取交易中转出金额的账户HotAddr1。
在步骤S2042,确定上述确定的账户中是否包含热点账户。
在一种实施方式中,区块链节点可基于接收的交易统计各个账户的访问频次,从而确定热点账户,并在热点账户列表中记录该热点账户。区块链节点从而可基于本地记录的热点账户列表来确定上述确定的账户中是否包含热点账户。在另一种实施方式中,所述多个交易通过调用合约来进行从热点账户的转账,所述合约例如包括上述合约Contract1,区块链节点从而可基于交易调用的合约中的合约描述信息来确定上述确定的账户中是否包含热点账户。如果交易中转出金额的账户不是热点账户,从而该交易的执行肯定不会导致热点账户的余额不足,因此可以执行步骤S2043,将该交易放入第一集合。
如果交易中转出金额的账户是热点账户,则执行步骤S2044,确定热点账户是否可能余额不足,即,确定热点账户是否不会余额不足。
在一种实施方式中,在执行交易之前仅基于交易调用的合约的代码无法确定从热点账户转出的金额是多少,针对该问题,在本说明书实施例中,在函数DeclareHotData中显式地说明调用合约Contract1的交易对热点账户的最大转出额。该最大转出额是交易可能转出的最大金额,并且该最大转出额大于等于交易执行时实际从热点账户的转出金额。合约开发者可根据具体的业务逻辑确定交易对热点账户的最大转出额,并将该最大转出额显式地包含在函数DeclareHotData的代码中。例如,业务人员可首先将业务逻辑设置为,当调用合约Contract1的交易数在0-1000时,将从账户HotAddr1转出的金额设置为2,当调用合约Contract1的交易数在1000-2000时,将从账户HotAddr1转出的金额设置为3,从而合约开发者可在函数DeclareHotData中设定,当调用合约Contract1的交易数在0-1000时,交易的最大转出额(即最大的可能转出额)为2,当调用合约Contract1的交易数在1000-2000时,交易的最大转出额为3。
例如对于上述交易Tx1,假设交易Tx1是区块m中的第一个执行的交易,区块链节点在对交易Tx1进行分组时,在基于交易Tx1获取合约Contract1的代码之后,执行函数DeclareHotData,基于合约Contract1的状态存储中记录的调用合约Contract1的交易数,确定交易Tx1例如为调用合约Contract1的第0-1000个交易中的交易,从而可确定交易Tx1的max_delta=2,区块链节点还可以从状态数据库中获取账户HotAddr1的当前余额,从而可基于max_delta=2和账户HotAddr1的当前余额确定热点账户是否可能余额不足。具体是,如果账户HotAddr1的当前余额减去2大于等于零,则可确定交易Tx1不会导致账户HotAddr1的余额不足。如果账户HotAddr1的当前余额减去2小于零,则可确定交易Tx1可能会导致账户HotAddr1的余额不足。
假设区块链节点在通过图3所示过程处理交易Tx1之后处理交易Tx2,假设区块链节点同样地确定交易Tx2例如为调用合约Contract1的第0-1000个交易中的交易,从而可确定交易Tx2的max_delta=2。区块链节点从而可基于账户HotAddr1的当前余额、交易Tx1的max_delta以及交易Tx2的max_delta确定交易Tx2是否可能导致账户HotAddr1的余额不足。具体是,如果账户HotAddr1的当前余额减去4(即2+2)大于等于零,则可确定交易Tx2不会导致账户HotAddr1的余额不足。如果账户HotAddr1的当前余额减去4小于零,则可确定交易Tx2可能会导致账户HotAddr1的余额不足。
可以理解,在可基于交易调用的合约的代码确定交易将从热点账户转出的金额是多少的情况中,可直接根据该确定的转出金额确定热点账户是否会余额不足。
在步骤S2045,如果确定交易不会导致热点账户的余额不足,则将该交易放入第一集合。在步骤S2046,如果确定交易可能导致热点账户的余额步骤,即不能确定交易不会导致热点账户余额步骤,则将该交易放入第二集合。
在步骤S206,并行执行所述第一集合中的交易。
在一种情况中,假设第一集合中的每个交易都是从热点账户向交易发送账户转出金额的交易,并且假设第一集合中各个交易的交易发送账户相互不同,也就是说,第一集合中的交易除了热点账户之外相互之间没有读写冲突,由于第一集合中的每个交易都不会导致热点账户的余额不足,因此,即使并行执行第一集合中的全部交易,也不会出现交易执行失败的情况中,因此,可并行执行第一集合中的全部交易。在执行第一集合中的每个交易时,区块链节点可以以例如日志(log)的方式记录该交易对热点账户余额的更改量,以用于后续更新热点账户的余额。
在另一种情况中,第一集合中包括从第一热点账户向交易发送账户转出金额的多个交易和从第二热点账户向交易发送账户转出金额的多个交易。并且假设第一集合中的交易除了第一热点账户和第二热点账户之外没有其他的读写冲突,由于访问第一热点账户的交易与访问第二热点账户的交易之间没有读写冲突,因此,第一集合中的多个交易也可以并行执行,并且不存在执行失败的可能性。
在又一种情况中,第一集合中包括的多个交易除了热点账户之外,可能相对于其他访问变量存在读写冲突,在该情况中,可基于各个交易访问的除了热点账户之外的变量(即不包括热点账户的读写集)对该对个交易分为多个交易组,并行执行各个交易组。由于在用于分组的读写集中未包括热点账户,因此,不会将访问热点账户的交易分组到一个交易组中,而是将访问热点账户的多个交易分散到各个交易组中,从而实现对访问热点账户的多个交易的并行执行。
在执行第一集合中的各个交易时,区块链节点会通过例如log的形式记录对各个账户的更改量,其中例如包括各个交易的对热点账户的余额的转出额(即减少量)。
在步骤S208,在执行完成所述第一集合中的全部交易之后,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额。
区块链节点在执行完成所述第一集合中的全部交易之后,对于相对于各个交易记录的对非热点账户的更改量,可直接使用该更改量更新该非热点账户的余额。
对于相对于各个交易记录的对热点账户的更改量,区块链节点可将第一集合中的全部对热点账户的更改量相加,并使用该相加获得的更改量之和一次性的更新热点账户的余额,从而提高效率。可以理解,区块链节点也可以使用各个对热点账户的更改量,依次更新热点账户的余额。
如果第一集合中包括访问第一热点账户的交易和访问第二热点账户的交易,则区块链节点可分别计算第一集合中的交易对第一热点账户的余额更改量之和及对第二热点账户的余额更改量之和,从而分别更新第一热点账户的余额和第二热点账户的余额。
在步骤S210,基于所述更新的热点账户的余额,串行执行所述第二集合中的交易。
在如上所述更新热点账户的余额之后,可以将该余额作为开始执行第二集合中的交易的状态信息,来串行执行第二集合中的交易。由于第二集合中的交易有可能使得热点账户的余额不足,通过按照预先确定的交易的执行顺序串行执行第二集合中的各个交易,当执行第二集合中的某个交易时热点账户的余额不足时,可确定该交易及排在该交易后面的各个交易都执行失败,从而可保证交易执行的正确性。
图4示出根据本说明书实施例的一种区块链节点,包括:
获取单元41,用于获取待执行的多个交易,所述多个交易具有预定的执行顺序;
分组单元42,用于按照所述多个交易的执行顺序依次将所述多个交易中的每个交易分组到第一集合或第二集合中,其中,所述第一集合中的交易为不会导致热点账户的余额不足的交易;
并行执行单元43,用于并行执行所述第一集合中的交易;
更新单元44,用于在执行完成所述第一集合中的全部交易之后,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额;
串行执行单元45,用于基于所述更新的热点账户的余额,串行执行所述第二集合中的交易。
在一种实施方式中,所述并行执行单元43具体用于,在执行第一集合中的每个用于更改所述热点账户的余额的交易时,记录该交易对所述热点账户的余额的更改量,所述更新单元44具体用于,基于所述记录的对所述热点账户余额的更改量,更新所述热点账户的余额。
在一种实施方式中,所述分组单元42具体用于:
对于所述多个交易中的每个交易,确定该交易是否为对热点账户的转账交易;在确定不是对热点账户的转账交易的情况中,将该交易放入所述第一集合;在确定该交易为对热点账户的转账交易的情况中,确定该交易是否不会导致热点账户的余额不足;在确定为是的情况中,将该交易放入所述第一集合,在确定为否的情况中,将该交易放入所述第二集合。
在一种实施方式中,所述分组单元42具体用于,在确定该交易为对热点账户的转账交易的情况中,基于该交易调用的第一合约中包括的与所述热点账户相关的描述信息确定该交易对所述热点账户的最大更改量,基于所述最大更改量的确定该交易是否不会导致热点账户的余额不足。
在一种实施方式中,所述第一集合中包括用于更改所述热点账户的余额的第一交易,所述并行执行单元43具体用于,执行所述第一交易中调用的第一合约,使得记录该第一交易对所述热点账户的余额的更改量。
在一种实施方式中,所述并行执行单元43具体用于,基于所述第一集合中各个交易访问的除所述热点账户之外的变量,对所述第一集合中的交易分组为多个交易组,基于所述多个交易组并行执行所述第一集合中的交易。
在一种实施方式中,所述更新单元44具体用于,基于所述第一集合中的交易对所述热点账户余额的更改量之和,更新所述热点账户的余额。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的交易执行方案,通过将多个交易分组到第一集合和第二集合中,使得可以在并行执行第一集合中的交易的同时保证交易执行的正确性,提高了区块链的交易处理效率。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种交易执行方法,包括:
获取待执行的多个交易,所述多个交易具有预定的执行顺序;所述多个交易为区块链交易;
按照所述多个交易的执行顺序依次将所述多个交易中的每个交易分组到第一集合或第二集合中,其中,所述第一集合中的交易为不会导致热点账户的余额不足的交易;
并行执行所述第一集合中的交易;
在执行完成所述第一集合中的全部交易之后,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额;
基于所述更新的热点账户的余额,串行执行所述第二集合中的交易。
2.根据权利要求1所述的方法,其中,并行执行所述第一集合中的交易包括,在执行第一集合中的每个用于更改所述热点账户的余额的交易时,记录该交易对所述热点账户的余额的更改量,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额包括,基于所述记录的对所述热点账户余额的更改量,更新所述热点账户的余额。
3.根据权利要求1所述的方法,其中,按照所述多个交易的执行顺序依次将所述多个交易中的每个交易分组到第一集合或第二集合中包括:
对于所述多个交易中的每个交易,确定该交易是否为对热点账户的转账交易;在确定不是对热点账户的转账交易的情况中,将该交易放入所述第一集合;在确定该交易为对热点账户的转账交易的情况中,确定该交易是否不会导致热点账户的余额不足;在确定为是的情况中,将该交易放入所述第一集合,在确定为否的情况中,将该交易放入所述第二集合。
4.根据权利要求3所述的方法,其中,在确定该交易为对热点账户的转账交易的情况中,确定该交易是否不会导致热点账户的余额不足包括,在确定该交易为对热点账户的转账交易的情况中,基于该交易调用的第一合约中包括的与所述热点账户相关的描述信息确定该交易对所述热点账户的最大更改量,基于所述最大更改量的确定该交易是否不会导致热点账户的余额不足。
5.根据权利要求1-3任一项所述的方法,其中,所述第一集合中包括用于更改所述热点账户的余额的第一交易,所述并行执行第一集合中的各个交易包括,执行所述第一交易中调用的第一合约,使得记录该第一交易对所述热点账户的余额的更改量。
6.根据权利要求1-3任一项所述的方法,其中,并行执行所述第一集合中的交易具体包括,基于所述第一集合中各个交易访问的除所述热点账户之外的变量,对所述第一集合中的交易分组为多个交易组,基于所述多个交易组并行执行所述第一集合中的交易。
7.根据权利要求1-3任一项所述的方法,其中,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额包括,基于所述第一集合中的交易对所述热点账户余额的更改量之和,更新所述热点账户的余额。
8.一种区块链节点,包括:
获取单元,用于获取待执行的多个交易,所述多个交易具有预定的执行顺序;
分组单元,用于按照所述多个交易的执行顺序依次将所述多个交易中的每个交易分组到第一集合或第二集合中,其中,所述第一集合中的交易为不会导致热点账户的余额不足的交易;
并行执行单元,用于并行执行所述第一集合中的交易;
更新单元,用于在执行完成所述第一集合中的全部交易之后,基于所述第一集合中的交易对所述热点账户余额的更改量,更新所述热点账户的余额;
串行执行单元,用于基于所述更新的热点账户的余额,串行执行所述第二集合中的交易。
9.根据权利要求8所述的区块链节点,其中,所述并行执行单元具体用于,在执行第一集合中的每个用于更改所述热点账户的余额的交易时,记录该交易对所述热点账户的余额的更改量,所述更新单元具体用于,基于所述记录的对所述热点账户余额的更改量,更新所述热点账户的余额。
10.根据权利要求8所述的区块链节点,其中,所述分组单元具体用于:
对于所述多个交易中的每个交易,确定该交易是否为对热点账户的转账交易;在确定不是对热点账户的转账交易的情况中,将该交易放入所述第一集合;在确定该交易为对热点账户的转账交易的情况中,确定该交易是否不会导致热点账户的余额不足;在确定为是的情况中,将该交易放入所述第一集合,在确定为否的情况中,将该交易放入所述第二集合。
11.根据权利要求10所述的区块链节点,其中,所述分组单元具体用于,在确定该交易为对热点账户的转账交易的情况中,基于该交易调用的第一合约中包括的与所述热点账户相关的描述信息确定该交易对所述热点账户的最大更改量,基于所述最大更改量的确定该交易是否不会导致热点账户的余额不足。
12.根据权利要求8-10任一项所述的区块链节点,其中,所述第一集合中包括用于更改所述热点账户的余额的第一交易,所述并行执行单元具体用于,执行所述第一交易中调用的第一合约,使得记录该第一交易对所述热点账户的余额的更改量。
13.根据权利要求8-10任一项所述的区块链节点,其中,所述并行执行具体用于,基于所述第一集合中各个交易访问的除所述热点账户之外的变量,对所述第一集合中的交易分组为多个交易组,基于所述多个交易组并行执行所述第一集合中的交易。
14.根据权利要求8-10任一项所述的区块链节点,其中,所述更新单元具体用于,基于所述第一集合中的交易对所述热点账户余额的更改量之和,更新所述热点账户的余额。
15.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-7中任一项的所述的方法。
16.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-7中任一项所述的方法。
CN202110465890.3A 2021-04-28 2021-04-28 交易执行方法和区块链节点 Active CN112884586B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110465890.3A CN112884586B (zh) 2021-04-28 2021-04-28 交易执行方法和区块链节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110465890.3A CN112884586B (zh) 2021-04-28 2021-04-28 交易执行方法和区块链节点

Publications (2)

Publication Number Publication Date
CN112884586A CN112884586A (zh) 2021-06-01
CN112884586B true CN112884586B (zh) 2021-08-03

Family

ID=76040212

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110465890.3A Active CN112884586B (zh) 2021-04-28 2021-04-28 交易执行方法和区块链节点

Country Status (1)

Country Link
CN (1) CN112884586B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101010690A (zh) * 2004-06-25 2007-08-01 佩珀尔硬币公司 支付处理方法和系统
CN106952158A (zh) * 2017-03-17 2017-07-14 证通股份有限公司 解决热点账户问题的记账方法及设备
CN108269072A (zh) * 2016-12-30 2018-07-10 深圳瀚德创客金融投资有限公司 用于区块链的交易处理方法和网络节点
CN110520882A (zh) * 2018-12-28 2019-11-29 阿里巴巴集团控股有限公司 在区块链网络中并行执行交易

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101010690A (zh) * 2004-06-25 2007-08-01 佩珀尔硬币公司 支付处理方法和系统
CN108269072A (zh) * 2016-12-30 2018-07-10 深圳瀚德创客金融投资有限公司 用于区块链的交易处理方法和网络节点
CN106952158A (zh) * 2017-03-17 2017-07-14 证通股份有限公司 解决热点账户问题的记账方法及设备
CN110520882A (zh) * 2018-12-28 2019-11-29 阿里巴巴集团控股有限公司 在区块链网络中并行执行交易

Also Published As

Publication number Publication date
CN112884586A (zh) 2021-06-01

Similar Documents

Publication Publication Date Title
US20190324772A1 (en) Method and device for processing smart contracts
CN109710384B (zh) 一种安全的Java智能合约解释执行引擎及方法
CN102971711B (zh) 用于处理批工作单元的设备及其方法
CN100492301C (zh) 避免软件冲突的方法和系统
US8832699B2 (en) Migrating processes operating on one platform to another platform in a multi-platform system
RU2571726C2 (ru) Система и способ проверки целесообразности установки обновлений
CN104065636B (zh) 数据处理方法和系统
CN112767135A (zh) 规则引擎的配置方法及装置、存储介质、计算机设备
CN109885612B (zh) 区块链智能合约的同步生效方法及装置
CN112767133A (zh) 业务决策方法及装置、存储介质、计算机设备
CN111538545A (zh) Java应用运行方法、装置、介质及电子设备
CN111679852B (zh) 一种冲突依赖库的检测方法及装置
CN112884586B (zh) 交易执行方法和区块链节点
CN112631994A (zh) 数据迁移方法及系统
CN114356768A (zh) 通过占位符减少交易读写冲突的方法与装置
CN111273897A (zh) 一种区块链资源消耗方法、装置、储存介质及电子设备
CN110795334A (zh) 一种测试装置和方法
CN111324368A (zh) 一种数据共享方法及服务器
KR102529081B1 (ko) 프록시 컨트랙트 생성방법 및 장치
CN111695991B (zh) 基于区块的合约处理方法、装置、区块链节点及存储介质
CN114185996B (zh) 一种跨链事务处理方法及装置
US20230305950A1 (en) Determination of a prioritized subset of test cases to run after a source code change
CN117574389A (zh) 一种可重入攻击向量的生成方法、装置和存储介质
CN113672309A (zh) 一种业务服务方法、装置、电子设备以及可读存储介质
CN115220822A (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