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

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

Info

Publication number
CN110675255A
CN110675255A CN201910816517.0A CN201910816517A CN110675255A CN 110675255 A CN110675255 A CN 110675255A CN 201910816517 A CN201910816517 A CN 201910816517A CN 110675255 A CN110675255 A CN 110675255A
Authority
CN
China
Prior art keywords
transaction
task
processed
buffer
variable
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.)
Granted
Application number
CN201910816517.0A
Other languages
English (en)
Other versions
CN110675255B (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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202110546251.XA priority Critical patent/CN113139873A/zh
Priority to CN201910816517.0A priority patent/CN110675255B/zh
Publication of CN110675255A publication Critical patent/CN110675255A/zh
Priority to TW109110265A priority patent/TWI733390B/zh
Priority to PCT/CN2020/082690 priority patent/WO2021036258A1/zh
Application granted granted Critical
Publication of CN110675255B publication Critical patent/CN110675255B/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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Abstract

本说明书实施例提供了一种在区块链中并发执行交易的方法和装置,所述方法在区块链中的第一节点执行,第一节点中预设有第一执行体,第一执行体当前在处理第一交易,所述方法由第一执行体执行,包括:在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,以相对于所述第一交易进入等待过程,所述预定内存仅可由第一执行体访问;对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务;以及在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务,其中,所述多个待处理任务中包括所述第二待处理任务。

Description

在区块链中并发执行交易的方法和装置
技术领域
本说明书实施例涉及区块链技术领域,更具体地,涉及一种在区块链中并发执行交易的方法和装置。
背景技术
区块链技术是构建在点对点(P2P)网络上,利用链式数据结构来验证与存储数据,利用分布式节点共识算法来生成和更新数据,利用密码学的方式保证数据传输和访问的安全,利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。区块链技术也被称之为分布式账本技术,是一种去中心化的分布式数据库技术,其特点是去中心化、公开透明、不可篡改、可信任。区块链的每笔数据,都会广播到全网的区块链节点,每个全节点都有全量的、一致的数据。区块链中的节点通过发送交易而进行转账、存入数据等业务,区块链中的记账节点在交易池中收集区块链中的交易,执行所述交易,并在执行所述交易之后,将这些交易打包到区块中并扩散到区块链中。区块链中的验证节点会对从记账节点发出的区块进行验证,在验证通过之后,每个节点在接收到该区块时,都会执行该区块中包括的每个交易。为了保证各个节点的数据一致性,各个节点中在执行区块中的多个交易时,对该多个交易的提交顺序需要是一致的,这样才能得到一致的执行结果。因此,在现有技术中,记账节点在执行交易之前会按照预定规则对将要执行的多个交易进行编号,并按照编号的顺序依次执行多个交易,也即依次提交多个交易,并且其它节点在接收到该区块之后,也是按照上述交易编号顺序依次执行并提交所述多个交易。然而,所述多个交易并不一定都是相互依赖的,在两个交易之间不存在依赖性的情况中,并发执行这两个交易并不影响最终的结果。而如果并发执行的两个交易存在依赖性,则该并发执行将影响到最终的结果。
因此,需要一种更有效的在区块链中并发执行多个交易的方法。
发明内容
本说明书实施例旨在提供一种更有效的并发执行交易的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种在区块链中并发执行交易的方法,所述方法在区块链中的第一节点执行,所述第一节点中预设有第一执行体,所述第一执行体当前在处理第一交易,所述方法由所述第一执行体执行,包括:
在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,以相对于所述第一交易进入等待过程,所述预定内存仅可由所述第一执行体访问;
对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务;以及
在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务,其中,所述多个待处理任务中包括所述第二待处理任务。
在一个实施例中,所述方法还包括,在确定所述多个待处理任务各自的等待过程都未结束的情况中,从共享内存中的第一缓冲区获取待处理的第二交易,并开始执行所述第二交易。
在一个实施例中,所述预定内存中包括第二缓冲区,其中,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在处理完成第一交易之后,在确定第二交易未提交的情况中,在所述第二缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第二交易根据预定提交顺序为所述第一交易的前一个交易。
在一个实施例中,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,基于共享内存中记录的当前应提交的交易,确定所述第二缓冲区中对应于最小交易编号的待处理任务的等待过程是否结束,以确定所述第二缓冲区中是否存在等待过程结束的待处理任务,其中,所述交易编号对应于交易的提交顺序。
在一个实施例中,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务包括,在确定所述第二缓冲区中的第二待处理任务的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行对第三交易的提交,其中所述第二待处理任务与所述第三交易相对应。
在一个实施例中,所述预定内存中包括第三缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在请求对所述第一变量的读取之后,在所述第三缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对所述第一变量的记录。
在一个实施例中,所述第三缓冲区中包括所述第二待处理任务,所述第二待处理任务与第二交易中对第二变量的读取操作相对应,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,确定所述第二变量的变量值是否被返回,在确定所述第二变量的变量值被返回的情况中,确定该第二待处理任务的等待过程结束。
在一个实施例中,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,对于所述第三缓冲区中已经记录的多个待处理任务,基于各个待处理任务对应的交易编号从小至大的顺序,依次确定各个待处理任务的等待过程是否结束,其中,所述第二待处理任务为首次确定的等待过程结束的待处理任务,其中,所述交易编号对应于交易的预定提交顺序。
在一个实施例中,确定所述第二变量的变量值是否被返回包括,基于在预定地址是否存储有第二变量的变量值,确定所述第二变量的变量值是否被返回,其中,所述预定地址与所述第一执行体和所述第二交易相对应。
在一个实施例中,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务包括,在确定所述第三缓冲区中存在等待过程结束的第二待处理任务的情况中,基于与所述第二待处理任务对应的执行信息和所述第二变量的变量值,继续执行所述第二交易。
在一个实施例中,所述预定内存中包括第四缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在执行到所述读取操作的代码之后,确定提交顺序在第一交易之前、且未提交的各个交易是否为已执行了对第一变量的写操作的冲突交易,所述各个交易中包括第二交易,在确定所述第二交易为距离第一交易最近的冲突交易的情况中,在第四缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。
在一个实施例中,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,基于共享内存中记录的当前应提交的交易,确定在所述第四缓冲区中记录的多个待处理任务中是否存在等待过程结束的待处理任务。
在一个实施例中,所述预定内存中包括第五缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在执行到所述读取操作的代码之后,推断提交顺序在第一交易之前、且未提交的各个交易是否为将要对第一变量进行写操作的冲突交易,所述各个交易中包括第二交易,在推断所述第二交易为距离第一交易最近的冲突交易的情况中,在所述第五缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。
在一个实施例中,所述预定内存中包括至少一个缓冲区,所述至少一个缓冲区与至少一种待处理任务分别对应,其中,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,基于所述至少一个缓冲区的预定顺序,确定各个缓冲区中是否存在等待过程结束的待处理任务。
本说明书另一方面提供一种在区块链中并发执行交易的装置,所述装置部署在区块链中的第一节点的第一执行体中,所述第一节点中预设有第一执行体,所述第一执行体当前在处理第一交易,所述装置包括:
记录单元,配置为,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,以相对于所述第一交易进入等待过程,所述预定内存仅可由所述第一执行体访问;
确定单元,配置为,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务;以及
继续执行单元,配置为,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务,其中,所述多个待处理任务中包括所述第二待处理任务。
在一个实施例中,所述装置还包括,交易执行单元,配置为,在确定所述多个待处理任务各自的等待过程都未结束的情况中,从共享内存中的第一缓冲区获取待处理的第二交易,并开始执行所述第二交易。
在一个实施例中,所述预定内存中包括第二缓冲区,其中,所述记录单元还配置为,在处理完成第一交易之后,在确定第二交易未提交的情况中,在所述第二缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第二交易根据预定提交顺序为所述第一交易的前一个交易。
在一个实施例中,所述确定单元还配置为,基于共享内存中记录的当前应提交的交易,确定所述第二缓冲区中对应于最小交易编号的待处理任务的等待过程是否结束,以确定所述第二缓冲区中是否存在等待过程结束的待处理任务,其中,所述交易编号对应于交易的提交顺序。
在一个实施例中,所述继续执行单元还配置为,在确定所述第二缓冲区中存在等待过程结束的第二待处理任务的情况中,基于与所述第二待处理任务对应的执行信息,继续执行对第三交易的提交,其中所述第二待处理任务与所述第三交易相对应。
在一个实施例中,所述预定内存中包括第三缓冲区,所述第一交易中包括对第一变量的读取操作,其中,所述记录单元还配置为,在请求对所述第一变量的读取之后,在所述第三缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对所述第一变量的记录。
在一个实施例中,所述第三缓冲区中包括所述第二待处理任务,所述第二待处理任务与第二交易中对第二变量的读取操作相对应,所述确定单元还配置为,确定所述第二变量的变量值是否被返回,在确定所述第二变量的变量值被返回的情况中,确定该第二待处理任务的等待过程结束。
在一个实施例中,对于所述预定内存中已经记录的多个待处理任务,所述确定单元还配置为,对于所述第三缓冲区中已经记录的多个待处理任务,基于各个待处理任务对应的交易编号从小至大的顺序,依次确定各个待处理任务的等待过程是否结束,其中,所述第二待处理任务为首次确定的等待过程结束的待处理任务,其中,所述交易编号对应于交易的预定提交顺序。
在一个实施例中,所述确定单元还配置为,基于在预定地址是否存储有第二变量的变量值,确定所述第二变量的变量值是否被返回,其中,所述预定地址与所述第一执行体和所述第二交易相对应。
在一个实施例中,所述继续执行单元还配置为,在确定所述第三缓冲区中存在等待过程结束的第二待处理任务的情况中,基于与所述第二待处理任务对应的执行信息和所述第二变量的变量值,继续执行所述第二交易。
在一个实施例中,所述预定内存中包括第四缓冲区,所述第一交易中包括对第一变量的读取操作,其中,所述记录单元还配置为,在执行到所述读取操作的代码之后,确定提交顺序在第一交易之前、且未提交的各个交易是否为已执行了对第一变量的写操作的冲突交易,所述各个交易中包括第二交易,在确定所述第二交易为距离第一交易最近的冲突交易的情况中,在第四缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。
在一个实施例中,所述确定单元还配置为,基于共享内存中记录的当前应提交的交易,确定在所述第四缓冲区中记录的多个待处理任务中是否存在等待过程结束的待处理任务。
在一个实施例中,所述预定内存中包括第五缓冲区,所述第一交易中包括对第一变量的读取操作,其中,所述记录单元还配置为,在执行到所述读取操作的代码之后,推断提交顺序在第一交易之前、且未提交的各个交易是否为将要对第一变量进行写操作的冲突交易,所述各个交易中包括第二交易,在推断所述第二交易为距离第一交易最近的冲突交易的情况中,在所述第五缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。
在一个实施例中,所述预定内存中包括至少一个缓冲区,所述至少一个缓冲区与至少一种待处理任务分别对应,其中,所述确定单元还配置为,基于所述至少一个缓冲区的预定顺序,确定各个缓冲区中是否存在等待过程结束的待处理任务。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过根据本说明书实施例的并发执行交易的方案,在执行体执行交易过程中需要等待时暂停对该交易的处理,记录对该交易的处理信息,并从缓冲区中获取该执行体其它待处理任务进行处理,在等待过程结束之后,所述执行体将继续执行该交易,从而减少了执行体的等待时间,加快了交易并发执行的总体速度。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示出根据本说明书实施例的区块链系统示意图;
图2示出在区块链中各个节点通过多个线程并发执行交易的示意图;
图3示出根据本说明书一个实施例的一种在区块链中并发执行交易的方法流程图;
图4示出根据本说明书一个实施例的一种在区块链中并发执行交易的装置400。
具体实施方式
下面将结合附图描述本说明书实施例。
图1示出根据本说明书实施例的区块链系统示意图。如图1所示,所述系统中包括构成区块链的多个节点(图中示意示出6个节点),这些节点两两相连,其中例如包括节点11、节点12和节点13。如本领域技术人员所知,在区块链中,一些节点会收集区块链中的多个交易放入交易池中并竞争记账权。例如图中的节点11通过获取记账权而成为记账节点。节点11在成为记账节点之后会执行其交易池中的多个交易,并将该多个交易打包成区块发送给其它节点,例如发送给节点12。节点12将会对该区块进行验证,并同样地执行该区块中的多个交易。在预定数目个节点对该区块进行验证之后,也即对该区块达到了共识,区块链中的其它节点(例如节点13)将不需要继续对该区块进行验证,而是直接对该区块中的交易进行执行,以更新本地的相关数据。
图2示出在区块链中各个节点通过多个线程并发执行交易的示意图。可以理解,所述线程也可以替换为进程、协程等执行体。如图2中所示,在每个节点中,通常,CPU的数目是有限的,预设的线程的数目也是固定的,例如,假设该节点的CPU数为4个,线程池中预设的线程数目为6个,从而6个线程竞争抢占CPU,并且只有在抢占到CPU之后,才能开始执行任务池中的任务。
在多个线程并发执行多个交易的过程中,所述多个交易中可能涉及到对多个变量的计算,在两个交易中不涉及相同的变量的情况中,其执行顺序并不会影响最终的计算结果,而在两个交易中涉及相同的变量的情况中,其执行顺序将会影响最终的计算结果。在本说明书实施例中,为了保证各个节点对多个交易的执行结果是相同的,在并发执行多个交易的同时,考虑交易之间对访问变量的冲突,从而使得并行执行的线程中的一些线程需要经过等待过程。或者在等待返回访问存储时需要进行等待。
如图2中所示,该图中包括第一节点的共享内存,该共享内存中例如包括用于指示待处理交易的缓冲区1,该共享内存是相对于全部线程可读写的。例如,第一缓冲区中当前记录了10个待处理的交易1、2、…10,其中,图中数字1、2、…、10对应的位框中初始应都为1,表示,其都是待处理的交易,其中,交易1~10的编号对应于各个交易的提交顺序。在开始并发执行交易之后,例如,线程1~4分别抢占到CPU1~4,从而,线程1~4可分别从第一缓冲区中获取一个任务进行处理,例如,线程1~4分别开始处理交易1~4,线程1~4在开始处理交易1~4之后,分别将第一缓冲区中交易1~4对应的位分别修改为0,以表示这些交易已经开始执行。可以理解,虽然图中示意示出,线程1抢占到CPU1,并执行交易1,线程2抢占到CPU2,并执行交易2等等,可以理解,图中所示内容仅是为了示意说明,线程的编号、CPU的编号和交易的编号并不是相互对应的,例如,线程1有可能抢占到CPU2,执行交易3等等。
图2中还示出了仅分配给线程3的预定内存,该预定内存中可包括多个缓冲区,其中,每个缓冲区与一种等待过程相对应。例如,图2中示意示出了预定内存中的四个缓冲区,缓冲区2~5,例如,缓冲区2与执行完交易等待提交的等待过程相对应,缓冲区3与请求读取以等待返回变量值的等待过程相对应,缓冲区4与在读取前基于变量写入记录等待在前交易提交的等待过程相对应,缓冲区5与在读取前基于交易冲突概率等待在前交易提交或写入的等待过程相对应。在本说明书实施例中,为了并发执行交易,执行交易的过程包括处理交易的过程和提交交易的过程,其中,所述处理交易的过程是将处理交易的结果存储到与该交易对应的缓冲区中,所述提交交易的过程是将最终的处理结果存储到各个交易共用的共享内存中。例如,当线程3处理完交易3之后,为了保证执行各个交易的最终结果一致,需要保证各个交易按照其编号顺序先后提交,因此,交易3需要等待前面的交易2提交之后再提交。在该情况中,线程3在缓冲区2中与交易3对应的位置进行记录,例如将初始的0改为1,然后,线程3到缓冲区中去获取新的任务。例如,线程3可首先检查缓冲区2中有没有等待过程结束的任务。图2中的共享内存中还记录了当前交易窗口,该当前交易窗口例如可由提交完交易的线程进行维护。例如,线程1在提交了交易1之后,可将该交易窗口中的首交易修改为2。从而交易窗口在待提交的多个交易中向后移动一位,当线程根据窗口首位而开始执行一个新交易(例如交易7)时,可将交易窗口中的末交易由6更新为7。在此时,例如,线程3在检查缓冲区2之后,可首先基于所述窗口确定交易2是否为当前应提交的交易。在缓冲区2中没有等待过程结束的任务的情况中,可以检查缓冲区3中有没有等待过程结束的任务,等等。在缓冲区2~5中都没有等待过程结束的任务的情况中,则可以从缓冲区1中获取待处理的交易,例如交易5。线程3当在执行交易5的过程中也遇到等待过程时,也将到缓冲区2~5中的相应的一个中记录下相应的待处理任务,例如,如图中右侧虚线箭头所示,线程3在缓冲区4中记录与交易5对应的待处理任务。然后,类似地,线程3首先在缓冲区2~5确定有没有等待过程结束的待处理任务。例如,线程3在执行交易3时在缓冲区2中记录了与交易3对应的待处理任务,则线程3基于共享内存中的窗口参数确定该交易3是否为当前应提交的交易,当窗口中的左边字节显示“3”时,则表示交易3为当前应提交的交易,即,缓冲区2中记录的与交易3对应的待处理任务为等待过程结束的任务。从而,线程3可以在预定内存中存储交易执行信息的缓冲区(未示出)中获取交易3的执行信息,并基于该执行信息继续执行交易3。
可以理解,上文对图2的描述只是示意性地,而不是用于限制本说明书实施例的范围。例如,所述缓冲区1~5的具体形式不一定为图中所示形式,只要其能记录下相应的信息即可。下文将详细描述上述并发执行交易的过程。
图3示出根据本说明书一个实施例的一种在区块链中并发执行交易的方法流程图,所述方法在区块链中的第一节点执行,所述第一节点中预设有第一执行体,所述第一执行体当前在处理第一交易,所述方法由所述第一执行体执行,包括:
步骤S302,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,以相对于所述第一交易进入等待过程,所述预定内存仅可由所述第一执行体访问;
步骤S304,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务;以及
步骤S306,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务,其中,所述多个待处理任务中包括所述第二待处理任务。
首先,在步骤S302,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,以相对于所述第一交易进入等待过程,所述预定内存仅可由所述第一执行体访问。
如上文中参考图2所述,所述第一执行体例如可以为线程、进程、协程等执行主体。下文中将以线程为例进行说明。
在节点中并发执行交易的过程中,对于其中一个正在执行的交易,可能会包括多个等待过程,所述等待过程可能是由于不同的原因引起的。
在一个实施例中,如上文中参考图2中所述,所述多个并发执行的交易已经预设了预定的提交顺序,例如图2中的交易1~10必须按照其编号的从小到大的顺序进行先后提交,以保证各个节点对该多个交易的执行结果是相同的。这里,在节点中,线程在执行交易时,将处理结果先保存到仅与该交易对应的缓冲区中,而在提交之后,才将该执行结果保存到各个交易共用的共享内存中。例如,在处理第一交易的过程中,需要对第一变量进行写操作,则在仅与第一交易对应的缓冲区中先保存该写操作之后的第一变量的值,该值仅在处理该第一交易时可以使用,在处理其它交易时并不会对该值进行读写。而在提交第一交易之后,第一交易的值被存到共享内存中,其它交易也可以读取到该值,或者通过提交对该值进行修改。
由于各个交易具有预定的提交顺序,因此,如图2中所示,例如所述第一交易为图2中的交易5,则第一执行体为图中的线程3。如果线程3在处理完交易5之后,交易5之前的交易还未提交,此时,线程3需要等待交易4提交完成之后才能进行对交易5的提交。这里,线程3可基于共享内存中预设的交易窗口参数确定交易4是否提交。通过该交易窗口控制可同时并发执行的交易的最大总数,该交易窗口的两边分别是当前并发执行的编号最小的交易和编号最大的交易,例如图2中的1和6表示当前并发执行的交易为交易1~6。通过确定交易4是否为交易窗口中的首交易,从而确定交易4当前是否应提交。在该情况中,线程3可如图2中所示,将与线程3对应的预定内存中的缓冲区2中的与交易5对应的位修改为1,以添加一个与交易5对应的待处理任务,该待处理任务只有等到交易4提交之后才可以由线程3继续执行,同时,可将与该待处理任务对应的执行信息,也即交易5的当前处理信息存储到该预定内存中的例如与各个交易分别对应的执行信息缓冲区中。
在一个实施例中,交易5中包括对变量k1的读取操作,线程3在开始执行该读取操作的代码之后,向用于读取变量的硬件或线程发出对变量k1的读取请求,之后在图2中所示的例如与线程3对应的预定内存中的缓冲区3中的与交易5对应的字节中记录“k1”,以添加一个与交易5对应的待处理任务,该待处理任务在等到变量k1的值返回之后才可以由线程3继续执行。
在一个实施例中,交易5中包括对变量k1的读取操作,线程3在开始执行该读取操作的代码之后,查询共享内存中的写入缓冲区,该写入缓冲区中记录了当前对各个交易的处理过程中对各个变量(包括变量k1)的写入情况。例如,写入缓冲区中仅记录了交易2对变量k1进行了写入,未记录交易3和4对变量k1的写入。由于,基于该记录,交易2在提交之后将改变共享内存中的变量表中的k1的值,因此,交易5需要在等待交易2提交之后再读取该变量k1的值,否则将读取错误的k1的值。线程3在进行该对写入缓冲区的查询之后,在图2中的与线程3对应的预定内存中的缓冲区3中的与交易5对应的字节中记录“2”,以添加一个与交易5对应的待处理任务,所述“2”与交易2相对应,表示该待处理任务在等到交易2提交之后才可以由线程3继续执行。
在一个实施例中,交易5中包括对变量k1的读取操作。线程3在开始执行该读取操作的代码之后,推断正在并发执行的多个交易中提交顺序在交易5之前的各个交易(例如图2中的交易1~4)是否将要对变量k1进行写操作。在一种方法中,可预先基于该节点中的交易执行历史,确定各个变量的交易冲突概率,当变量k1的交易冲突概率大于预定阈值时,则可推断交易1~4都将要对变量k1进行写操作,从而,需要等交易4提交之后,再进行交易5中的读取操作,如果交易4在处理过程中将对k1的写入值写入共享内存中与交易4对应的缓冲区(该缓冲区不是与各个交易对应的变量表)中,则可等待交易4执行完对k1的写入后,进行对k1的读取。在一种方法中,线程3可基于交易5前面各个交易的交易数据,确定交易5与前面各个交易的冲突概率,并基于该冲突概率,推断所述各个交易是否将要对k1进行写操作,从而确定是否等待该交易的提交或写入。例如,在确定交易2对k1的写入概率大于等于预定阈值、且交易3~4对k1的写入概率小于预定阈值的情况中,线程3在图2中的缓冲区5中与交易5对应的字节中记录“2”,以记录一个与交易5对应的待执行任务,该待执行任务只有等到交易2提交或写入之后才可以由线程3继续执行。
上文虽然列举了四种等待情况,然而,本说明书实施例中的等待情况不限于上述四种情况,而是可以为任意由预定操作触发的等待情况。
在步骤S304,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务。
如上文中所述,所述预定内存中包括缓冲区2~5,其中分别记录了不同类型的待处理任务。例如,线程3在通过上述步骤S302在预定内存中存入与交易5对应的第一待处理任务之后,线程3以预定顺序检查预定内存中的缓冲区2~5,以获取其中的等待过程结束的待处理任务。可以理解,在图2中,所述缓冲区2~5中的待处理任务都是由线程3记录的待处理任务。
例如,首先,线程3可首先检查缓冲区2。如上文所述,缓冲区2中记录的各个待处理任务与处理完成等待提交的交易相对应。例如,如图2所示,在缓冲区2中,可确定对应位为1的最小交易为交易3,线程3可基于共享内存中的交易窗口确定当前应提交的交易是否为交易3,如果当前应提交的交易为交易3,则表示与交易3对应的该待处理任务等待过程结束,线程3可从预定内存中的用于存储交易执行信息的缓冲区中获取与交易3对应的执行信息,并基于该执行信息继续执行交易3,即进行对交易3的提交。
在线程3在缓冲区2中没有发现等待过程结束的待处理任务的情况中,线程3例如可检查缓冲区3。如上文所述,缓冲区3中记录的各个待处理任务都在等待相应变量值的返回。例如,缓冲区3中的与交易3对应的字节记录有“k2”,则表示交易3在等待变量k2的值的返回。线程3可从与交易3对应的预定地址中确定是否已写入k2的值,在k2的值被写入的情况中,则表示与交易3对应的该待处理任务的等待过程结束,其中,所述预定地址与线程3和交易3相对应。其中,该k2的值可由执行读取操作的其它线程在该地址写入,在该情况中,该地址例如可以为可由线程3和该其它线程写入的地址,或者k2的值可由执行读取操作的其它线程发送给线程3,并由线程3在该地址写入,在该情况中,该地址例如为预定内存中的一个地址。在确定k2的值未被写入的情况中,可对交易3之后的待处理任务确定等待过程是否结束。例如,交易5对应的字节中记录了“k1”,则可在与交易5对应的预定地址确定是否已写入k1的值。
在线程3在缓冲区2和3中都没有发现等待过程结束的待处理任务的情况中,线程3例如可检查缓冲区4。如上文所述,缓冲区4中记录的待处理任务对应于基于写入情况等待其它交易提交以进行读取操作的交易。与检查缓冲区2类似地,线程3可基于共享内存中的交易窗口,确定例如交易3等待的交易1是否提交,在确定交易1提交的情况中,则与交易3对应的待处理任务等待过程结束。
在线程3在缓冲区2~4都没有发现等待过程结束的待处理任务的情况中,线程3例如可检查缓冲区5。如上文所述,缓冲区5中记录的待处理任务对应于基于冲突概率等待其它交易提交或写入以进行读取操作的交易。线程3可类似地确定交易3等待的交易1是否提交,或者可基于交易1在处理过程中在共享内存中写入的变量值,确定与交易3对应的待处理任务的等待过程是否结束。
可以理解,上述预定内存中包括的缓冲区2~5仅仅是示意性地,而不是限制性的,上述检查缓冲区的顺序仅是示意性地,而不是限制性,在具体实施中,可根据场景的需要设置缓冲区、以及检查缓冲区的顺序。
在一个实施例中,在缓冲区2~5中都未检查到等待过程结束的待处理任务的情况中,线程3可检查图2中所示的共享内存中的缓冲区1,该缓冲区1中记录了待处理的交易,从而,线程3可以从该缓冲区1中获取编号最小的待处理交易(例如交易6),并开始执行该交易。
在步骤S306,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务,其中,所述多个待处理任务中包括所述第二待处理任务。
在一个实施例中,线程3在缓冲区2中获取第二待处理任务,则线程3基于对应的执行信息,继续执行对该第二待处理任务对应的交易的提交。线程3在确定该第二待处理任务的等待过程结束之后,将缓冲区中相应的第二待处理任务去除,例如将缓冲区2中的第二待处理任务对应的“1”修改为0。
在一个实施例中,线程3在缓冲区3中获取第二待处理任务,则线程3基于相应的执行信息和相应的变量的值,继续执行相应的交易中读取操作后面的操作。
在一个实施例中,线程3在缓冲区4中获取第二待处理任务,则线程3基于相应的执行信息,继续执行相应的交易中的相应读取操作。
在一个实施例中,线程3在缓冲区5中获取第二待处理任务,则线程3基于相应的执行信息,继续执行相应的交易中的相应读取操作。
图4示出根据本说明书一个实施例的一种在区块链中并发执行交易的装置400,所述装置部署在区块链中的第一节点的第一执行体中,所述第一节点中预设有第一执行体,所述第一执行体当前在处理第一交易,所述装置包括:
记录单元41,配置为,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,以相对于所述第一交易进入等待过程,所述预定内存仅可由所述第一执行体访问;
确定单元42,配置为,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务;以及
继续执行单元43,配置为,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务,其中,所述多个待处理任务中包括所述第二待处理任务。
在一个实施例中,所述装置还包括,交易执行单元44,配置为,在确定所述多个待处理任务各自的等待过程都未结束的情况中,从共享内存中的第一缓冲区获取待处理的第二交易,并开始执行所述第二交易。
在一个实施例中,所述预定内存中包括第二缓冲区,所述记录单元41还配置为,在处理完成第一交易之后,在确定第二交易未提交的情况中,在所述第二缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第二交易根据预定提交顺序为所述第一交易的前一个交易。
在一个实施例中,所述确定单元42还配置为,基于共享内存中记录的当前应提交的交易,确定所述第二缓冲区中对应于最小交易编号的待处理任务的等待过程是否结束,以确定所述第二缓冲区中是否存在等待过程结束的待处理任务,其中,所述交易编号对应于交易的提交顺序。
在一个实施例中,所述继续执行单元43还配置为,在确定所述第二缓冲区中存在等待过程结束的第二待处理任务的情况中,基于与所述第二待处理任务对应的执行信息,继续执行对第三交易的提交,其中所述第二待处理任务与所述第三交易相对应。
在一个实施例中,所述预定内存中包括第三缓冲区,所述第一交易中包括对第一变量的读取操作,其中,所述记录单元41还配置为,在请求对所述第一变量的读取之后,在所述第三缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对所述第一变量的记录。
在一个实施例中,所述第三缓冲区中包括所述第二待处理任务,所述第二待处理任务与第二交易中对第二变量的读取操作相对应,所述确定单元42还配置为,确定所述第二变量的变量值是否被返回,在确定所述第二变量的变量值被返回的情况中,确定该第二待处理任务的等待过程结束。
在一个实施例中,对于所述预定内存中已经记录的多个待处理任务,所述确定单元42还配置为,对于所述第三缓冲区中已经记录的多个待处理任务,基于各个待处理任务对应的交易编号从小至大的顺序,依次确定各个待处理任务的等待过程是否结束,其中,所述第二待处理任务为首次确定的等待过程结束的待处理任务,其中,所述交易编号对应于交易的预定提交顺序。
在一个实施例中,所述确定单元42还配置为,基于在预定地址是否存储有第二变量的变量值,确定所述第二变量的变量值是否被返回,其中,所述预定地址与所述第一执行体和所述第二交易相对应。
在一个实施例中,所述继续执行单元43还配置为,在确定所述第三缓冲区中存在等待过程结束的第二待处理任务的情况中,基于与所述第二待处理任务对应的执行信息和所述第二变量的变量值,继续执行所述第二交易。
在一个实施例中,所述预定内存中包括第四缓冲区,所述第一交易中包括对第一变量的读取操作,其中,所述记录单元41还配置为,在执行到所述读取操作的代码之后,确定提交顺序在第一交易之前、且未提交的各个交易是否为已执行了对第一变量的写操作的冲突交易,所述各个交易中包括第二交易,在确定所述第二交易为距离第一交易最近的冲突交易的情况中,在第四缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。
在一个实施例中,所述确定单元42还配置为,基于共享内存中记录的当前应提交的交易,确定在所述第四缓冲区中记录的多个待处理任务中是否存在等待过程结束的待处理任务。
在一个实施例中,所述预定内存中包括第五缓冲区,所述第一交易中包括对第一变量的读取操作,其中,所述记录单元41还配置为,在执行到所述读取操作的代码之后,推断提交顺序在第一交易之前、且未提交的各个交易是否为将要对第一变量进行写操作的冲突交易,所述各个交易中包括第二交易,在推断所述第二交易为距离第一交易最近的冲突交易的情况中,在所述第五缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。
在一个实施例中,所述预定内存中包括至少一个缓冲区,所述至少一个缓冲区与至少一种待处理任务分别对应,其中,所述确定单元42还配置为,基于所述至少一个缓冲区的预定顺序,确定各个缓冲区中是否存在等待过程结束的待处理任务。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过根据本说明书实施例的并发执行交易的方案,在执行体执行交易过程中需要等待时暂停对该交易的处理,而从缓冲区中获取该执行体其它待处理任务进行处理,在等待过程结束之后,所述执行体将继续执行该交易,从而减少了执行体的等待时间,加快了交易并发执行的总体速度。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执轨道,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执轨道的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (30)

1.一种在区块链中并发执行交易的方法,所述方法在区块链中的第一节点执行,所述第一节点中预设有第一执行体,所述第一执行体当前在处理第一交易,所述方法由所述第一执行体执行,包括:
在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,以相对于所述第一交易进入等待过程,所述预定内存仅可由所述第一执行体访问;
对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务;以及
在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务,其中,所述多个待处理任务中包括所述第二待处理任务。
2.根据权利要求1所述的方法,还包括,在确定所述多个待处理任务各自的等待过程都未结束的情况中,从共享内存中的第一缓冲区获取待处理的第二交易,并开始执行所述第二交易。
3.根据权利要求1所述的方法,其中,所述预定内存中包括第二缓冲区,其中,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在处理完成第一交易之后,在确定第二交易未提交的情况中,在所述第二缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第二交易根据预定提交顺序为所述第一交易的前一个交易。
4.根据权利要求3所述的方法,其中,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,基于共享内存中记录的当前应提交的交易,确定所述第二缓冲区中对应于最小交易编号的待处理任务的等待过程是否结束,以确定所述第二缓冲区中是否存在等待过程结束的待处理任务,其中,所述交易编号对应于交易的提交顺序。
5.根据权利要求4所述的方法,其中,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务包括,在确定所述第二缓冲区中的第二待处理任务的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行对第三交易的提交,其中所述第二待处理任务与所述第三交易相对应。
6.根据权利要求1所述的方法,其中,所述预定内存中包括第三缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在请求对所述第一变量的读取之后,在所述第三缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对所述第一变量的记录。
7.根据权利要求6所述的方法,其中,所述第三缓冲区中包括所述第二待处理任务,所述第二待处理任务与第二交易中对第二变量的读取操作相对应,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,确定所述第二变量的变量值是否被返回,在确定所述第二变量的变量值被返回的情况中,确定该第二待处理任务的等待过程结束。
8.根据权利要求7所述的方法,其中,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,对于所述第三缓冲区中已经记录的多个待处理任务,基于各个待处理任务对应的交易编号从小至大的顺序,依次确定各个待处理任务的等待过程是否结束,其中,所述第二待处理任务为首次确定的等待过程结束的待处理任务,其中,所述交易编号对应于交易的预定提交顺序。
9.根据权利要求7所述的方法,其中,确定所述第二变量的变量值是否被返回包括,基于在预定地址是否存储有第二变量的变量值,确定所述第二变量的变量值是否被返回,其中,所述预定地址与所述第一执行体和所述第二交易相对应。
10.根据权利要求7所述的方法,其中,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务包括,在确定所述第三缓冲区中存在等待过程结束的第二待处理任务的情况中,基于与所述第二待处理任务对应的执行信息和所述第二变量的变量值,继续执行所述第二交易。
11.根据权利要求1所述的方法,其中,所述预定内存中包括第四缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在执行到所述读取操作的代码之后,确定提交顺序在第一交易之前、且未提交的各个交易是否为已执行了对第一变量的写操作的冲突交易,所述各个交易中包括第二交易,在确定所述第二交易为距离第一交易最近的冲突交易的情况中,在第四缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。
12.根据权利要求11所述的方法,其中,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,基于共享内存中记录的当前应提交的交易,确定在所述第四缓冲区中记录的多个待处理任务中是否存在等待过程结束的待处理任务。
13.根据权利要求1所述的方法,其中,所述预定内存中包括第五缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在执行到所述读取操作的代码之后,推断提交顺序在第一交易之前、且未提交的各个交易是否为将要对第一变量进行写操作的冲突交易,所述各个交易中包括第二交易,在推断所述第二交易为距离第一交易最近的冲突交易的情况中,在所述第五缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。
14.根据权利要求1所述的方法,其中,所述预定内存中包括至少一个缓冲区,所述至少一个缓冲区与至少一种待处理任务分别对应,其中,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,基于所述至少一个缓冲区的预定顺序,确定各个缓冲区中是否存在等待过程结束的待处理任务。
15.一种在区块链中并发执行交易的装置,所述装置部署在区块链中的第一节点的第一执行体中,所述第一节点中预设有第一执行体,所述第一执行体当前在处理第一交易,所述装置包括:
记录单元,配置为,在处理第一交易的过程中进行预定操作之后,在预定内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,以相对于所述第一交易进入等待过程,所述预定内存仅可由所述第一执行体访问;
确定单元,配置为,对于所述预定内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务;以及
继续执行单元,配置为,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务,其中,所述多个待处理任务中包括所述第二待处理任务。
16.根据权利要求15所述的装置,还包括,交易执行单元,配置为,在确定所述多个待处理任务各自的等待过程都未结束的情况中,从共享内存中的第一缓冲区获取待处理的第二交易,并开始执行所述第二交易。
17.根据权利要求15所述的装置,其中,所述预定内存中包括第二缓冲区,其中,所述记录单元还配置为,在处理完成第一交易之后,在确定第二交易未提交的情况中,在所述第二缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第二交易根据预定提交顺序为所述第一交易的前一个交易。
18.根据权利要求17所述的装置,其中,所述确定单元还配置为,基于共享内存中记录的当前应提交的交易,确定所述第二缓冲区中对应于最小交易编号的待处理任务的等待过程是否结束,以确定所述第二缓冲区中是否存在等待过程结束的待处理任务,其中,所述交易编号对应于交易的提交顺序。
19.根据权利要求18所述的装置,其中,所述继续执行单元还配置为,在确定所述第二缓冲区中存在等待过程结束的第二待处理任务的情况中,基于与所述第二待处理任务对应的执行信息,继续执行对第三交易的提交,其中所述第二待处理任务与所述第三交易相对应。
20.根据权利要求15所述的装置,其中,所述预定内存中包括第三缓冲区,所述第一交易中包括对第一变量的读取操作,其中,所述记录单元还配置为,在请求对所述第一变量的读取之后,在所述第三缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对所述第一变量的记录。
21.根据权利要求20所述的装置,其中,所述第三缓冲区中包括所述第二待处理任务,所述第二待处理任务与第二交易中对第二变量的读取操作相对应,所述确定单元还配置为,确定所述第二变量的变量值是否被返回,在确定所述第二变量的变量值被返回的情况中,确定该第二待处理任务的等待过程结束。
22.根据权利要求21所述的装置,其中,对于所述预定内存中已经记录的多个待处理任务,所述确定单元还配置为,对于所述第三缓冲区中已经记录的多个待处理任务,基于各个待处理任务对应的交易编号从小至大的顺序,依次确定各个待处理任务的等待过程是否结束,其中,所述第二待处理任务为首次确定的等待过程结束的待处理任务,其中,所述交易编号对应于交易的预定提交顺序。
23.根据权利要求21所述的装置,其中,所述确定单元还配置为,基于在预定地址是否存储有第二变量的变量值,确定所述第二变量的变量值是否被返回,其中,所述预定地址与所述第一执行体和所述第二交易相对应。
24.根据权利要求21所述的装置,其中,所述继续执行单元还配置为,在确定所述第三缓冲区中存在等待过程结束的第二待处理任务的情况中,基于与所述第二待处理任务对应的执行信息和所述第二变量的变量值,继续执行所述第二交易。
25.根据权利要求15所述的装置,其中,所述预定内存中包括第四缓冲区,所述第一交易中包括对第一变量的读取操作,其中,所述记录单元还配置为,在执行到所述读取操作的代码之后,确定提交顺序在第一交易之前、且未提交的各个交易是否为已执行了对第一变量的写操作的冲突交易,所述各个交易中包括第二交易,在确定所述第二交易为距离第一交易最近的冲突交易的情况中,在第四缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。
26.根据权利要求25所述的装置,其中,所述确定单元还配置为,基于共享内存中记录的当前应提交的交易,确定在所述第四缓冲区中记录的多个待处理任务中是否存在等待过程结束的待处理任务。
27.根据权利要求15所述的装置,其中,所述预定内存中包括第五缓冲区,所述第一交易中包括对第一变量的读取操作,其中,所述记录单元还配置为,在执行到所述读取操作的代码之后,推断提交顺序在第一交易之前、且未提交的各个交易是否为将要对第一变量进行写操作的冲突交易,所述各个交易中包括第二交易,在推断所述第二交易为距离第一交易最近的冲突交易的情况中,在所述第五缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。
28.根据权利要求15所述的装置,其中,所述预定内存中包括至少一个缓冲区,所述至少一个缓冲区与至少一种待处理任务分别对应,其中,所述确定单元还配置为,基于所述至少一个缓冲区的预定顺序,确定各个缓冲区中是否存在等待过程结束的待处理任务。
29.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-14中任一项的所述的方法。
30.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-14中任一项所述的方法。
CN201910816517.0A 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置 Active CN110675255B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202110546251.XA CN113139873A (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置
CN201910816517.0A CN110675255B (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置
TW109110265A TWI733390B (zh) 2019-08-30 2020-03-26 在區塊鏈中同時執行交易的方法和裝置及電腦可讀儲存媒體與計算設備
PCT/CN2020/082690 WO2021036258A1 (zh) 2019-08-30 2020-04-01 在区块链中并发执行交易的方法和装置

Applications Claiming Priority (1)

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

Related Child Applications (1)

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

Publications (2)

Publication Number Publication Date
CN110675255A true CN110675255A (zh) 2020-01-10
CN110675255B CN110675255B (zh) 2021-04-02

Family

ID=69076486

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110546251.XA Pending CN113139873A (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置
CN201910816517.0A Active CN110675255B (zh) 2019-08-30 2019-08-30 在区块链中并发执行交易的方法和装置

Family Applications Before (1)

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

Country Status (3)

Country Link
CN (2) CN113139873A (zh)
TW (1) TWI733390B (zh)
WO (1) WO2021036258A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111047449A (zh) * 2020-03-12 2020-04-21 支付宝(杭州)信息技术有限公司 在区块链中执行交易的方法及装置
CN112001798A (zh) * 2020-10-28 2020-11-27 支付宝(杭州)信息技术有限公司 在区块链中并发执行交易的方法和装置
WO2021036258A1 (zh) * 2019-08-30 2021-03-04 创新先进技术有限公司 在区块链中并发执行交易的方法和装置
CN112668998A (zh) * 2020-12-23 2021-04-16 树根互联技术有限公司 流程实现方法、装置、系统、电子设备和可读存储介质
CN113168652A (zh) * 2020-08-03 2021-07-23 支付宝(杭州)信息技术有限公司 区块链交易处理系统和方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106406896A (zh) * 2016-09-27 2017-02-15 北京天德科技有限公司 一种并行PipeLine技术的区块链建块方法
CN107688999A (zh) * 2017-08-11 2018-02-13 杭州秘猿科技有限公司 一种基于区块链的并行交易执行方法
US20180158034A1 (en) * 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability
CN108804112A (zh) * 2018-05-22 2018-11-13 上海分布信息科技有限公司 一种区块链落账处理方法及系统
CN109636384A (zh) * 2018-10-26 2019-04-16 阿里巴巴集团控股有限公司 一种并行化执行区块链交易的方法、装置及系统
CN109784930A (zh) * 2019-02-18 2019-05-21 深圳市网心科技有限公司 一种区块链交易数据的处理方法、装置、电子设备及介质
CN110083437A (zh) * 2018-01-25 2019-08-02 北京欧链科技有限公司 处理区块链事务的方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI647636B (zh) * 2016-09-02 2019-01-11 現代財富控股有限公司 區塊鏈負載平衡系統及其方法
CN106682984B (zh) * 2016-10-27 2019-09-10 深圳壹账通智能科技有限公司 基于区块链的交易事务处理方法及系统
CN107402824B (zh) * 2017-05-31 2020-06-02 创新先进技术有限公司 一种数据处理的方法及装置
WO2019055585A1 (en) * 2017-09-12 2019-03-21 Kadena Llc PARALLEL CHAIN ARCHITECTURE FOR BLOCK CHAIN SYSTEMS
CN109614206A (zh) * 2018-10-25 2019-04-12 深圳壹账通智能科技有限公司 区块链事务处理的装置、方法及存储介质
ES2876926T3 (es) * 2018-11-07 2021-11-15 Advanced New Technologies Co Ltd Protección de datos de cadena de bloques utilizando cifrado homomórfico
CN110135985B (zh) * 2019-04-04 2021-07-27 杭州抖音科技有限公司 一种区块链上交易的并行执行方法及系统
EP3625746A4 (en) * 2019-04-12 2020-05-06 Alibaba Group Holding Limited IMPLEMENTATION OF TRANSACTIONS IN A DISTRIBUTED ACCOUNT SYSTEM
CN113139873A (zh) * 2019-08-30 2021-07-20 创新先进技术有限公司 在区块链中并发执行交易的方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106406896A (zh) * 2016-09-27 2017-02-15 北京天德科技有限公司 一种并行PipeLine技术的区块链建块方法
US20180158034A1 (en) * 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability
CN107688999A (zh) * 2017-08-11 2018-02-13 杭州秘猿科技有限公司 一种基于区块链的并行交易执行方法
CN110083437A (zh) * 2018-01-25 2019-08-02 北京欧链科技有限公司 处理区块链事务的方法及装置
CN108804112A (zh) * 2018-05-22 2018-11-13 上海分布信息科技有限公司 一种区块链落账处理方法及系统
CN109636384A (zh) * 2018-10-26 2019-04-16 阿里巴巴集团控股有限公司 一种并行化执行区块链交易的方法、装置及系统
CN109784930A (zh) * 2019-02-18 2019-05-21 深圳市网心科技有限公司 一种区块链交易数据的处理方法、装置、电子设备及介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021036258A1 (zh) * 2019-08-30 2021-03-04 创新先进技术有限公司 在区块链中并发执行交易的方法和装置
CN111047449A (zh) * 2020-03-12 2020-04-21 支付宝(杭州)信息技术有限公司 在区块链中执行交易的方法及装置
CN113168652A (zh) * 2020-08-03 2021-07-23 支付宝(杭州)信息技术有限公司 区块链交易处理系统和方法
US11604608B2 (en) 2020-08-03 2023-03-14 Alipay (Hangzhou) Information Technology Co., Ltd. Blockchain transaction processing systems and methods
CN112001798A (zh) * 2020-10-28 2020-11-27 支付宝(杭州)信息技术有限公司 在区块链中并发执行交易的方法和装置
CN112991061A (zh) * 2020-10-28 2021-06-18 支付宝(杭州)信息技术有限公司 在区块链中并发执行交易的方法和装置
CN112991061B (zh) * 2020-10-28 2023-06-09 支付宝(杭州)信息技术有限公司 在区块链中并发执行交易的方法和装置
CN112668998A (zh) * 2020-12-23 2021-04-16 树根互联技术有限公司 流程实现方法、装置、系统、电子设备和可读存储介质
CN112668998B (zh) * 2020-12-23 2023-12-19 树根互联股份有限公司 流程实现方法、装置、系统、电子设备和可读存储介质

Also Published As

Publication number Publication date
TW202109511A (zh) 2021-03-01
WO2021036258A1 (zh) 2021-03-04
CN110675255B (zh) 2021-04-02
CN113139873A (zh) 2021-07-20
TWI733390B (zh) 2021-07-11

Similar Documents

Publication Publication Date Title
CN110675255B (zh) 在区块链中并发执行交易的方法和装置
CN108595157B (zh) 区块链数据的处理方法、装置、设备和存储介质
AU2016244128B2 (en) Processing database transactions in a distributed computing system
US8473950B2 (en) Parallel nested transactions
US6463532B1 (en) System and method for effectuating distributed consensus among members of a processor set in a multiprocessor computing system through the use of shared storage resources
CN110648124B (zh) 在区块链中并发执行交易的方法和装置
Feldman et al. A wait-free multi-word compare-and-swap operation
CN110704112B (zh) 在区块链中并发执行交易的方法和装置
CN111882435B (zh) 在区块链中执行交易的方法及装置
TWI730690B (zh) 在區塊鏈中同時執行交易的方法和裝置及電腦可讀儲存媒體與計算設備
JPH06222936A (ja) 共用変数の値を更新する方法
CN110689344B (zh) 在区块链中并发执行交易的方法和装置
US20120059997A1 (en) Apparatus and method for detecting data race
CN110706108B (zh) 在区块链中并发执行交易的方法和装置
Peng et al. FA-Stack: A fast array-based stack with wait-free progress guarantee
CN110515707B (zh) 基于预先事务处理的确定性并发控制方法及系统
CN113867903B (zh) 一种区块链中智能合约的并行冲突域确定方法及装置
US20090064141A1 (en) Efficient utilization of transactions in computing tasks
Peng et al. Fast wait-free construction for pool-like objects with weakened internal order: Stacks as an example
JP4347196B2 (ja) コネクション割り当て方法、装置及びプログラム
CN116450316A (zh) 交易并行处理的方法、装置、电子设备和存储介质
CN117056034A (zh) 一种Tendermint系统中基于动态分析的事务并行执行方法及装置
WO2022120313A1 (en) Methods for distributed key-value store
CN115203218A (zh) 解决区块链节点并行化处理交易时共识不一致问题的方法
JPS6394343A (ja) フアイル制御システム

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
TA01 Transfer of patent application right

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40026265

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant