CN113421073A - 在区块链中并发执行交易的方法和装置 - Google Patents

在区块链中并发执行交易的方法和装置 Download PDF

Info

Publication number
CN113421073A
CN113421073A CN202110692747.8A CN202110692747A CN113421073A CN 113421073 A CN113421073 A CN 113421073A CN 202110692747 A CN202110692747 A CN 202110692747A CN 113421073 A CN113421073 A CN 113421073A
Authority
CN
China
Prior art keywords
transaction
variable
execution
read operation
write
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.)
Pending
Application number
CN202110692747.8A
Other languages
English (en)
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.)
Alibaba Group Holding Ltd
Advanced New Technologies Co Ltd
Original Assignee
Advanced New Technologies 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 Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN202110692747.8A priority Critical patent/CN113421073A/zh
Publication of CN113421073A publication Critical patent/CN113421073A/zh
Pending legal-status Critical Current

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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/085Payment architectures involving remote charge determination or related payment systems
    • G06Q20/0855Payment architectures involving remote charge determination or related payment systems involving a third party
    • 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
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供了一种在区块链中并发执行交易的方法和装置,一种在区块链中并发执行多个交易的方法,所述方法由区块链节点执行,包括:在开始执行所述第一交易中包括的对第一变量的读取操作时,推断第二交易是否将要对所述第一变量进行写入,其中,所述第二交易预设为在所述第一交易之前提交;在推断所述第二交易将要对所述第一变量进行写入的情况中,暂停执行所述第一交易中的所述读取操作。

Description

在区块链中并发执行交易的方法和装置
本申请为2019年8月30日提交的申请号为201910818227.X,名为“在区块链中并发执行交易的方法和装置”的发明专利申请的分案申请。
技术领域
本说明书实施例涉及区块链技术领域,更具体地,涉及一种在区块链中并发执行交易的方法和装置。
背景技术
区块链技术是构建在点对点(P2P)网络上,利用链式数据结构来验证与存储数据,利用分布式节点共识算法来生成和更新数据,利用密码学的方式保证数据传输和访问的安全,利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。区块链技术也被称之为分布式账本技术,是一种去中心化的分布式数据库技术,其特点是去中心化、公开透明、不可篡改、可信任。区块链的每笔数据,都会广播到全网的区块链节点,每个全节点都有全量的、一致的数据。区块链中的节点通过发送交易而进行转账、存入数据等业务,区块链中的记账节点在交易池中收集区块链中的交易,执行所述交易,并在执行所述交易之后,将这些交易打包到区块中并扩散到区块链中。区块链中的验证节点会对从记账节点发出的区块进行验证,在验证通过之后,每个节点在接收到该区块时,都会执行该区块中包括的每个交易。为了保证各个节点的数据一致性,各个节点中在执行区块中的多个交易时,对该多个交易的提交顺序需要是一致的,这样才能得到一致的执行结果。因此,在现有技术中,记账节点在执行交易之前会按照预定规则对将要执行的多个交易进行编号,并按照编号的顺序依次执行多个交易,也即依次提交多个交易,并且其它节点在接收到该区块之后,也是按照上述交易编号顺序依次执行并提交所述多个交易。然而,所述多个交易并不一定都是相互依赖的,在两个交易之间不存在依赖性的情况中,并发执行这两个交易并不影响最终的结果。而如果并发执行的两个交易存在依赖性,则该并发执行将影响到最终的结果。
因此,需要一种更有效的在区块链中并发执行多个交易的方法。
发明内容
本说明书实施例旨在提供一种更有效的并发执行多个交易的方法,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种在区块链中并发执行多个交易的方法,所述方法在区块链中的第一节点执行,所述多个交易中包括第一交易,所述第一交易中包括对第一变量的读取操作,所述方法包括:
在开始执行所述第一交易中的所述读取操作的代码之后,推断第二交易是否将要对所述第一变量进行写入,其中,所述第二交易为所述多个交易中交易编号小于所述第一交易的交易,其中,所述交易编号与交易的预定提交顺序相对应;
在推断第二交易将要对所述第一变量进行写入的情况中,暂停执行所述第一交易中的所述读取操作。
在一个实施例中,所述第一节点中预设有变量冲突表,所述变量冲突表中记录了第一变量为冲突变量,其中,推断第二交易是否将要对所述第一变量进行写入包括,基于所述变量冲突表,推断第二交易将要对所述第一变量进行写入。
在一个实施例中,所述方法还包括,在暂停执行所述第一交易中的所述读取操作之后,确定所述第二交易是否根据提交顺序为所述第一交易的前一个交易,在确定所述第二交易根据提交顺序为所述第一交易的前一个交易的情况中,基于第二交易的执行,恢复执行所述读取操作。
在一个实施例中,所述读取操作的读取对象为共享内存中存储的交易提交结果,其中,基于第二交易的执行,恢复执行所述读取操作包括,在第二交易提交之后,恢复执行所述读取操作。
在一个实施例中,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据,其中,基于第二交易的执行,恢复执行所述读取操作包括,基于在执行第二交易的过程中在共享内存预定地址中的声明,恢复执行所述读取操作,所述声明指示所述第二交易的执行将不再对所述第一变量进行写入。
在一个实施例中,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据,其中,基于第二交易的执行,恢复执行所述读取操作包括,在确定所述中间数据中包括第二交易中对第一变量的写入值之后,恢复执行所述读取操作,并在共享内存中对该读取操作的执行进行记录。
在一个实施例中,推断第二交易是否将要对所述第一变量进行写入包括,获取第二交易的交易数据;基于第二交易的交易数据,推断第二交易是否将要对所述第一变量进行写入。
在一个实施例中,基于第二交易的交易数据,推断第二交易是否将要对所述第一变量进行写入包括,通过将第二交易中调用的函数名称和第一变量输入预定判定模型,推断第二交易是否将要对所述第一变量进行写入。
在一个实施例中,所述方法还包括,在暂停执行所述第一交易中的所述读取操作之后,确定是否存在交易编号在所述第二交易与第一交易之间的冲突交易,其中,所述冲突交易为被推断将要对所述第一变量进行写入的交易,以及,在不存在所述冲突交易的情况中,基于第二交易的执行,恢复执行所述读取操作。
在一个实施例中,所述第一节点中预设有变量冲突表,所述变量冲突表中记录了第一变量的冲突概率,其中,在开始执行所述第一交易中的所述读取操作的代码之后,推断第二交易是否将要对所述第一变量进行写入包括,在开始执行所述第一交易中的所述读取操作的代码之后,在第一预定数值范围内生成随机数,以及通过确定所述随机数是否在第二预定数值范围内,推断第二交易是否将要对所述第一变量进行写入,其中,所述第二预定数值范围在所述第一预定数值范围之内、并基于所述冲突概率确定。
本说明书另一方面提供一种在区块链中并发执行多个交易的装置,所述装置部署在区块链中的第一节点中,所述多个交易中包括第一交易,所述第一交易中包括对第一变量的读取操作,所述装置包括:
第一确定单元,配置为,在开始执行所述第一交易中的所述读取操作的代码之后,推断第二交易是否将要对所述第一变量进行写入,其中,所述第二交易为所述多个交易中交易编号小于所述第一交易的交易,其中,所述交易编号与交易的预定提交顺序相对应;
暂停单元,配置为,在推断第二交易将要对所述第一变量进行写入的情况中,暂停执行所述第一交易中的所述读取操作。
在一个实施例中,所述第一节点中预设有变量冲突表,所述变量冲突表中记录了第一变量为冲突变量,其中,所述第一确定单元还配置为,基于所述变量冲突表,推断第二交易将要对所述第一变量进行写入。
在一个实施例中,所述装置还包括,第二确定单元,配置为,在暂停执行所述第一交易中的所述读取操作之后,确定所述第二交易是否根据提交顺序为所述第一交易的前一个交易,以及第一恢复单元,配置为,在确定所述第二交易根据提交顺序为所述第一交易的前一个交易的情况中,基于第二交易的执行,恢复执行所述读取操作。
在一个实施例中,所述读取操作的读取对象为共享内存中存储的交易提交结果,其中,所述恢复单元还配置为,在第二交易提交之后,恢复执行所述读取操作。
在一个实施例中,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据,其中,所述恢复单元还配置为,基于在执行第二交易的过程中在共享内存预定地址中的声明,恢复执行所述读取操作,所述声明指示所述第二交易的执行将不再对所述第一变量进行写入。
在一个实施例中,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据,所述恢复单元还配置,在确定所述中间数据中包括第二交易中对第一变量的写入值之后,恢复执行所述读取操作,并在共享内存中对该读取操作的执行进行记录。
在一个实施例中,所述第一确定单元还包括,获取子单元,配置为,获取第二交易的交易数据;以及第一确定子单元,配置为,基于第二交易的交易数据,推断第二交易是否将要对所述第一变量进行写入。
在一个实施例中,所述第一确定子单元还配置为,通过将第二交易中调用的函数名称和第一变量输入预定判定模型,推断第二交易是否将要对所述第一变量进行写入。
在一个实施例中,所述装置还包括,第三确定单元,配置为,在暂停执行所述第一交易中的所述读取操作之后,确定是否存在交易编号在所述第二交易与第一交易之间的冲突交易,其中,所述冲突交易为被推断将要对所述第一变量进行写入的交易,以及,第二恢复单元,配置为,在不存在所述冲突交易的情况中,基于第二交易的执行,恢复执行所述读取操作。
在一个实施例中,所述第一节点中预设有变量冲突表,所述变量冲突表中记录了第一变量的冲突概率,其中,所述第一确定单元还包括,生成子单元,配置为,在开始执行所述第一交易中的所述读取操作的代码之后,在第一预定数值范围内生成随机数,以及第二确定子单元,配置为,通过确定所述随机数是否在第二预定数值范围内,而推断第二交易是否将要对所述第一变量进行写入,其中,所述第二预定数值范围在所述第一预定数值范围之内、并基于所述冲突概率确定。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过根据本说明书实施例的在区块链中并发执行交易的方案,通过确定交易之间的冲突概率,从而确定是否暂停对变量的读取操作,从而可使得对于没有相互依赖性的多个交易,可并发执行这些交易,对于具有相互依赖性的多个交易,可串行执行这些交易,从而大概率避免了交易之间的冲突和交易的回撤,从而在保证计算结果一致性的同时,加快了处理速度,提高了处理性能。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示出根据本说明书实施例的区块链系统示意图;
图2示出根据本说明书一个实施例的一种在区块链中并发执行交易的方法流程图;
图3示出了变量冲突表的示意形式;
图4示出了变量冲突表的示意形式;
图5示出根据本说明书一个实施例的一种在区块链中并发执行交易的装置500。
具体实施方式
下面将结合附图描述本说明书实施例。
图1示出根据本说明书实施例的区块链系统示意图。如图1所示,所述系统中包括构成区块链的多个节点(图中示意示出6个节点),这些节点两两相连,其中例如包括节点11、节点12和节点13。如本领域技术人员所知,在区块链中,一些节点会收集区块链中的多个交易放入交易池中并竞争记账权。例如图中的节点11通过获取记账权而成为记账节点。节点11在成为记账节点之后会执行其交易池中的多个交易,并将该多个交易打包成区块发送给其它节点,例如发送给节点12。节点12将会对该区块进行验证,并同样地执行该区块中的多个交易。在预定数目个节点对该区块进行验证之后,也即对该区块达到了共识,区块链中的其它节点(例如节点13)将不需要继续对该区块进行验证,而是直接对该区块中的交易进行执行,以更新本地的相关数据。
在并发执行多个交易的过程中,所述多个交易中可能涉及到对多个变量的计算,在两个交易中不涉及相同的变量的情况中,其执行顺序并不会影响最终的计算结果,而在例如第一交易包括对变量k1的写入、第二交易包括对变量k1的读取、并且第一交易的编号在第二交易之前的情况中,第一交易成为第二交易的冲突交易,也就是说,第二交易必须在确定第一交易对其即将读取的k1值不再写入的情况中,才能进行对该k1值的读取,否则其读取的k1值是错误的值。其中,所述交易的编号对应于交易的提交顺序,在并发执行交易时,为了保证最终的交易执行结果相同,必须保证交易的提交顺序与串行执行交易时的提交顺序是相同的。同时,在本说明书实施例中,为了保证各个节点对多个交易的执行结果是相同的,在并发执行多个交易的同时,考虑交易之间对访问变量的冲突,从而使得并行执行的交易的冲突概率较大的情况下进行等待,以避免冲突的发生。例如,如图1中所示,每个节点都可以根据本节点的交易执行历史预设变量冲突表,该变量冲突表中记录了容易引起交易冲突的变量。从而,例如,在节点11中,当在执行第二交易时开始进行对变量k1的读取操作之后,将参考节点11中的变量冲突表,以确定k1是否为冲突变量,在确定k1为冲突变量的情况中,也就是说,第二交易与其之前的交易之间存在冲突的概率较大,因此暂停第二交易中对k1的读取,而等其之前一个交易提交之后再进行该读取。
可以理解,上文对图1的描述只是示意性地,而不是用于限制本说明书实施例的范围。例如,在节点中,也可以通过其他方式获取交易之间的冲突概率,或者所述第二交易也可以在其之前的交易进行其它执行之后再进行读取。下文将详细描述根据本说明书实施例的并发执行交易的过程。
图2示出根据本说明书一个实施例的一种在区块链中并发执行交易的方法流程图,所述方法在区块链中的第一节点执行,所述第一节点中当前并发执行多个交易,其中包括第一交易,所述第一交易中包括对第一变量的读取操作,所述方法包括:
在步骤S202,在开始执行所述第一交易中的所述读取操作的代码之后,推断第二交易是否将要对所述第一变量进行写入,其中,所述第二交易为所述多个交易中交易编号小于所述第一交易的交易,其中,所述交易编号与交易的预定提交顺序相对应;
在步骤S204,在推断第二交易将要对所述第一变量进行写入的情况中,暂停执行所述第一交易中的所述读取操作。
首先,在步骤S202,在开始执行所述第一交易中的所述读取操作的代码之后,推断第二交易是否将要对所述第一变量进行写入,其中,所述第二交易为所述多个交易中交易编号小于所述第一交易的交易,其中,所述交易编号与交易的预定提交顺序相对应。
如上文中参考图1中所述,该方法在区块链中的一个节点执行。该节点在打包区块时,或者该节点在接收到新生成的区块之后,都会对相关的多个交易进行执行提交。例如,一个区块中可包括几千笔交易,而这几千笔交易可能涉及几百个变量,其中,多个交易可能访问不同的变量,或者,多个交易可能访问相同的变量。在现有技术中,在记账节点中,已经根据预定规则确定了将打包到一个区块中的多个交易各自的交易编号,该交易编号的顺序指示了交易的执行顺序和提交顺序。在本说明书实施例中,为了使得最后的计算结果与现有技术中的串行计算结果相同,对区块中的多个交易保留预定好的提交顺序,即,以各个交易的编号顺序作为其各自的提交顺序,同时,通过预先确定交易之间的冲突概率,使得没有依赖关系的各个交易可并发执行,并使得具有依赖关系的各个交易依据其编号的先后串行执行,从而避免交易冲突,其中,对于先后编号的交易1和交易2,如果在交易1中对第一变量进行写入,在交易2中对第一变量进行读取,则交易2依赖于交易1的结果,交易1是交易2的冲突交易。
在一个实施例中,如上文所述,在区块链每个节点中预设有变量冲突表,该冲突变量记录了多个变量中的冲突变量。图3示出了变量冲突表的示意形式。如图3所示,该变量冲突表中对执行多个交易过程中的多个变量k1、k2、…kn进行列表,并将所述多个变量中的冲突变量对应的值设定为1,将多个变量中的非冲突变量的值设定为0。从而,通过查询该变量冲突表,可确定特定变量是否为冲突变量。所述冲突变量例如为容易引起交易冲突的变量。例如,可根据程序员的先验经验确定多个变量中的冲突变量,从而预设变量冲突表。或者,可根据节点中的已有的执行交易的历史数据进行确定,例如,在历史数据中的一个交易中包括对例如变量k1的读取时,根据该历史数据确定在该交易之前的交易对该变量k1进行写入的平均概率。如果该平均概率大于预定阈值时,可确定该变量k1为冲突变量。在一个实施例中,可对图3所示表中各个变量增加时间戳,例如对于变量k1,每次发现对变量k1的访问冲突时,更新一下时间戳,在查询该表时如果发现时间戳距离当前时间非常远,则将变量k1的值修改为0。在一个实施例中,可基于每个预定时段的历史数据,定期更新该表。
在一个实施例中,在基于预设的变量冲突表确定k1为冲突变量之后,根据悲观策略,如果当前执行的第一交易中包括对变量k1的读取,则认为当前并发执行的交易中编号小于第一交易的各个交易都是第一交易的冲突交易,也就是说,认为所述各个交易都将要对变量k1进行写入。这里,交易编号对应于交易的提交顺序,交易的提交顺序越靠前,交易编号越小。
在一个实施例中,可在节点中预设各个变量的变量冲突表,该变量冲突表中包括各个变量的冲突概率。图4示出了变量冲突表的示意形式。如图4中所示,该变量冲突表中对执行多个交易过程中的多个变量k1、k2、…kn进行列表,该表中各个变量ki对应的值为该变量的冲突概率。该冲突概率例如可基于历史交易执行数据确定。图4所示的变量冲突表可定期更新。例如,在所述变量冲突表中,k1的冲突概率为20%。如果当前执行的第一交易中包括对变量k1的读取,k1的冲突概率表示,并发执行的多个交易中的在第一交易之前的交易对k1进行写入的平均概率为20%,从而,可根据乐观策略确定第一交易的冲突交易。具体是,例如可生成0到100之间的随机数,假设基于20%的概率设定0到40为预定范围,则,当该随机数在0到40(包括40)范围内时,认为该第一交易的在前交易将要对第一变量进行写入,当该随机数在40到100(包括100)范围内时,认为该第一交易的在前交易将不会对第一变量进行写入,其中,在前交易为与第一交易并发执行的、交易编号小于第一交易的交易。可基于重做和等待各自造成的损失参数确定用于进行推断的随机数的预定范围,比如:假设“等待”会造成cpu空闲2ms、“重做”会造成cpu浪费10ms,则当冲突概率为20%时,可将所述预定范围确定为0到20之间,若“等待”会造成cpu空闲1ms,“重做”会造成cpu浪费10ms,则当冲突概率时20%时,可将所述预定范围设定为更大,例如0到80等等。
在一个实施例中,可在节点中预设结合图3和图4的变量冲突表,在该表中,当变量的冲突概率大于预定阈值时,将该变量的冲突值设为1,当变量的冲突概率小于等于预定阈值时,将该变量的冲突值设为其实际冲突概率。从而,在变量的冲突概率大于预定阈值时,可通过该变量冲突表,直接确定该变量为冲突变量,在变量的冲突概率小于等于预定阈值时,可通过上述生成随机数的方式确定该变量是否为冲突变量。从而融合了悲观策略和乐观策略。
在一个实施例中,如果当前执行的第一交易中包括对变量k1的读取,假设当前由第一线程执行第一交易,第一线程可查询第一交易的各个在前交易的交易数据,并根据该交易数据确定该在前交易对变量k1进行写入的概率,从而确定该在前交易是否为第一交易的冲突交易。具体是,例如第一交易的在前交易中包括第二交易,第一线程可查询到第二交易的调用函数的名称,并通过将该函数名称和变量k1输入预定判定模型,以推断第二交易是否将要对变量k1进行写入。在一个实施例中,所述预定判定模型例如包括各个调用函数与各个变量之间的写概率表,所述写概率表根据历史交易执行数据、或者根据函数的具体代码,确定了在调用函数时对各个变量进行写入的概率。例如,在调用函数中包括对变量k[n]的写入,n由交易执行中输入,例如n为1、2或3,则该函数对k[1]的写入概率可为1/3。从而,通过将第二交易的调用函数的名称和变量k1输入该判定模型,在模型中可基于所述写概率表确定第二交易对变量k1的写概率是否大于预定阈值,从而推断第二交易是否将对k1进行写入。在一个实施例中,所述判定模型例如为通过历史交易执行数据训练的判定模型,在对该判定模型输入第二交易的调用函数名称和第一交易读取的变量k1之后,该判定模型便可以推断第二交易是否将对变量k1进行写入。
在步骤S204,在推断第二交易将要对所述第一变量进行写入的情况中,暂停执行所述第一交易中的所述读取操作。
在如上所述推断第二交易将要对第一变量进行写入的情况中,也就是说,第二交易是第一交易的冲突交易,第一交易需要暂停执行所述读取操作,即进行等待,以读取到第二交易对k1的写入值,否则,第一交易读取的k1值将是错误的值,在执行了错误的读取之后,在后续将要重新进行读取操作,并对交易进行相应的重做。
在一个实施例中,在基于上述变量冲突表或变量冲突表推断第二交易将要对变量k1进行写入之后,还需要确定该第二交易是否为第一交易的前一个交易,在第二交易为第一交易的前一个交易的情况中,则基于第二交易的执行,恢复执行所述第一交易中的读取。也就是说,在该实施例中,在确定变量k1为冲突变量之后,则认为第一交易之前的每个并发执行的交易都是第一交易的冲突交易,因此,需要等到第一交易的前一个交易进行了相应操作之后,再恢复第一交易中的读取操作。
具体是,在一个实施例中,假设第二交易为第一交易的前一个交易,所述读取操作的读取对象为共享内存中存储的第二交易的提交结果,也就是说,只有等到第二交易提交之后,第一交易才能读取到该第二交易对变量k1的写入值。在该情况中,在第二交易提交之后,可恢复第一交易中的读取操作。
在一个实施例中,假设第二交易为第一交易的前一个交易,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据。例如,当前通过第二线程在执行第二交易,第二线程在执行第二交易的过程中在进行对k1的写入之后,在共享内存中记录对k1进行写入的动作、和该写入的k1值作为中间数据。在进行该写入之后,第二线程基于预设代码或者对代码的编译可确定,在后续将不再对k1进行写入,从而,第二线程可在共享内存预定地址中声明:第二交易的执行将不再写入变量k1,从而执行第一交易的第一线程在预定地址读取到该声明之后,可结束上述等待,从所述中间数据中读取由第二线程写入的变量k1的值。
在一个实施例中,假设第二交易为第一交易的前一个交易,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据。例如,当前通过第二线程在执行第二交易,第二线程在执行第二交易的过程中在进行对k1的写入之后,在共享内存中记录对k1进行写入的动作、和该写入的k1值作为中间数据。执行第一交易的第一线程在基于所述中间数据确定第二线程对k1进行写入之后,可结束上述等待,从所述中间数据中读取由第二线程写入的变量k1的值。所述第一线程在进行上述读取之后,在共享内存中记录其执行了第一交易中的对变量k1的读取。后续例如在第二线程再次执行对变量k1的写入的情况中,第二线程根据第一线程在共享内存中的记录,将通知例如交易调度器重新执行第一交易中的所述读取及后续相关操作、或者回撤第一交易。
在一个实施例中,如上所述,通过查询各个在前交易的交易数据确定该在前交易是否为第一交易的冲突交易的情况中,在确定第二交易为第一交易的冲突交易的情况中,还需要确定在第一交易与第二交易之间是否还有第一交易的冲突交易,也就是说,确定第二交易是否是离第一交易最近的冲突交易。从而,在确定第二交易为离第一交易最近的冲突交易之后,可基于第二交易的执行,恢复第一交易中的所述读取操作的执行。
图5示出根据本说明书一个实施例的一种在区块链中并发执行交易的装置500,所述装置部署在区块链中的第一节点中,所述第一节点中当前并发执行多个交易,其中包括第一交易,所述第一交易中包括对第一变量的读取操作,所述装置包括:
第一确定单元51,配置为,在开始执行所述第一交易中的所述读取操作的代码之后,推断第二交易是否将要对所述第一变量进行写入,其中,所述第二交易为所述多个交易中交易编号小于所述第一交易的交易,其中,所述交易编号与交易的预定提交顺序相对应;
暂停单元52,配置为,在推断第二交易将要对所述第一变量进行写入的情况中,暂停执行所述第一交易中的所述读取操作。
在一个实施例中,所述第一节点中预设有变量冲突表,所述变量冲突表中记录了第一变量为冲突变量,其中,所述第一确定单元51还配置为,基于所述变量冲突表,推断第二交易将要对所述第一变量进行写入。
在一个实施例中,所述装置还包括,第二确定单元53,配置为,在暂停执行所述第一交易中的所述读取操作之后,确定所述第二交易是否根据提交顺序为所述第一交易的前一个交易,以及第一恢复单元54,配置为,在确定所述第二交易根据提交顺序为所述第一交易的前一个交易的情况中,基于第二交易的执行,恢复执行所述读取操作。
在一个实施例中,所述读取操作的读取对象为共享内存中存储的交易提交结果,其中,所述第一恢复单元54还配置为,在第二交易提交之后,恢复执行所述读取操作。
在一个实施例中,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据,其中,所述第一恢复单元54还配置为,基于在执行第二交易的过程中在共享内存预定地址中的声明,恢复执行所述读取操作,所述声明指示所述第二交易的执行将不再对所述第一变量进行写入。
在一个实施例中,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据,所述第一恢复单元54还配置,在确定所述中间数据中包括第二交易中对第一变量的写入值之后,恢复执行所述读取操作,并在共享内存中对该读取操作的执行进行记录。
在一个实施例中,所述第一确定单元51还包括,获取子单元511,配置为,获取第二交易的交易数据;以及第一确定子单元512,配置为,基于第二交易的交易数据,推断第二交易是否将要对所述第一变量进行写入。
在一个实施例中,所述第一确定子单元512还配置为,通过将第二交易中调用的函数名称和第一变量输入预定判定模型,推断第二交易是否将要对所述第一变量进行写入。
在一个实施例中,所述装置还包括,第三确定单元55,配置为,在暂停执行所述第一交易中的所述读取操作之后,确定是否存在交易编号在所述第二交易与第一交易之间的冲突交易,其中,所述冲突交易为被推断将要对所述第一变量进行写入的交易,以及,第二恢复单元56,配置为,在不存在所述冲突交易的情况中,基于第二交易的执行,恢复执行所述读取操作。
在一个实施例中,所述第一节点中预设有变量冲突表,所述变量冲突表中记录了第一变量的冲突概率,其中,所述第一确定单元51还包括,生成子单元513,配置为,在开始执行所述第一交易中的所述读取操作的代码之后,在第一预定数值范围内生成随机数,以及第二确定子单元514,配置为,通过确定所述随机数是否在第二预定数值范围内,而推断第二交易是否将要对所述第一变量进行写入,其中,所述第二预定数值范围在所述第一预定数值范围之内、并基于所述冲突概率确定。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过根据本说明书实施例的在区块链中并发执行交易的方案,通过确定交易之间的冲突概率,从而确定是否暂停对变量的读取操作,从而可使得对于没有相互依赖性的多个交易,可并发执行这些交易;对于具有相互依赖性的多个交易,可串行执行这些交易,从而大概率避免了交易之间的冲突和交易的重做;对于交易之间具有一定冲突冲突概率的情形,本发明方法可在乐观预期和悲观预期之间进行平滑过渡,在串行执行浪费cpu和交易重做浪费cpu之间取得平衡,从而在保证计算结果一致性的同时,加快了处理速度,提高了处理性能。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执轨道,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执轨道的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (22)

