CN111754349B - 对区块链中的交易进行分组的方法和装置 - Google Patents
对区块链中的交易进行分组的方法和装置 Download PDFInfo
- Publication number
- CN111754349B CN111754349B CN202010889817.4A CN202010889817A CN111754349B CN 111754349 B CN111754349 B CN 111754349B CN 202010889817 A CN202010889817 A CN 202010889817A CN 111754349 B CN111754349 B CN 111754349B
- Authority
- CN
- China
- Prior art keywords
- variable
- value
- transaction
- attribution
- atomic
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
- G06Q20/38215—Use of certificates or encrypted proofs of transaction rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了一种对区块链中的交易进行分组的方法和装置,所述方法包括:获取多个交易中的第一交易;获取第一交易中访问的第一变量;读取与第一变量对应的第一归属变量的第一值;读取与第一交易对应的第一关联变量的第一值;如果所述第一归属变量的第一值为所述多个交易中的第二交易的编号,通过对所述关联数组中的原子变量的原子比较修改操作,记录所述第一交易与所述第二交易的关联关系;基于所述关联数组对所述多个交易进行分组。
Description
技术领域
本说明书实施例涉及区块链技术领域,更具体地,涉及一种对区块链中的交易进行分组的方法和装置。
背景技术
区块链技术也被称之为分布式账本技术,区块链中的每个全节点都有全量的、一致的数据。为了保证每个全节点具有一致的数据,对区块链中的多个交易进行并发处理的前提是确保并发执行的交易之间没有任何数据依赖关系。在例如Hyperledger Fabric区块链(下文简称为Fabric区块链)中,由背书节点预执行各个交易生成各个交易的读写集,所述读写集中包括在预执行交易的过程中读取的变量或写入的变量。Fabric区块链中的提交节点在对区块进行入块时,执行区块中的交易,基于当前的世界状态,确定区块中的每个交易的读写集是否可成功执行,如果可成功执行,则相应地更改世界状态。因此,如果两个交易的访问变量没有读写冲突,则其导致的世界状态的改变不会影响另一个交易的执行,因此该两个交易可以并发执行。如果两个交易的访问变量存在读写冲突,则只能串行执行。
若在执行一批交易前,根据各个交易的读写集之间的重叠关系,将读写集有重叠的交易放到同一个组中,则可以保证不同组内的交易之间一定没有数据依赖关系。传统方案为单线程根据各个交易读写集的重叠性来进行交易分组,当待分组交易数达到数万个时,分组算法耗时达到数百毫秒,会严重制约整个***的吞吐率。
因此,需要一种更有效的对区块链中的交易进行分组的方案。
发明内容
本说明书实施例旨在提供一种更有效的对区块链中的交易进行分组的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种对区块链中的交易进行分组的方法,包括:
获取多个交易中的第一交易;
获取第一交易中访问的第一变量;
读取与第一变量对应的第一归属变量的第一值,所述第一归属变量存储于共享内存中、用于记录与所述第一变量归属的交易关联的交易的编号;
读取与第一交易对应的第一关联变量的第一值,所述第一关联变量为关联数组中包括的一个原子变量,所述关联数组包括与所述多个交易分别对应的多个原子变量、并存储于共享内存中,所述第一关联变量用于记录与第一交易关联的交易的编号;
如果所述第一归属变量的第一值为所述多个交易中的第二交易的编号,基于所述第一归属变量的第一值和所述第一关联变量的第一值,对关联数组中的原子变量进行原子比较修改操作,以在所述关联数组中记录所述第一交易与所述第二交易的关联关系;
基于所述关联数组对所述多个交易进行分组。
在一种实施方式中,所述第一归属变量为原子变量,所述方法还包括:如果所述第一归属变量的第一值是预定无效值,则进行以下原子操作:读取所述第一归属变量的第二值,如果所述第一归属变量的第二值为所述预定无效值,则将所述第一归属变量的值修改为所述第一关联变量的第一值,如果所述第一归属变量的第二值不是所述预定无效值,则返回所述第一归属变量的第二值。
在一种实施方式中,基于所述第一归属变量的第一值和所述第一关联变量的第一值,对关联数组中的原子变量进行原子比较修改操作包括,如果所述第一关联变量的第一值大于所述第一归属变量的第一值,则读取第二交易对应的第二关联变量的第一值,如果第二关联变量的第一值为第二交易的编号,则进行以下原子操作:读取第二关联变量的第二值,如果第二关联变量的第二值为第二交易的编号,则将第二关联变量的值修改为所述第一关联变量的第一值,如果第二关联变量的第二值不是第二交易的编号,则返回第二关联变量的第二值。
在一种实施方式中,所述方法还包括,如果所述第一关联变量的第一值大于所述第一归属变量的第一值,进行以下原子操作:读取所述第一归属变量的第三值,如果所述第一归属变量的第三值为所述第一归属变量的第一值,则将所述第一归属变量的值修改为所述第一关联变量的第一值,如果所述第一归属变量的第三值不是所述第一关联变量的第一值,则返回所述第一归属变量的第三值。
在一种实施方式中,基于所述第一归属变量的第一值和所述第一关联变量的第一值,对关联数组中的原子变量进行原子比较修改操作包括,如果所述第一关联变量的第一值小于所述第一归属变量的第一值,并且如果所述第一关联变量的第一值为第一交易的编号,则进行以下原子操作:读取所述第一关联变量的第二值,如果所述第一关联变量的第二值为所述第一交易的编号,则将所述第一关联变量的值修改为所述第二交易的编号,如果所述第一关联变量的第二值不等于所述第一交易的编号,则返回所述第一关联变量的第二值。
在一种实施方式中,所述第一关联变量的第二值为第三交易的编号,所述方法还包括,在返回所述第一关联变量的第二值之后,基于所述第一关联变量的第二值和所述第一归属变量的第一值,对所述关联数组中的原子变量进行原子比较修改操作,以在所述关联数组中记录所述第三交易与第二交易的关联性。
本说明书另一方面提供一种对区块链中的交易进行分组的装置,包括:
第一获取单元,配置为,获取多个交易中的第一交易;
第二获取单元,配置为,获取第一交易中访问的第一变量;
第一读取单元,配置为,读取与第一变量对应的第一归属变量的第一值,所述第一归属变量存储于共享内存中、用于记录与所述第一变量归属的交易关联的交易的编号;
第二读取单元,配置为,读取与第一交易对应的第一关联变量的第一值,所述第一关联变量为关联数组中包括的一个原子变量,所述关联数组包括与所述多个交易分别对应的多个原子变量、并存储于共享内存中,所述第一关联变量用于记录与第一交易关联的交易的编号;
第一记录单元,配置为,果所述第一归属变量的第一值为所述多个交易中的第二交易的编号,基于所述第一归属变量的第一值和所述第一关联变量的第一值,对关联数组中的原子变量进行原子比较修改操作,以在所述关联数组中记录所述第一交易与所述第二交易的关联关系;
分组单元,配置为,基于所述关联数组对所述多个交易进行分组。
在一种实施方式中,所述第一归属变量为原子变量,所述装置还包括:第一操作单元,配置为,如果所述第一归属变量的第一值是预定无效值,则进行以下原子操作:读取所述第一归属变量的第二值,如果所述第一归属变量的第二值为所述预定无效值,则将所述第一归属变量的值修改为所述第一关联变量的第一值,如果所述第一归属变量的第二值不是所述预定无效值,则返回所述第一归属变量的第二值。
在一种实施方式中,所述第一记录单元包括,读取子单元,配置为,如果所述第一关联变量的第一值大于所述第一归属变量的第一值,则读取第二交易对应的第二关联变量的第一值,第一操作子单元,配置为,如果第二关联变量的第一值为第二交易的编号,则进行以下原子操作:读取第二关联变量的第二值,如果第二关联变量的第二值为第二交易的编号,则将第二关联变量的值修改为所述第一关联变量的第一值,如果第二关联变量的第二值不是第二交易的编号,则返回第二关联变量的第二值。
在一种实施方式中,所述装置还包括,第二操作单元,配置为,如果所述第一关联变量的第一值大于所述第一归属变量的第一值,进行以下原子操作:读取所述第一归属变量的第三值,如果所述第一归属变量的第三值为所述第一归属变量的第一值,则将所述第一归属变量的值修改为所述第一关联变量的第一值,如果所述第一归属变量的第三值不是所述第一关联变量的第一值,则返回所述第一归属变量的第三值。
在一种实施方式中,所述第一记录单元包括,第二操作子单元,配置为,如果所述第一关联变量的第一值小于所述第一归属变量的第一值,并且如果所述第一关联变量的第一值为第一交易的编号,则进行以下原子操作:读取所述第一关联变量的第二值,如果所述第一关联变量的第二值为所述第一交易的编号,则将所述第一关联变量的值修改为所述第二交易的编号,如果所述第一关联变量的第二值不等于所述第一交易的编号,则返回所述第一关联变量的第二值。
在一种实施方式中,所述第一关联变量的第二值为第三交易的编号,所述装置还包括,第二记录单元,配置为,基于所述第一关联变量的第二值和所述第一归属变量的第一值,对所述关联数组中的原子变量进行原子比较修改操作,以在所述关联数组中记录所述第三交易与第二交易的关联性。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
在根据本说明书实施例的对区块链中的交易进行分组的方案中,可通过多个线程以无锁的方式并行进行对归属数组和关联数组的修改,从而可基于关联数组进行对多个交易的分组,在该过程中,不涉及对复杂数据结构的查找,并且可充分发挥多cpu的性能。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示出Fabric区块链的结构示意图;
图2示出根据本说明书实施例的一种对区块链中的交易进行分组的方法流程图;
图3示出根据本说明书实施例的归属数组和关联数组的示意图;
图4示出成功执行步骤S2108之后的关联数组的示意图;
图5示出了在A2=3的情况中在关联数组中记录交易2与交易5的关联关系的三种可能的情况;
图6示出了与图5中左侧分支对应的对关联数组的修改过程;
图7示出了与图5中中间分支对应的对关联数组的修改过程;
图8示出了与图5中右侧分支对应的对关联数组的修改过程;
图9示出成功执行步骤S2105之后的关联数组的示意图;
图10示出根据本说明书实施例的一种对区块链中的交易进行分组的装置1000。
具体实施方式
下面将结合附图描述本说明书实施例。
图1示出Fabric区块链的结构示意图。Fabric区块链是一种面向企业的联盟链。如图1所示,Fabric区块链中包括以下多种类型的节点:客户端节点11、对等节点(Peer)12、排序节点(orderer)13等等。所述对等节点12中又包括背书节点(Endorsor)121、提交节点(Committer)122等。Fabric区块链中包括多个通道(channel),每个通道具有自身封闭的账本数据和链码(chaincode),所述链码即为Fabric区块链中的智能合约。对等节点12可选择加入哪些通道,其在经过通道中已有的对等节点的身份验证之后可加入该通道。
如图1中所示,客户端节点11可向Fabirc区块链中的某个通道发起交易提案,从而,客户端节点11向该通道中的至少两个背书节点121发送交易提案。通道中的背书节点121具有交易提案***接口,从而背书节点可通过调用该***接口对从客户端节点接收的交易提案进行预执行并进行数字签名,并在预执行之后将预执行结果和数字签名返回给所述客户端节点11。所述预执行结果为在预执行交易过程中的读写集。图1中示意示出了读写集。读写集中包括读集(Rset)和写集(Wset)。其中,读集为背书节点在预执行交易的过程中读取的变量值,其以键值(Key-Value)对的形式进行记录,如图1中所示,读集中的“123abc456:2”表示,读取变量123abc456(Key)的值为2,其中123abc456为变量名。写集为背书节点在预执行交易的过程中对变量预写入的值,即,该对变量的写入只是记录在写集中,并未更改世界状态,同样地,写集中也以键值对的形式进行记录。
所述客户端节点11在从各个背书节点121接收到交易预执行结果和签名之后,将交易信息发送给排序节点13,以提交交易,所述交易信息中包括交易的交易提案和交易预执行结果及其签名。排序节点13用于对交易进行排序、并将经排序的交易按照固定的时间间隔打包成区块,并发送给区块链中的每个提交节点122。提交节点122在收到区块之后执行交易,即,基于世界状态验证区块中每个交易的读写集是否可成功执行,在区块的每个交易中标记其执行状态(即成功或失败),然后将区块加入本节点的账本数据中(即,提交区块)。
例如,区块中包括顺序排列的交易1和交易2,交易2为在后交易,交易2包括对变量123abc456的读取,交易1包括对变量123abc456的写入,由于预执行各个交易时并不改变世界状态,即,预执行交易1时并未改变变量123abc456的值,而在由提交节点执行交易1之后将改变变量123abc456的值。因此,在预执行交易2时读取的变量123abc456的值和执行交易2时读取的变量123abc456值是不同的,在该情况中,提交节点122将判断交易2的读写集不能成功执行。从该实例可以看出,交易1和交易2的读写集中记录了相同的变量时,可确定交易1和交易2可能存在读写冲突,因此交易1和交易2需要按照其排序串行执行。如果两个交易的读写集中未记录相同的变量,则其不会存在读写冲突,在该情况中,就可以对其并发执行。也就是说,为了确定各个交易是否可并发执行,需要判断各个交易的读写集中是否记录了相同的变量。在本说明书实施例中,通过多个线程并行修改变量归属数组和交易关联数组,并根据交易关联数组来确定各个交易的读写集中对变量访问的重叠关系,将读写集有重叠关系的交易放到一个组中,从而可保证不同组内的交易之间没有数据依赖关系,以并发执行各个组中的交易。
图2示出根据本说明书实施例的一种对区块链中的交易进行分组的方法流程图,包括:
步骤S202,获取多个交易中的交易5;
步骤S204,获取交易5中访问的变量i;
步骤S206,读取与变量i对应的归属变量Bi的值bi1,所述归属变量Bi存储于共享内存中、用于记录所述变量i归属的交易的编号;
步骤S208,读取与交易5对应的关联变量A5的值a51,所述关联变量A5为关联数组中包括的一个原子变量,所述关联数组包括与所述多个交易分别对应的多个原子变量Aj、并存储于共享内存中,所述关联变量A5用于记录与交易5关联的交易的编号;
步骤S2101~S2108,在关联数组中记录各个交易的关联关系。
图2所示方法由区块链节点设备中的多个线程中的一个线程执行,所述多个线程可并行执行图2所示方法,从而加快对多个交易的分组的效率。所述多个交易为将要执行的多个交易,其例如为区块链中一个区块中的多个交易,该多个交易具有交易编号,该交易编号基于预定规则确定,例如基于交易提供的燃料(GAS)量、交易的交易提案的提出时间顺序等确定,所述交易编号用于指示交易提交的顺序,例如,交易1应在交易2之前提交。
下面将详细描述上面各个步骤。
首先,在步骤S202,获取多个交易中的交易5。
为了通过多个线程并行进行对多个交易的分组过程,各个线程可从该多个交易中获取未处理的交易,以针对该交易在根据本说明书实施例的归属数组和关联数组中分别记录变量归属的交易、以及交易之间的关联性,从而用于进行对多个交易的分组。如上文所述,图2所示方法由多个线程中的任一线程执行,该线程例如从多个交易中获取交易5进行处理。
图3示出根据本说明书实施例的归属数组和关联数组的示意图。所述归属数组和关联数组都设置在节点设备的共享内存中,从而所述多个线程可并行地对归属数组和关联数组进行修改。所述如图3所示,归属数组包括多个归属变量,图中示意示出B0~B5,该每个归属变量都是原子变量,以用于后续进行原子操作,所述原子变量为原子操作的基本单位,所述原子变量可保证一系列原子操作不被打断,保证了线程操作的安全性,所述原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会换到另一个线程。每个归属变量与多个交易中访问到的一个变量相对应,例如,如图3中所示,B0与k0相对应,k0为变量k0的标识,例如,k0可以为变量k0的变量名,或者,k0可以为变量k0的编号。归属变量的值用于指示交易访问的变量所属的交的编号或者变量所述交易的关联交易的编号。在由多个线程开始执行图2所示方法之前,将每个归属变量的值预设为预定的无效值(例如图3中的“-1”),以指示该变量尚未归属给任一交易。如图3中所示,在归属数组中,B2的值为2,表示交易2或其关联交易中包括对变量k2的访问,即,变量k2归属于交易2或其关联交易,B3的值为7,表示交易7或其关联交易中包括对变量k3的访问,即,变量k3归属于交易7或其关联交易。可以理解,这里虽然以归属数组的形式示出与多个交易访问的各个变量分别对应的多个归属变量,本说明书不限于此,例如,可将交易访问变量的名称哈希值用作为该变量的归属变量地址,也就是说,在该情况中,各个交易访问变量具有分散的归属变量地址。
仍然如图3所示,关联数组中包括多个关联变量,图中示意示出了A0~A7,,该每个关联变量都是原子变量,以用于后续进行原子操作。每个关联变量与一个交易相对应,例如如图3中所示,A0与交易Tx0对应,其中Tx0中的0为交易编号。关联变量的值用于指示该关联变量对应的交易的关联交易,即该两个交易访问了相同的变量,在该实施例中设定,对于两个有关联性的交易,在交易编号较小的交易的关联变量中记录交易编号较大的交易的编号,以指示这两个交易的关联性,例如如图3中所示,在A3中记录7,表示交易3与交易7相关联。可以理解,本说明书实施例不限于此,例如,也可以设定为,在较大交易的关联变量中记录关联的较小交易的编号。在由多个线程开始执行图2所示方法之前,将每个归属变量的值预设为对应交易的交易编号,以指示该对应交易当前还没有关联交易。
在步骤S204,获取交易5中的变量i。
假设交易5中访问了变量k0~变量k3,也就是说,对于Fabric链,在交易5的读写集中记录有对变量k0~变量k3的读和/或写,对于以太坊链,在交易5中包括对变量k0~变量k3分别对应的四个账户的账户状态的变更操作。从而,线程在获取交易5之后,顺序获取这四个变量,并分别进行处理。例如,线程首先获取变量k0,该变量k0与归属数组中的归属变量B0相对应。
在步骤S206读取与变量i对应的归属变量Bi的值bi1。
例如,所述线程读取变量k0对应的B0的值“-1”。
在步骤S208读取与交易5对应的关联变量A5的值a51。
例如,如图3所示,读取交易5(Tx5)对应的A5的值为5。
之后执行步骤S2101,确定B0的值b01是否等于-1。
在确定结果为“是”的情况中,执行步骤S2102,将B0的值从-1原子比较修改为5,从而指示变量k0归属于交易5。在该步骤中,通过指示处理器执行指令atomic_cmp_xchg(&a,-1,5)来进行所述原子比较修改,其中&a,-1,5为对该指令的传入参数,&a为变量B0的内存地址,-1为修改前值,5为修改后值。指令atomic_cmp_xchg(&a,-1,5)的执行对应于原子操作,当执行该指令时,执行以下过程:读取变量B0的值(即图2中的b01),确定变量B0的值是否为-1,如果是-1,则将变量B0的值修改为5,如果读取的变量B0的值不是-1,则不进行修改,返回该读取的B0的值。
如果在步骤S2102的修改成功(对应于图3中S2102框的以“是”标注的分支),即,将变量B0的值修改为5,表示变量k0归属于交易5,则线程对该变量k0的处理结束,返回步骤S204,以获取交易5中访问的下一个变量。这里,由于未涉及到交易5与其它交易的关联关系,因此不需要对关联数组进行修改。
如果在步骤S2102的修改未成功,则返回变量B0的当前值b02,在该情况中,可将步骤S2103中的bi1替换成b02执行后续的步骤。该情况表示,在该线程进行步骤S2102之前,有其它线程预先将变量B0的值从-1改成了其它交易的编号,由于变量B0的值不再是-1,因此这里对B0的原子比较修改失败,返回B0的当前值。
在成功执行步骤S2102的情况中,线程再次执行步骤S204,获取交易5中的例如变量k1。从而执行步骤S206,读取原子变量B1的值(b11),例如如图3中所示,读取B1的值为-1,然后执行步骤S208,读取A5的值,假设由于其它交易(例如交易6)中也访问了变量k0,因此使得将A5的值改为6,即表示交易5与交易6相关联,在该情况中,读取的A5的值为6。从而,当执行步骤S2102时,将B1的值从-1原子比较修改为A5的值6,即表示变量k1所归属的交易5的关联交易。
在成功处理变量k1之后,线程再次执行步骤S204,获取交易5中的例如变量k2。对于变量k2,线程在执行步骤S206之后,例如如图3中所示,读取B2的值为2,这表示变量k2归属于交易2或其关联交易。而交易5中也访问变量k2,也就是说,交易2与交易5具有关联性,因此,需要在关联数组中记录交易2与交易5的关联性。
具体是,参考图2,对于变量k2,在步骤S208,读取变量A5的值(即a51),假设这里读取的变量A5的值如图3所示为5,可以理解,由于其它线程可能修改A5的值,在该实施例中,变量A5的值可以为大于等于5的值(如6、7等),在变量A5的值大于等于5的情况中,仍然执行与下文中相同的过程。在步骤S2101,确定B2的值(即b21)是否为-1,这里为2,因此执行步骤S2103,确定b21是否大于a51,这里b21=2小于a51=5,从而执行步骤S2107,读取A2的值,确定A2的值是否等于2。当前的关联数组例如如图3所示,即,A2=2,在该情况中,执行步骤S2108,将A2原子比较修改为5。图4示出成功执行步骤S2108之后的关联数组的示意图。在通过原子比较修改成功将A2的值修改为5之后,A2的值5表示了交易2与交易5之间的关联性,即如图4中所示,A2的值5表示指向交易5的指针。
在另一种情况中,在步骤S2107,读取的A2的值不等于2,例如A2的值为3。也就是说,A2已经记录了交易2与交易3的关联关系,在该情况中,如果将A2的值修改为5,将会删除已经记录的交易2与交易3的关联关系,因此,需要通过其它方式来记录交易2与交易5的关联关系。
图5示出了在A2=3的情况中在关联数组中记录交易2与交易5的关联关系的三种可能的情况,在图2所示的步骤S2107的判断为否的情况中,例如,A2=3(即A2≠2),则执行图5中的步骤S51,读取关联数组中的变量A3的值,执行步骤S51之后的每个分支各代表在关联数组中记录交易2与交易5的关联关系的一种情况。
图6示出了与图5中左侧分支对应的对关联数组的修改过程。结合图5和图6,当在步骤S51读取A3=3的情况中,在步骤S52,将A3从3原子比较修改为5。如图6所示,在将A3修改为5之后,表示了交易3与交易5的关联关系(如A3到A5的箭头所示),而在A2中记录了交易2与交易3的关联关系(如A2到A3的箭头所示),因此,相当于记录了交易2与交易5的关联关系。
图7示出了与图5中中间分支对应的对关联数组的修改过程。结合图5和图7,当在步骤S51确定A3=4的情况中,在步骤S53,读取关联数组中的变量A4的值,当读取A4=4时,在步骤S54,将A4从4原子比较修改为5。如图7所示,在将A4修改为5之后,表示了交易4与交易5的关联关系(如A4到A5的箭头所示),而在A2中记录了交易2与交易3的关联关系,在A3中记录了交易3与交易4的关联关系,相当于记录了交易2与交易5的关联关系。
图8示出了与图5中右侧分支对应的对关联数组的修改过程。结合图5和图8,当在步骤S51确定A3=6的情况中,也就是说交易3与交易6相关联,因此,后续需要记录交易5与交易6的关联性。在步骤S55,将A5从5原子比较修改为6。如图8所示,在将A5修改为6之后,表示了交易5与交易6的关联关系(如A5到A6的箭头所示),而在A2中记录了交易2与交易3的关联关系(如A2到A3的箭头所示),在A3中记录了交易3与交易6的关联关系(如A3到A6的箭头所示),相当于记录了交易2与交易5的关联关系。
在另一种情况中,在图2中的步骤S2108,对A2的原子比较修改失败,即在执行该原子比较修改时,A2的值已经不是2,而是被修改为其它值,在该情况中,可与上述类似地,参考图5所示流程进行对关联数组的修改。
在另一种情况中,在图5中的各个原子比较修改步骤可能执行失败,这表示被原子比较修改的关联变量的值不是其本身对应的交易的编号,而是该对应交易的关联交易的编号,因此,可在关联数组中与图5所示过程类似地记录该关联交易与交易5的关联关系,以用于记录交易2与交易5的关联关系。
在另一种实施方式中,在步骤S2103之后,可执行步骤S2106,即,将B2从2原子比较修改为5,以表示变量k2归属交易5或其关联交易。通过这样修改,由于每个交易对应的关联变量中记录交易编号更大的关联交易,在进行交易分组时,交易关联的交易的编号越大,表示其与最大交易之间的关联关系越少,因此在进行交易分组时可更快地分到该最大交易所在的分组中,因此,通过将归属数组中的归属变量的交易编号修改为该分组的较大交易编号,有利于后续更快速地进行交易分组。
在步骤S2106中对变量B2的修改失败的情况中,表示变量B2的值在修改之前已经被改为其它值。例如B2的值被修改为3,则可再次对B2执行原子比较修改以将B2从3修改为5。在另一种情况中,例如B2的值被修改为7,即B2的值已经大于5,因此,不再需要将B2的值修改为5。
仍然参考图2,在相对于变量k2成功执行步骤S2108之后,所述线程回到步骤S204继续获取交易5中的变量k3,并执行步骤S206,读取变量B3的值(即b31)为7,执行步骤S208,读取A5的值(即a51),假设A5的值仍然是5。在步骤S2103,由于b31=7>a51=5,因此,执行步骤S2104,确定a51是否等于5,在确定a51=5的情况中,执行步骤S2105,将A5从5原子比较修改为7。图9示出成功执行步骤S2105之后的关联数组的示意图。如图9所示,通过在A5中记录7,指示交易5与交易7的关联性(如图9中A5到A7的箭头所示)。
在步骤S2104中a51不等于5的情况中,或者在步骤S2105未成功执行修改的情况中,也就是说A5的值指示了交易5与其它交易相关联,从而需要在关联数组中记录该其它交易与交易7的关联关系,该记录的方法可与图5所示的过程类似地进行,在此不再赘述。
在如上文所述通过多个线程对多个交易中的各个变量都进行处理之后,在关联数组中记录了多个交易之间的关联关系,从而可基于该关联关系对该多个交易进行分组,从而将有关联关系的交易分到同一组中。例如,参考图7可以得出,交易2与交易3关联,交易3与交易4关联,交易4与交易5关联,因此,交易2、交易3、交易4和交易5都是相互关联的,可将其分到一组。再例如,参考图8,交易2与交易3关联,交易3与交易6关联,交易5与交易6关联,因此,交易2、交易3、交易5和交易6都是相互关联的,可将将其分到一组。
图10示出根据本说明书实施例的一种对区块链中的交易进行分组的装置1000,包括:
第一获取单元101,配置为,获取多个交易中的第一交易;
第二获取单元102,配置为,获取第一交易中访问的第一变量;
第一读取单元103,配置为,读取与第一变量对应的第一归属变量的第一值,所述第一归属变量存储于共享内存中、用于记录与所述第一变量归属的交易关联的交易的编号;
第二读取单元104,配置为,读取与第一交易对应的第一关联变量的第一值,所述第一关联变量为关联数组中包括的一个原子变量,所述关联数组包括与所述多个交易分别对应的多个原子变量、并存储于共享内存中,所述第一关联变量用于记录与第一交易关联的交易的编号;
第一记录单元105,配置为,如果所述第一归属变量的第一值为所述多个交易中的第二交易的编号,基于所述第一归属变量的第一值和所述第一关联变量的第一值,对关联数组中的原子变量进行原子比较修改操作,以在所述关联数组中记录所述第一交易与所述第二交易的关联关系;
分组单元106,配置为,基于所述关联数组对所述多个交易进行分组。
在一种实施方式中,所述第一归属变量为原子变量,所述装置1000还包括:第一操作单元107,配置为,如果所述第一归属变量的第一值是预定无效值,则进行以下原子操作:读取所述第一归属变量的第二值,如果所述第一归属变量的第二值为所述预定无效值,则将所述第一归属变量的值修改为所述第一关联变量的第一值,如果所述第一归属变量的第二值不是所述预定无效值,则返回所述第一归属变量的第二值。
在一种实施方式中,所述第一记录单元105包括,读取子单元1051,配置为,如果所述第一关联变量的第一值大于所述第一归属变量的第一值,则读取第二交易对应的第二关联变量的第一值,第一操作子单元1052,配置为,如果第二关联变量的第一值为第二交易的编号,则进行以下原子操作:读取第二关联变量的第二值,如果第二关联变量的第二值为第二交易的编号,则将第二关联变量的值修改为所述第一关联变量的第一值,如果第二关联变量的第二值不是第二交易的编号,则返回第二关联变量的第二值。
在一种实施方式中,所述装置1000还包括,第二操作单元108,配置为,如果所述第一关联变量的第一值大于所述第一归属变量的第一值,进行以下原子操作:读取所述第一归属变量的第三值,如果所述第一归属变量的第三值为所述第一归属变量的第一值,则将所述第一归属变量的值修改为所述第一关联变量的第一值,如果所述第一归属变量的第三值不是所述第一关联变量的第一值,则返回所述第一归属变量的第三值。
在一种实施方式中,所述第一记录单元105包括,第二操作子单元1053,配置为,如果所述第一关联变量的第一值小于所述第一归属变量的第一值,并且如果所述第一关联变量的第一值为第一交易的编号,则进行以下原子操作:读取所述第一关联变量的第二值,如果所述第一关联变量的第二值为所述第一交易的编号,则将所述第一关联变量的值修改为所述第二交易的编号,如果所述第一关联变量的第二值不等于所述第一交易的编号,则返回所述第一关联变量的第二值。
在一种实施方式中,所述第一关联变量的第二值为第三交易的编号,所述装置1000还包括,第二记录单元109,配置为,基于所述第一关联变量的第二值和所述第一归属变量的第一值,对所述关联数组中的原子变量进行原子比较修改操作,以在所述关联数组中记录所述第三交易与第二交易的关联性。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
在根据本说明书实施例的对区块链中的交易进行分组的方案中,可通过多个线程以无锁的方式并行进行对归属数组和关联数组的修改,从而可基于关联数组进行对多个交易的分组,在该过程中,不涉及对复杂数据结构的查找,并且可充分发挥多cpu的性能。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种对区块链中的交易进行分组的方法,包括:
获取多个交易中的第一交易;
获取第一交易中访问的第一变量;
读取与第一变量对应的第一归属变量的第一值,所述第一归属变量为原子变量,所述第一归属变量存储于共享内存中、用于记录与所述第一变量归属的交易关联的交易的编号;
读取与第一交易对应的第一关联变量的第一值,所述第一关联变量为关联数组中包括的一个原子变量,所述关联数组包括与所述多个交易分别对应的多个原子变量、并存储于共享内存中,所述第一关联变量用于记录与第一交易关联的交易的编号;
如果所述第一归属变量的第一值为所述多个交易中的第二交易的编号,基于所述第一归属变量的第一值和所述第一关联变量的第一值,对关联数组中的原子变量进行原子比较修改操作,以在所述关联数组中记录所述第一交易与所述第二交易的关联关系;
基于所述关联数组对所述多个交易进行分组。
2.根据权利要求1所述的方法,其中,所述方法还包括:如果所述第一归属变量的第一值是预定无效值,则进行以下原子操作:读取所述第一归属变量的第二值,如果所述第一归属变量的第二值为所述预定无效值,则将所述第一归属变量的值修改为所述第一关联变量的第一值,如果所述第一归属变量的第二值不是所述预定无效值,则返回所述第一归属变量的第二值。
3.根据权利要求1所述的方法,其中,基于所述第一归属变量的第一值和所述第一关联变量的第一值,对关联数组中的原子变量进行原子比较修改操作包括,如果所述第一关联变量的第一值大于所述第一归属变量的第一值,则读取第二交易对应的第二关联变量的第一值,如果第二关联变量的第一值为第二交易的编号,则进行以下原子操作:读取第二关联变量的第二值,如果第二关联变量的第二值为第二交易的编号,则将第二关联变量的值修改为所述第一关联变量的第一值,如果第二关联变量的第二值不是第二交易的编号,则返回第二关联变量的第二值。
4.根据权利要求3所述的方法,还包括,如果所述第一关联变量的第一值大于所述第一归属变量的第一值,进行以下原子操作:读取所述第一归属变量的第三值,如果所述第一归属变量的第三值为所述第一归属变量的第一值,则将所述第一归属变量的值修改为所述第一关联变量的第一值,如果所述第一归属变量的第三值不是所述第一关联变量的第一值,则返回所述第一归属变量的第三值。
5.根据权利要求1所述的方法,其中,基于所述第一归属变量的第一值和所述第一关联变量的第一值,对关联数组中的原子变量进行原子比较修改操作包括,如果所述第一关联变量的第一值小于所述第一归属变量的第一值,并且如果所述第一关联变量的第一值为第一交易的编号,则进行以下原子操作:读取所述第一关联变量的第二值,如果所述第一关联变量的第二值为所述第一交易的编号,则将所述第一关联变量的值修改为所述第二交易的编号,如果所述第一关联变量的第二值不等于所述第一交易的编号,则返回所述第一关联变量的第二值。
6.根据权利要求5所述的方法,其中,所述第一关联变量的第二值为第三交易的编号,所述方法还包括,在返回所述第一关联变量的第二值之后,基于所述第一关联变量的第二值和所述第一归属变量的第一值,对所述关联数组中的原子变量进行原子比较修改操作,以在所述关联数组中记录所述第三交易与第二交易的关联性。
7.一种对区块链中的交易进行分组的装置,包括:
第一获取单元,配置为,获取多个交易中的第一交易;
第二获取单元,配置为,获取第一交易中访问的第一变量;
第一读取单元,配置为,读取与第一变量对应的第一归属变量的第一值,所述第一归属变量为原子变量,所述第一归属变量存储于共享内存中、用于记录与所述第一变量归属的交易关联的交易的编号;
第二读取单元,配置为,读取与第一交易对应的第一关联变量的第一值,所述第一关联变量为关联数组中包括的一个原子变量,所述关联数组包括与所述多个交易分别对应的多个原子变量、并存储于共享内存中,所述第一关联变量用于记录与第一交易关联的交易的编号;
第一记录单元,配置为,如果所述第一归属变量的第一值为所述多个交易中的第二交易的编号,基于所述第一归属变量的第一值和所述第一关联变量的第一值,对关联数组中的原子变量进行原子比较修改操作,以在所述关联数组中记录所述第一交易与所述第二交易的关联关系;
分组单元,配置为,基于所述关联数组对所述多个交易进行分组。
8.根据权利要求7所述的装置,其中,所述装置还包括:第一操作单元,配置为,如果所述第一归属变量的第一值是预定无效值,则进行以下原子操作:读取所述第一归属变量的第二值,如果所述第一归属变量的第二值为所述预定无效值,则将所述第一归属变量的值修改为所述第一关联变量的第一值,如果所述第一归属变量的第二值不是所述预定无效值,则返回所述第一归属变量的第二值。
9.根据权利要求7所述的装置,其中,所述第一记录单元包括,读取子单元,配置为,如果所述第一关联变量的第一值大于所述第一归属变量的第一值,则读取第二交易对应的第二关联变量的第一值,第一操作子单元,配置为,如果第二关联变量的第一值为第二交易的编号,则进行以下原子操作:读取第二关联变量的第二值,如果第二关联变量的第二值为第二交易的编号,则将第二关联变量的值修改为所述第一关联变量的第一值,如果第二关联变量的第二值不是第二交易的编号,则返回第二关联变量的第二值。
10.根据权利要求9所述的装置,还包括,第二操作单元,配置为,如果所述第一关联变量的第一值大于所述第一归属变量的第一值,进行以下原子操作:读取所述第一归属变量的第三值,如果所述第一归属变量的第三值为所述第一归属变量的第一值,则将所述第一归属变量的值修改为所述第一关联变量的第一值,如果所述第一归属变量的第三值不是所述第一关联变量的第一值,则返回所述第一归属变量的第三值。
11.根据权利要求7所述的装置,其中,所述第一记录单元包括,第二操作子单元,配置为,如果所述第一关联变量的第一值小于所述第一归属变量的第一值,并且如果所述第一关联变量的第一值为第一交易的编号,则进行以下原子操作:读取所述第一关联变量的第二值,如果所述第一关联变量的第二值为所述第一交易的编号,则将所述第一关联变量的值修改为所述第二交易的编号,如果所述第一关联变量的第二值不等于所述第一交易的编号,则返回所述第一关联变量的第二值。
12.根据权利要求11所述的装置,其中,所述第一关联变量的第二值为第三交易的编号,所述装置还包括,第二记录单元,配置为,基于所述第一关联变量的第二值和所述第一归属变量的第一值,对所述关联数组中的原子变量进行原子比较修改操作,以在所述关联数组中记录所述第三交易与第二交易的关联性。
13.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-6中任一项的所述的方法。
14.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-6中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010889817.4A CN111754349B (zh) | 2020-08-28 | 2020-08-28 | 对区块链中的交易进行分组的方法和装置 |
EP21181635.0A EP3961431B1 (en) | 2020-08-28 | 2021-06-25 | Method and apparatus for grouping transactions that need to be serially executed based on a sequence of transactions in one block of a blockchain |
US17/364,021 US11263623B1 (en) | 2020-08-28 | 2021-06-30 | Method and apparatus for grouping transactions in blockchain |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010889817.4A CN111754349B (zh) | 2020-08-28 | 2020-08-28 | 对区块链中的交易进行分组的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111754349A CN111754349A (zh) | 2020-10-09 |
CN111754349B true CN111754349B (zh) | 2020-12-04 |
Family
ID=72713298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010889817.4A Active CN111754349B (zh) | 2020-08-28 | 2020-08-28 | 对区块链中的交易进行分组的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11263623B1 (zh) |
EP (1) | EP3961431B1 (zh) |
CN (1) | CN111754349B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112001797B (zh) * | 2020-10-28 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 对区块链中的交易进行分组的方法和装置 |
CN112712433B (zh) * | 2021-01-08 | 2023-06-20 | 支付宝实验室(新加坡)有限公司 | 一种基于区块链的数据状态管理和查询方法及区块链装置 |
CN113436017B (zh) * | 2021-07-07 | 2022-06-21 | 支付宝(杭州)信息技术有限公司 | 交易处理方法、装置及设备 |
CN113743943B (zh) * | 2021-11-04 | 2022-07-08 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法、区块链、主节点和从节点 |
CN113744063B (zh) * | 2021-11-04 | 2022-02-08 | 支付宝(杭州)信息技术有限公司 | 区块链中执行交易的方法及装置 |
CN114708103B (zh) * | 2022-06-06 | 2022-08-30 | 杭州费尔斯通科技有限公司 | 数据资产交易方法、计算机设备以及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109598598A (zh) * | 2018-10-25 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 基于区块链的交易处理方法及装置、电子设备 |
CN110517140A (zh) * | 2019-08-26 | 2019-11-29 | 华东师范大学 | 一种区块链智能合约交易并发执行方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629234B (zh) | 2012-01-18 | 2015-01-21 | 物联微电子(常熟)有限公司 | 一种单片机片内置Flash数据快速检索方法 |
US9858303B2 (en) | 2015-01-12 | 2018-01-02 | International Business Machines Corporation | In-memory latch-free index structure |
US10007913B2 (en) | 2015-05-05 | 2018-06-26 | ShoCard, Inc. | Identity management service using a blockchain providing identity transactions between devices |
US20180240062A1 (en) * | 2015-10-28 | 2018-08-23 | Fractal Industries, Inc. | Collaborative algorithm development, deployment, and tuning platform |
US10255108B2 (en) | 2016-01-26 | 2019-04-09 | International Business Machines Corporation | Parallel execution of blockchain transactions |
CN106095745A (zh) * | 2016-05-27 | 2016-11-09 | 厦门市美亚柏科信息股份有限公司 | 基于通讯记录的交易记录提取方法及其*** |
CN106656974B (zh) * | 2016-10-17 | 2019-07-16 | 江苏通付盾科技有限公司 | 区块链的分组共识方法及*** |
US10896195B2 (en) * | 2018-07-29 | 2021-01-19 | International Business Machines Corporation | Automatic generation of smart contracts |
EP3566391B1 (en) * | 2018-12-28 | 2021-04-21 | Advanced New Technologies Co., Ltd. | Parallel execution of transactions in a blockchain network based on smart contract whitelists |
CN110535825B (zh) | 2019-07-16 | 2020-08-14 | 北京大学 | 一种特征网络流的数据识别方法 |
CN110728578A (zh) * | 2019-09-29 | 2020-01-24 | 南京金宁汇科技有限公司 | 区块链交易的并行执行方法、***及存储介质 |
CN111882435B (zh) | 2020-03-12 | 2023-01-31 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法及装置 |
CN111475262B (zh) * | 2020-04-02 | 2024-02-06 | 百度国际科技(深圳)有限公司 | 区块链中事务请求处理方法、装置、设备和介质 |
CN111563093B (zh) * | 2020-05-15 | 2023-04-25 | 电子科技大学 | 一种基于联盟区块链冲突交易检测与规避***的方法 |
-
2020
- 2020-08-28 CN CN202010889817.4A patent/CN111754349B/zh active Active
-
2021
- 2021-06-25 EP EP21181635.0A patent/EP3961431B1/en active Active
- 2021-06-30 US US17/364,021 patent/US11263623B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109598598A (zh) * | 2018-10-25 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 基于区块链的交易处理方法及装置、电子设备 |
CN110517140A (zh) * | 2019-08-26 | 2019-11-29 | 华东师范大学 | 一种区块链智能合约交易并发执行方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3961431A1 (en) | 2022-03-02 |
US20220067726A1 (en) | 2022-03-03 |
US11263623B1 (en) | 2022-03-01 |
CN111754349A (zh) | 2020-10-09 |
EP3961431B1 (en) | 2023-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111754349B (zh) | 对区块链中的交易进行分组的方法和装置 | |
CN108984789B (zh) | 分布式记账的方法、装置、存储介质及电子设备 | |
CN111754350B (zh) | 并行获取区块链中的交易访问变量的编号的方法和装置 | |
CN112001797B (zh) | 对区块链中的交易进行分组的方法和装置 | |
CN110532038B (zh) | 一种基于Java智能合约的并行执行方法 | |
CN111008201B (zh) | 并行修改和读取状态树的方法和装置 | |
CN110235162B (zh) | 区块链***数据处理方法和区块的生成方法 | |
CN110659284A (zh) | 基于树图结构的区块定序方法及***、数据处理终端 | |
CN108920412B (zh) | 针对异构计算机体系结构的算法自动调优方法 | |
CN109522428A (zh) | 一种基于索引定位的图计算***的外存访问方法 | |
CN113421073A (zh) | 在区块链中并发执行交易的方法和装置 | |
CN110675255A (zh) | 在区块链中并发执行交易的方法和装置 | |
Patil et al. | Greybox fuzzing as a contextual bandits problem | |
CN113743943B (zh) | 在区块链中执行交易的方法、区块链、主节点和从节点 | |
CN114331440A (zh) | 一种冲突检测及性能优化方法和装置 | |
CN110706108B (zh) | 在区块链中并发执行交易的方法和装置 | |
CN110689344B (zh) | 在区块链中并发执行交易的方法和装置 | |
Simsiri et al. | Work‐efficient parallel union‐find | |
CN110348693B (zh) | 基于多核计算的多机器人快速任务调度方法 | |
CN114511330B (zh) | 一种基于改进的cnn-rf的以太坊庞氏骗局检测方法及*** | |
Sun et al. | GBCL: reduce concurrency conflicts in hyperledger fabric | |
CN110515707A (zh) | 基于预先事务处理的确定性并发控制方法及*** | |
CN114064982A (zh) | 基于快照相似性的大规模时变图存储方法及*** | |
Yam-Uicab et al. | A parallel algorithm for the counting of ellipses present in conglomerates using GPU | |
CN115982207B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40039428 Country of ref document: HK |