1.一种在区块链中并发执行多个交易的方法,所述方法由区块链节点执行,包括:
在开始执行所述第一交易中包括的对第一变量的读取操作时,推断第二交易是否将要对所述第一变量进行写入,其中,所述第二交易预设为在所述第一交易之前提交;
在推断所述第二交易将要对所述第一变量进行写入的情况中,暂停执行所述第一交易中的所述读取操作。
2.根据权利要求1所述的方法,其中,所述区块链节点中预设有变量冲突表,所述变量冲突表中记录了第一变量为冲突变量,其中,推断第二交易是否将要对所述第一变量进行写入包括,基于所述变量冲突表,推断第二交易将要对所述第一变量进行写入。
3.根据权利要求2所述的方法,还包括,在暂停执行所述第一交易中的所述读取操作之后,确定所述第二交易是否根据提交顺序为所述第一交易的前一个交易,在确定所述第二交易根据提交顺序为所述第一交易的前一个交易的情况中,基于第二交易的执行,恢复执行所述读取操作。
4.根据权利要求3所述的方法,其中,所述读取操作的读取对象为共享内存中存储的交易提交结果,其中,基于第二交易的执行,恢复执行所述读取操作包括,在第二交易提交之后,恢复执行所述读取操作。
5.根据权利要求3所述的方法,其中,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据,其中,基于第二交易的执行,恢复执行所述读取操作包括,基于在执行第二交易的过程中在共享内存预定地址中的声明,恢复执行所述读取操作,所述声明指示所述第二交易的执行将不再对所述第一变量进行写入。
6.根据权利要求3所述的方法,其中,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据,其中,基于第二交易的执行,恢复执行所述读取操作包括,在确定所述中间数据中包括第二交易中对第一变量的写入值之后,恢复执行所述读取操作,并在共享内存中对该读取操作的执行进行记录。
7.根据权利要求1所述的方法,其中,推断第二交易是否将要对所述第一变量进行写入包括,获取第二交易的交易数据;基于第二交易的交易数据,推断第二交易是否将要对所述第一变量进行写入。
8.根据权利要求7所述的方法,其中,基于第二交易的交易数据,推断第二交易是否将要对所述第一变量进行写入包括,通过将第二交易中调用的函数名称和第一变量输入预定判定模型,推断第二交易是否将要对所述第一变量进行写入。
9.根据权利要求7所述的方法,还包括,在暂停执行所述第一交易中的所述读取操作之后,确定是否存在交易编号在所述第二交易与第一交易之间的冲突交易,其中,所述冲突交易为被推断将要对所述第一变量进行写入的交易,以及,在不存在所述冲突交易的情况中,基于第二交易的执行,恢复执行所述读取操作。
10.根据权利要求1所述的方法,其中,所述区块链节点中预设有变量冲突表,所述变量冲突表中记录了第一变量的冲突概率,其中,在开始执行所述第一交易中包括的对第一变量的读取操作时,推断第二交易是否将要对所述第一变量进行写入包括,在开始执行所述第一交易中的所述读取操作时,在第一预定数值范围内生成随机数,以及通过确定所述随机数是否在第二预定数值范围内,推断第二交易是否将要对所述第一变量进行写入,其中,所述第二预定数值范围在所述第一预定数值范围之内、并基于所述冲突概率确定。
11.一种在区块链中并发执行多个交易的装置,所述装置部署在区块链节点,包括:
第一确定单元,配置为,在开始执行所述第一交易中包括的对第一变量的读取操作时,推断第二交易是否将要对所述第一变量进行写入,其中,所述第二交易预设为在所述第一交易之前提交;
暂停单元,配置为,在推断所述第二交易将要对所述第一变量进行写入的情况中,暂停执行所述第一交易中的所述读取操作。
12.根据权利要求11所述的装置,其中,所述区块链节点中预设有变量冲突表,所述变量冲突表中记录了第一变量为冲突变量,其中,所述第一确定单元还配置为,基于所述变量冲突表,推断第二交易将要对所述第一变量进行写入。
13.根据权利要求12所述的装置,还包括,第二确定单元,配置为,在暂停执行所述第一交易中的所述读取操作之后,确定所述第二交易是否根据提交顺序为所述第一交易的前一个交易,以及第一恢复单元,配置为,在确定所述第二交易根据提交顺序为所述第一交易的前一个交易的情况中,基于第二交易的执行,恢复执行所述读取操作。
14.根据权利要求13所述的装置,其中,所述读取操作的读取对象为共享内存中存储的交易提交结果,其中,所述第一恢复单元还配置为,在第二交易提交之后,恢复执行所述读取操作。
15.根据权利要求13所述的装置,其中,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据,其中,所述第一恢复单元还配置为,基于在执行第二交易的过程中在共享内存预定地址中的声明,恢复执行所述读取操作,所述声明指示所述第二交易的执行将不再对所述第一变量进行写入。
16.根据权利要求13所述的装置,其中,所述读取操作的读取对象为第二交易在处理过程中被写入共享内存中的中间数据,所述第一恢复单元还配置,在确定所述中间数据中包括第二交易中对第一变量的写入值之后,恢复执行所述读取操作,并在共享内存中对该读取操作的执行进行记录。
17.根据权利要求11所述的装置,其中,所述第一确定单元还包括,获取子单元,配置为,获取第二交易的交易数据;以及第一确定子单元,配置为,基于第二交易的交易数据,推断第二交易是否将要对所述第一变量进行写入。
18.根据权利要求17所述的装置,其中,所述第一确定子单元还配置为,通过将第二交易中调用的函数名称和第一变量输入预定判定模型,推断第二交易是否将要对所述第一变量进行写入。
19.根据权利要求17所述的装置,还包括,第三确定单元,配置为,在暂停执行所述第一交易中的所述读取操作之后,确定是否存在交易编号在所述第二交易与第一交易之间的冲突交易,其中,所述冲突交易为被推断将要对所述第一变量进行写入的交易,以及,第二恢复单元,配置为,在不存在所述冲突交易的情况中,基于第二交易的执行,恢复执行所述读取操作。
20.根据权利要求11所述的装置,其中,所述区块链节点中预设有变量冲突表,所述变量冲突表中记录了第一变量的冲突概率,其中,所述第一确定单元还包括,生成子单元,配置为,在开始执行所述第一交易中的所述读取操作时,在第一预定数值范围内生成随机数,以及第二确定子单元,配置为,通过确定所述随机数是否在第二预定数值范围内,而推断第二交易是否将要对所述第一变量进行写入,其中,所述第二预定数值范围在所述第一预定数值范围之内、并基于所述冲突概率确定。
21.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-10中任一项的所述的方法。
22.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-10中任一项所述的方法。
CN202110692747.8A 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置 Pending CN113421073A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110692747.8A CN113421073A (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110692747.8A CN113421073A (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置
CN201910818227.XA CN110648124B (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201910818227.XA Division CN110648124B (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置

Publications (1)

Publication Number Publication Date
CN113421073A true CN113421073A (zh) 2021-09-21

Family

ID=68991382

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110692747.8A Pending CN113421073A (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置
CN201910818227.XA Active CN110648124B (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910818227.XA Active CN110648124B (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置

Country Status (3)

Country Link
CN (2) CN113421073A (zh)
TW (1) TWI759708B (zh)
WO (1) WO2021036260A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113421073A (zh) * 2019-08-30 2021-09-21 创新先进技术有限公司 在区块链中并发执行交易的方法和装置
CN112991061B (zh) * 2020-10-28 2023-06-09 支付宝(杭州)信息技术有限公司 在区块链中并发执行交易的方法和装置
CN113127212B (zh) * 2020-12-04 2024-03-29 支付宝(杭州)信息技术有限公司 一种在区块链中处理交易的方法和装置
CN113656507B (zh) * 2021-08-26 2024-03-08 支付宝(杭州)信息技术有限公司 区块链系统中执行交易的方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
US20150113244A1 (en) * 2013-10-18 2015-04-23 Alibaba Group Holding Limited Concurrently accessing memory
US20180329900A1 (en) * 2015-11-19 2018-11-15 Entit Software Llc Prediction models for concurrency control types
CN109784930A (zh) * 2019-02-18 2019-05-21 深圳市网心科技有限公司 一种区块链交易数据的处理方法、装置、电子设备及介质
CN110163609A (zh) * 2019-05-28 2019-08-23 深圳前海微众银行股份有限公司 一种区块链中数据处理方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160098723A1 (en) * 2014-10-01 2016-04-07 The Filing Cabinet, LLC System and method for block-chain verification of goods
US20180158034A1 (en) * 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability
US10762479B2 (en) * 2017-04-05 2020-09-01 Samsung Sds Co., Ltd. Method and system for processing blockchain-based real-time transaction
CN107688999B (zh) * 2017-08-11 2020-11-13 杭州溪塔科技有限公司 一种基于区块链的并行交易执行方法
CN109636592B (zh) * 2017-10-20 2023-02-28 北京航空航天大学 高性能智能合约设计
CN108874372B (zh) * 2018-06-20 2020-01-24 北京连琪科技有限公司 一种基于Scala的区块链合约实现方法及系统
CN112232817A (zh) * 2018-10-25 2021-01-15 创新先进技术有限公司 基于区块链的交易处理方法及装置、电子设备
CN109508337A (zh) * 2018-11-12 2019-03-22 杭州秘猿科技有限公司 一种交易并行执行方法、装置、电子设备及系统
CN110135985B (zh) * 2019-04-04 2021-07-27 杭州抖音科技有限公司 一种区块链上交易的并行执行方法及系统
CN113421073A (zh) * 2019-08-30 2021-09-21 创新先进技术有限公司 在区块链中并发执行交易的方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
US20150113244A1 (en) * 2013-10-18 2015-04-23 Alibaba Group Holding Limited Concurrently accessing memory
CN104572506A (zh) * 2013-10-18 2015-04-29 阿里巴巴集团控股有限公司 一种并发访问内存的方法及装置
US20180329900A1 (en) * 2015-11-19 2018-11-15 Entit Software Llc Prediction models for concurrency control types
CN109784930A (zh) * 2019-02-18 2019-05-21 深圳市网心科技有限公司 一种区块链交易数据的处理方法、装置、电子设备及介质
CN110163609A (zh) * 2019-05-28 2019-08-23 深圳前海微众银行股份有限公司 一种区块链中数据处理方法及装置

Also Published As

Publication number Publication date
WO2021036260A1 (zh) 2021-03-04
TW202109292A (zh) 2021-03-01
CN110648124B (zh) 2021-06-29
TWI759708B (zh) 2022-04-01
CN110648124A (zh) 2020-01-03

Similar Documents

Publication Publication Date Title
CN110648124B (zh) 在区块链中并发执行交易的方法和装置
CN110675255B (zh) 在区块链中并发执行交易的方法和装置
JP5379711B2 (ja) データ構造に対し並列に実行される複数の動作を含む、実行履歴の正しさを検証するためのコンピュータ実装方法、システム及びコンピュータ・プログラム
US20180158034A1 (en) Dynamic reordering of blockchain transactions to optimize performance and scalability
CN110704112B (zh) 在区块链中并发执行交易的方法和装置
CN110706101B (zh) 在区块链中并发执行交易的方法和装置
CN113743950A (zh) 在区块链中执行交易的方法、区块链节点和区块链
CN113743943B (zh) 在区块链中执行交易的方法、区块链、主节点和从节点
CN110689344B (zh) 在区块链中并发执行交易的方法和装置
CN110706108B (zh) 在区块链中并发执行交易的方法和装置
Peng et al. FA-Stack: A fast array-based stack with wait-free progress guarantee
CN111767337B (zh) 区块的验证方法、装置及设备
Aguilera et al. The mailbox problem
Groves et al. Trace-based derivation of a scalable lock-free stack algorithm
US20090064141A1 (en) Efficient utilization of transactions in computing tasks
CN112561695B (zh) 在区块链中并发执行交易的方法和装置
CN115203218A (zh) 解决区块链节点并行化处理交易时共识不一致问题的方法
Szekeres Designing Storage and Privacy-Preserving Systems for Large-Scale Cloud Applications
Groves Trace-based derivation of a lock-free queue algorithm
CN116450316A (zh) 交易并行处理的方法、装置、电子设备和存储介质
Gramoli et al. Optimism for boosting concurrency
Lohstroh Theory and Application of Multithreading The Actor Model
Lamport et al. The Mailbox Problem
Al-Bataineh et al. Verifying real-time commit protocols using dense-time model checking technology

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