CN116993340A - 一种交易处理方法、装置、设备、存储介质及程序产品 - Google Patents
一种交易处理方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN116993340A CN116993340A CN202210805161.2A CN202210805161A CN116993340A CN 116993340 A CN116993340 A CN 116993340A CN 202210805161 A CN202210805161 A CN 202210805161A CN 116993340 A CN116993340 A CN 116993340A
- Authority
- CN
- China
- Prior art keywords
- transaction
- contract
- dependency
- intelligent
- target
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 30
- 238000000034 method Methods 0.000 claims abstract description 45
- 238000012545 processing Methods 0.000 claims description 102
- 230000001419 dependent effect Effects 0.000 claims description 37
- 230000015654 memory Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 9
- 230000003313 weakening effect Effects 0.000 claims description 9
- 238000013473 artificial intelligence Methods 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 abstract description 5
- 230000000875 corresponding effect Effects 0.000 description 104
- 238000010586 diagram Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- RWSOTUBLDIXVET-UHFFFAOYSA-N Dihydrogen sulfide Chemical compound S RWSOTUBLDIXVET-UHFFFAOYSA-N 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010924 continuous production Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
- 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
-
- 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/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- 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/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
-
- 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/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- 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
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种交易处理方法、装置、设备、存储介质及程序产品,应用于区块链领域、云技术、人工智能、智慧交通和车载等各种交易执行场景;该交易处理方法包括:基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,生成至少两个交易序列,不同交易序列的任两个交易所分别调用的智能合约之间是独立的;并行执行至少两个交易序列,得到每个交易的操作对象集合;遍历交易集合,并基于每个交易的操作对象集合,调整每个目标交易在至少两个交易序列中的执行顺序,目标交易为遍历到的交易且与未遍历到的至少一个交易之间包括共同操作对象;当遍历结束时,基于调整后的执行顺序再次执行每个目标交易。通过本申请,能够提升交易执行效率。
Description
技术领域
本申请涉及区块链领域中的交易处理技术,尤其涉及一种交易处理方法、装置、设备、存储介质及程序产品。
背景技术
在区块链网络中,与区块对应的多个交易之间可能是存在冲突的,因此,为了并发执行区块对应的多个交易,通常对多个交易进行预执行,以在降低执行结果错误的情况下提升交易执行效率;然而,交易在预执行时会导致资源消耗较大,时间耗时较长,从而,交易执行的效率仍然较低。
发明内容
本申请实施例提供一种交易处理方法、装置、设备、计算机可读存储介质及计算机程序产品,能够降低交易执行时的资源消耗,提升交易执行效率。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种交易处理方法,包括:
基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,生成至少两个交易序列,其中,不同所述交易序列的任两个所述交易所分别调用的所述智能合约之间是独立的,所述合约依赖关系包括每个所述智能合约与对应的至少一个所述智能合约之间分别对应的依赖信息;
并行执行至少两个所述交易序列,得到每个所述交易的操作对象集合;
遍历所述交易集合,并基于每个所述交易的所述操作对象集合,调整每个目标交易在至少两个所述交易序列中的执行顺序,其中,所述目标交易为遍历到的所述交易、且与未遍历到的至少一个所述交易之间包括共同操作对象;
当遍历结束时,基于调整后的执行顺序,再次执行每个所述目标交易。
本申请实施例提供一种交易处理装置,包括:
序列构建模块,用于基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,生成至少两个交易序列,其中,不同所述交易序列的任两个所述交易所分别调用的所述智能合约之间是独立的,所述合约依赖关系包括每个所述智能合约与对应的至少一个所述智能合约之间分别对应的依赖信息;
交易执行模块,用于并行执行至少两个所述交易序列,得到每个所述交易的操作对象集合;
冲突判断模块,用于遍历所述交易集合,并基于每个所述交易的所述操作对象集合,调整每个目标交易在至少两个所述交易序列中的执行顺序,其中,所述目标交易为遍历到的所述交易、且与未遍历到的至少一个所述交易之间包括共同操作对象;
所述交易执行模块,还用于当遍历结束时,基于调整后的执行顺序,再次执行每个所述目标交易。
在本申请实施例中,所述序列构建模块,还用于将所述交易集合中每个所述交易所调用的所述智能合约,组合为与所述交易集合对应的交易合约集合;当基于所述合约依赖关系,从所述交易合约集合中,确定出与当前交易所调用的当前智能合约依赖的依赖合约集合时,将所述依赖合约集合中的每个所述智能合约在所述交易集合中对应的所述交易,组合为所述当前交易的第一冲突交易集合,其中,所述当前交易为所述交易集合中的任一所述交易;将所述当前交易和所述第一冲突交易集合,确定为所述交易序列,得到与所述交易集合对应的至少两个所述交易序列。
在本申请实施例中,所述序列构建模块,还用于当基于所述合约依赖关系,确定所述当前智能合约与剩余智能合约独立时,将所述当前交易确定为所述交易序列,得到与所述交易集合对应的至少两个所述交易序列,其中,所述剩余智能合约包括所述交易合约集合中除所述当前智能合约之外的所述智能合约。
在本申请实施例中,当所述依赖信息包括依赖概率时,所述序列构建模块,还用于当基于所述合约依赖关系,从所述交易合约集合中,确定出与所述当前智能合约之间的所述依赖概率大于概率阈值的至少一个第一依赖智能合约时,将至少一个所述第一依赖智能合约,组合为所述依赖合约集合。
在本申请实施例中,当所述依赖信息包括依赖概率和交易执行次数时,所述序列构建模块,还用于当基于所述合约依赖关系,从所述交易合约集合中,确定出与所述当前智能合约之间的所述依赖概率大于概率阈值、且所述交易执行次数大于次数阈值的至少一个第二依赖智能合约时,将至少一个所述第二依赖智能合约,组合为所述依赖合约集合。
在本申请实施例中,所述冲突判断模块,还用于基于每个所述交易的所述操作对象集合,确定遍历到的所述交易所对应的第一操作对象集合、以及未遍历到的至少一个所述交易所对应的至少一个所述操作对象集合;当所述第一操作对象集合与至少一个所述操作对象集合之间包括共同操作对象时,确定遍历到的所述交易为所述目标交易,并获取所述目标交易的第二冲突交易集合;在至少两个所述交易序列中,将所述目标交易的执行顺序调整至所述第二冲突交易集合之后。
在本申请实施例中,所述交易处理装置还包括合约更新模块,用于从所述合约依赖关系中,获取每个所述智能合约对应的至少一个所述智能合约中包括目标智能合约的至少一个子合约依赖关系,其中,所述目标智能合约为遍历到的所述交易所调用的所述智能合约,所述子合约依赖关系表示一个所述智能合约与对应的至少一个所述智能合约之间分别对应的所述依赖信息;基于所述第一操作对象集合与至少一个所述操作对象集合之间的关系,在至少一个所述子合约依赖关系的每个所述子合约依赖关系中,更新所述目标智能合约对应的所述依赖信息,得到新合约依赖关系;基于新交易集合中每个新交易所调用的所述智能合约、以及所述新合约依赖关系,生成至少两个新交易序列,并通过并行执行至少两个所述新交易序列,执行所述新交易集合。
在本申请实施例中,所述合约更新模块,还用于当所述第一操作对象集合与至少一个所述操作对象集合之间的关系为冲突关系时,从至少一个所述子合约依赖关系中,确定出第一智能合约属于冲突合约集合的目标子合约依赖关系集合;其中,所述冲突关系是指所述第一操作对象集合与至少一个所述操作对象集合之间包括共同操作对象,所述第一智能合约为所述子合约依赖关系的参考智能合约,所述冲突合约集合包括所述第二冲突交易集合中每个所述交易所调用的所述智能合约;从至少一个所述子合约依赖关系中,确定除所述目标子合约依赖关系集合之外的剩余子合约依赖关系集合;对所述目标子合约依赖关系集合中所述目标智能合约的所述依赖信息进行增强处理,并对所述剩余子合约依赖关系集合中所述目标智能合约的所述依赖信息进行减弱处理,得到所述新合约依赖关系。
在本申请实施例中,所述合约更新模块,还用于当所述第一操作对象集合与至少一个所述操作对象集合之间的关系为独立关系时,对至少一个所述子合约依赖关系中所述目标智能合约的所述依赖信息进行减弱处理,得到所述新合约依赖关系,其中,所述独立关系是指所述第一操作对象集合与至少一个所述操作对象集合之间不包括共同操作对象。
在本申请实施例中,所述合约更新模块,还用于对所述目标智能合约的所述依赖信息中的交易冲突次数和交易执行次数分别进行更新;基于更新后的所述交易冲突次数和更新后的所述交易执行次数,更新所述目标智能合约的所述依赖信息中的依赖概率。
在本申请实施例中,所述依赖信息中的所述交易执行次数通过位图的位图长度确定,所述依赖信息中的所述交易冲突次数通过所述位图的位图状态确定;所述合约更新模块,还用于基于所述子合约依赖关系中第一智能合约与冲突合约集合的所属关系,确定所述目标智能合约对应的待更新位状态;通过最大位图长度和所述待更新位状态,对所述依赖信息对应的所述位图进行滑动操作,以分别更新所述目标智能合约的所述依赖信息中的所述交易冲突次数和所述交易执行次数。
本申请实施例提供一种交易处理设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的交易处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令用于被处理器执行时,实现本申请实施例提供的交易处理方法。
本申请实施例提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时,实现本申请实施例提供的交易处理方法。
本申请实施例至少具有以下有益效果:通过合约依赖关系将智能合约之间依赖的交易作为一个交易序列,得到多个可并行的交易序列,实现了交易序列的并行执行,提升了交易执行效率;并且,完成执行之后,还通过是否包括共同操作对象对目标交易的执行顺序进行调整,提升了存在交易冲突的交易的执行准确度;因此,基于合约依赖关系将多个交易划分为至少两个交易序列,并行执行该至少两个交易序列,并对发生交易冲突的交易进行顺序调整后再次执行,能够在确定交易正确执行的情况下降低交易执行时的资源消耗,提升交易执行效率。
附图说明
图1是本申请实施例提供的一种示例性的区块结构的示意图;
图2是一种示例性的并行执行交易的示意图;
图3是另一种示例性的并行执行交易的示意图;
图4是本申请实施例提供的交易处理系统的架构示意图;
图5是本申请实施例提供的图4中的服务器的组成结构示意图;
图6是本申请实施例提供的交易处理方法的流程示意图一;
图7是本申请实施例提供的交易处理方法的流程示意图二;
图8是本申请实施例提供的一种示例性的交易执行流程示意图;
图9是本申请实施例提供的一种示例性的智能合约之间的依赖概率的示意图;
图10是本申请实施例提供的一种示例性的确定合约依赖关系的示意图;
图11是本申请实施例提供的一种示例性的基于合约依赖关系构建交易有向无环图(Direct Acyclic Graph,DAG)的示意图;
图12是本申请实施例提供的一种示例性的执行交易的示意图;
图13是本申请实施例提供的另一种示例性的交易执行流程示意图;
图14是本申请实施例提供的一种示例性的更新滑动窗口的示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本申请实施例中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)交易(Transaction),等同于计算机术语“事务”,并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本申请实施例遵循了这一习惯。在采用基于账户模型的区块链网络中,交易包括三种不同的交易类型:部署(Deploy),调用(Invoke)和查询(Query)。部署交易用于向区块链网络的节点安装指定的链码,调用和查询类型的交易用于调用部署好的链码,以实现对账本中的目标账户的相关数据的操作,包括增、查、改的操作,用于修改账户中的键值(Key-Value)对形式的数据,或者在账本中增加新的账户。
2)区块(Block),记录一段时间内交易所更新的账本数据的数据结构,被标记上时间戳和之前一个区块的独特标记(例如数字指纹),区块经过区块链网络中节点的共识验证后,会被追加到区块链的末尾成为新的区块。
参见图1,图1是本申请实施例提供的一种示例性的区块结构的示意图;如图1所示,区块1-1至区块1-J(J为大于1的正整数)中每个区块中包括数据、本区块存储交易记录的哈希值(称为本区块哈希)、以及前一区块的哈希值(称为前一区块哈希),各区块通过哈希值连接形成区块链。
3)区块链(Blockchain),区块以顺序相连的方式组合成的一种链式数据结构,在每个区块中引用前一个区块或者其子集的哈希值,从而以密码学的方式保证所记录交易的防篡改和防伪造。
4)区块链网络,通过共识的方式将新区块纳入区块链所获得的一系列的、无中心的节点的集合。
5)共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对交易结果达成一致;实现共识的机制包括工作量证明(PoW)、权益证明(PoS,Proof ofStake)、股份授权证明(DPoS,Delegated Proof-of-Stake)和消逝时间量证明(PoET,Proofof Elapsed Time)等。
6)智能合约,计算机化的协议,通过执行智能合约来执行某个合约的条款,是部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求,该代码实现用于完成自动化的交易;例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址等;在本申请实施例中,智能合约为执行交易时所调用的合约。
7)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
8)DAG,一个没有有向循环的、且有限的有向图。从有向无环图中的任意一个顶点出发,根据方向无法回到原顶点的图就叫做DAG。本申请实施例中,可以基于DAG确定各交易之间的执行方式和执行顺序。
9)人工智能(Artificial Intelligence,AI),是利用数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。在本申请实施例中,可通过人工智能的方式确定依赖概率等。
10)云计算(Cloud Computing),是一种计算模式,通过将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务;其中,为资源池提供资源的网络被称为“云”,“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。在本申请实施例中,交易处理设备可以为云设备。
需要说明的是,在区块链网络中,交易的执行是通过执行智能合约来实现的,并且,最耗时的处理过程为智能合约执行过程;从而,提高智能合约的执行性能能够降低交易的执行耗时;一般来说,为了提高智能合约的执行性能,通常通过对交易并发执行来实现;然而,交易间是存在冲突的,并行执行存在冲突的交易将会导致交易执行结果错误;因此,为了降低交易执行结果错误的情况并提高智能合约执行效率,通常对交易进行预执行。
参见图2,图2是一种示例性的并行执行交易的示意图;如图2所示,列表2-1是通过预执行交易(Tx0至Tx5)的方式来生成对应的读写集(比如,对应的主键值)获得的;接着,基于列表2-1中读写集的关系,并按照交易的打包顺序(即为交易发送至区块的顺序)生成交易DAG 2-2;这里,所生成的交易DAG 2-2是一种确定的交易DAG。
参见图3,图3是另一种示例性的并行执行交易的示意图;如图3所示,列表3-1是通过预执行交易(Tx0至Tx5)的方式来生成对应的读写集,并结合每个交易的执行效率(对应于交易执行的耗时,数值越小,耗时越小,执行效率越高)获得的;接着,基于列表3-1中读写集的关系,并按照交易的执行效率生成交易DAG 3-2;其中,当按照交易的执行效率生成交易DAG时,是一种边预执行边生成的过程,先预执行完的交易就优先参与交易DAG的生成,能够提升交易DAG的生成效率;而由于执行效率在预执行之前是无法确认的,不同的预执行环境将会对应不同的执行效果,故生成的是一种不确定的交易DAG。
由于上述生成交易DAG的过程中均采用了预执行;并且由于无法确认交易内部的执行逻辑,所以会出现多次预执行交易的情况,有时相比串行的时间复杂度较高(比如,O(N2)的时间复杂度,导致交易的执行效率低于串行时交易的执行效率)。
基于此,本申请实施例提供一种交易处理方法、装置、设备、计算机可读存储介质及计算机程序产品,能够提升交易处理的效率。下面说明本申请实施例提供的交易处理设备的示例性应用,本申请实施例提供的交易处理设备可以实施为智能手机、智能手表、笔记本电脑、平板电脑、台式计算机、智能家电、机顶盒、智能车载设备、便携式音乐播放器、个人数字助理、专用消息设备、智能语音交互设备、便携式游戏设备和智能音箱等各种类型的终端,也可以实施为服务器。下面,将说明交易处理设备实施为服务器时的示例性应用。
参见图4,图4是本申请实施例提供的交易处理系统的架构示意图;如图4所示,为支撑一个交易处理应用,在交易处理系统100中,终端200(示例性示出了终端200-1和终端200-2)通过网络300连接服务器400,网络300可以是广域网或者局域网,又或者是二者的组合,服务器400是区块链网络600中的一个节点。另外,该交易处理系统100中还包括数据库500,用于向服务器400提供数据支持;并且,图4中示出的为数据库500独立于服务器400的一种情况,此外,数据库500还可以集成在服务器200中,本申请实施例对此不作限定。
终端200,用于在图形界面(示例性示出了图形界面210-1和图形界面210-2)显示交易控件(比如,充值按钮、转移按钮和虚拟红包按钮),并响应于对交易控件的触发操作(比如,图形界面210-1中对转移按钮触发并进行虚拟资产转移的操作,图形界面210-2中对充值按钮触发并进行虚拟资产充值的操作),通过网络300向区块链网络600中的服务器400发送交易。
服务器400,用于通过网络300接收终端200发送的交易,获得交易集合;基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,生成至少两个交易序列,其中,不同交易序列的任两个交易所分别调用的智能合约之间是独立的,合约依赖关系包括每个智能合约与对应的至少一个智能合约之间分别对应的依赖信息;并行执行至少两个交易序列,得到每个交易的操作对象集合;遍历交易集合,并基于每个交易的操作对象集合,调整每个目标交易在至少两个交易序列中的执行顺序,其中,目标交易为遍历到的交易、且与未遍历到的至少一个交易之间包括共同操作对象;当遍历结束时,基于调整后的执行顺序,再次执行每个目标交易。
在一些实施例中,服务器400可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,ContentDelivery Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端200可以是智能手机、智能手表、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、智能车载设备、便携式音乐播放器、个人数字助理、专用消息设备、便携式游戏设备和智能音箱等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不作限制。
参见图5,图5是本申请实施例提供的图4中的服务器的组成结构示意图,图5所示的服务器400包括:至少一个处理器410、存储器450和至少一个网络接口420,在一些实施例中,服务器400还包括用户接口430。服务器400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他电子设备,示例性的网络接口420包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的交易处理装置可以采用软件方式实现,图5示出了存储在存储器450中的交易处理装置455,其可以是程序和插件等形式的软件,包括以下软件模块:序列构建模块4551、交易执行模块4552、冲突判断模块4553和合约更新模块4554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在一些实施例中,本申请实施例提供的交易处理装置可以采用硬件方式实现,作为示例,本申请实施例提供的交易处理装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的交易处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific IntegratedCircuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
下面,将结合本申请实施例提供的交易处理设备的示例性应用和实施,说明本申请实施例提供的交易处理方法。另外,本申请实施例提供的交易处理方法应用于区块链网络、云技术、人工智能、智慧交通和车载等各种交易执行场景。
参见图6,图6是本申请实施例提供的交易处理方法的流程示意图一,将结合图6示出的步骤进行说明。
步骤601、基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,生成至少两个交易序列。
在本申请实施例中,当交易处理设备获得了一批待执行的交易时,该一批待执行的交易即为交易集合,从而,交易集合中包括多个交易。由于交易的执行需要通过调用智能合约才能完成执行,因此,交易集合中的每个交易均对应自身所调用的智能合约。这里,交易处理设备能够获取到合约依赖关系,该合约依赖关系包括每个智能合约与对应的至少一个智能合约(即为各个智能合约中的其他智能合约)之间分别对应的依赖信息;因此,交易处理设备能够基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,确定多个基于智能合约独立的交易序列。
需要说明的是,合约依赖关系为执行交易集合之前确定的各个智能合约之间的依赖信息,可以是依赖信息初始设置的合约依赖关系,还可以是依赖信息经过至少一次更新后的合约依赖关系,等等,本申请实施例对此不作限定。
还需要说明的是,属于不同交易序列的任两个交易,所分别调用的智能合约之间是独立的;也就是说,交易序列对应的智能合约序列之间不存在具有依赖关系的智能合约,而交易序列中可以包括一个交易(此时,交易序列对应的智能合约序列包括一个智能合约),也可以包括多个交易(此时,交易序列对应的智能合约序列包括多个智能合约),而交易序列对应的智能合约序列内包括多个智能合约时,智能合约序列中的多个智能合约之间存在具有依赖关系的智能合约,其中,智能合约序列是指交易序列中的每个交易所调用的智能合约组成的序列。另外,智能合约之间是独立的,以及智能合约之间是依赖的关系,是基于依赖信息确定的;其中,独立和依赖是相对的,依赖信息包括依赖概率和交易执行次数中的至少一种,依赖概率是指两智能合约之间的依赖程度,交易执行次数是指智能合约被交易调用的次数;从而,可以是依赖概率大于概率阈值时智能合约之间是独立的,依赖概率小于或等于概率阈值时智能合约之间是依赖的;还可以是依赖概率大于概率阈值、且交易执行次数大于次数阈值时智能合约之间是独立的,反之是依赖的,等等,本申请实施例对此不作限定。另外,依赖信息是基于历史交易的操作对象冲突确定的,其中,操作对象冲突是指不同交易之间包括共同操作对象。
步骤602、并行执行至少两个交易序列,得到每个交易的操作对象集合。
在本申请实施例中,交易处理设备获得了至少两个交易序列之后,对该至少两个交易序列进行并行执行,以实现对交易集合中交易的执行。其中,交易处理设备每完成一个交易的执行,针对该完成执行的交易,也就能够获得一个该交易所对应的操作对象集合,该操作对象集合表示该交易执行时所读写的对象。
需要说明的是,交易处理设备在执行包括多个交易的交易序列时,针对该交易序列中的多个交易,可以采用串行的方式,也可以采用并行的方式,又可以是串行和并行结合的方式,等等,本申请实施例对此不作限定。另外,交易处理设备可以采用线程池的方式实现并行。
在本申请实施例中,交易处理设备并行执行至少两个交易序列,得到每个交易的操作对象集合,包括:并行执行至少两个交易序列,并在至少两个交易序列的每个交易序列中,确定在交易之后的相邻交易;当相邻交易所包括交易的数量为多个时,并行执行相邻交易中的多个交易,得到每个交易的操作对象集合。
步骤603、遍历交易集合,并基于每个交易的操作对象集合,调整每个目标交易在至少两个交易序列中的执行顺序。
在本申请实施例中,交易处理设备完成了至少两个交易序列的并行执行之后,还需要对已完成执行的交易进行交易冲突的检测;交易冲突的检测通过检测是否包括共同操作对象实现。这里,交易处理设备通过遍历交易集合,来基于各个交易分别对应的操作对象集合,判断每个交易与其他交易之间是否存在共同操作对象;并通过执行顺序的调整使得存在冲突的交易是串行的。
需要说明的是,目标交易为遍历到的交易,且目标交易与未遍历到的至少一个交易之间包括共同操作对象;其中,包括共同操作对象可以是两个操作对象集合之间包括至少一个共同操作对象。这里,交易处理设备获得的调整后的执行顺序,可以是未遍历到的至少一个交易中与目标交易存在交易冲突的交易所对应的执行顺序之后的执行顺序。
步骤604、当遍历结束时,基于调整后的执行顺序,再次执行每个目标交易。
在本申请实施例中,交易处理设备通过对交易集合中的交易进行逐个遍历,来确定冲突的交易,当遍历结束时,也就完成了对所有存在交易冲突的交易的顺序调整,使得存在交易冲突的交易是串行的。另外,由于存在交易冲突的交易的并行执行是导致交易执行错误的原因,因此,交易处理设备在完成执行顺序的调整后,基于调整后的执行顺序,再次执行每个目标交易;当完成每个目标交易的再次执行时,也就完成了交易集合的执行。
可以理解的是,通过合约依赖关系将智能合约之间依赖的交易作为一个交易序列,得到多个可并行的交易序列,实现了交易序列的并行执行,提升了交易执行效率;并且,完成执行之后,还通过是否包括共同操作对象对目标交易的执行顺序进行调整,提升了存在交易冲突的交易的执行准确度;因此,基于合约依赖关系将多个交易划分为至少两个交易序列,并行执行该至少两个交易序列,并对发生交易冲突的交易进行顺序调整后再次执行,能够在确定交易正确执行的情况下降低交易执行时的资源消耗,提升交易执行效率。也就是说,如此,能够保证不存在交易冲突的交易执行一遍,以及通过合约依赖关系也能降低存在交易冲突的交易的执行次数,从而,能够提升交易执行效率。
在本申请实施例中,步骤601可通过步骤6011至步骤6013(图中未示出)实现;也就是说,交易处理设备基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,生成至少两个交易序列,包括步骤6011至步骤6013,下面对各步骤分别进行说明。
步骤6011、将交易集合中每个交易所调用的智能合约,组合为与交易集合对应的交易合约集合。
在本申请实施例中,交易处理设备将交易集合中每个交易所调用的智能合约进行组合,也就获得了与交易集合对应的交易合约集合;也就是说,交易合约集合是交易集合中所有交易分别调用的智能合约构成的集合,包括交易集合中每个交易所调用的智能合约。
步骤6012、当基于合约依赖关系,从交易合约集合中,确定出与当前交易所调用的当前智能合约依赖的依赖合约集合时,将依赖合约集合中的每个智能合约在交易集合中对应的交易,组合为当前交易的第一冲突交易集合。
在本申请实施例中,交易处理设备对交易集合中的每个交易所调用的智能合约与其他交易所调用的智能合约之间的关系(依赖或独立)进行确定;当基于合约依赖关系,从交易合约集合中,确定出与当前交易所调用的当前智能合约依赖的依赖合约集合时,表明交易集合中的当前交易与交易集合中的其他交易基于合约依赖关系是可能存在交易冲突的,从而,此时,交易处理设备组合依赖合约集合中的每个智能合约在交易集合中对应的交易,也就得到了当前交易的第一冲突交易集合;其中,当前交易为交易集合中的任一交易,第一冲突交易集合为基于合约依赖关系从交易集合中预估出的与当前交易存在交易冲突的交易组成的集合。
步骤6013、将当前交易和第一冲突交易集合,确定为交易序列,得到与交易集合对应的至少两个交易序列。
在本申请实施例中,由于当前交易和第一冲突交易集合之间存在交易冲突,故交易处理设备将当前交易和第一冲突交易集合确定为一个交易序列,以串行方式执行当前交易和第一冲突交易集合。如此,当交易处理设备针对交易集合中的每个交易均确定了对应的交易序列之后,也就得到了与交易集合对应的至少两个交易序列。
在本申请实施例中,步骤6011之后还包括步骤6014(图中未示出);也就是说,交易处理设备将交易集合中每个交易所调用的智能合约,组合为与交易集合对应的交易合约集合之后,该交易处理方法还包括步骤6014,下面对该步骤进行说明。
步骤6014、当基于合约依赖关系,确定当前智能合约与剩余智能合约独立时,将当前交易确定为交易序列,得到与交易集合对应的至少两个交易序列。
在本申请实施例中,当交易处理设备基于合约依赖关系,确定当前智能合约与剩余智能合约独立时,表明基于合约依赖关系预估出当前交易与交易集合中的其他交易是独立的,不存在交易冲突;从而,交易处理设备将当前交易自身作为一个交易序列。如此,当交易处理设备针对交易集合中的每个交易均确定对应的交易序列之后,也就得到了与交易集合对应的至少两个交易序列;其中,剩余智能合约包括交易合约集合中除当前智能合约之外的智能合约。
需要说明的是,交易处理设备在获得交易集合对应的至少两个交易序列的过程中,可以采用步骤6011至步骤6013实现,也可以采用步骤6011和步骤6014实现,又可以是两者的结合,等等,本申请实施例对此不作限定。
在本申请实施例中,当依赖信息包括依赖概率时,步骤6011中交易处理设备将交易集合中每个交易所调用的智能合约,组合为与交易集合对应的交易合约集合之后,该交易处理方法还包括:当交易处理设备基于合约依赖关系,从交易合约集合中,确定出与当前智能合约之间的依赖概率大于概率阈值的至少一个第一依赖智能合约时,将至少一个第一依赖智能合约,组合为依赖合约集合。
在本申请实施例中,当依赖信息包括依赖概率时,步骤6011中交易处理设备将交易集合中每个交易所调用的智能合约,组合为与交易集合对应的交易合约集合之后,该交易处理方法还包括:当交易处理设备基于合约依赖关系,确定交易合约集合与当前智能合约之间的依赖概率均小于或等于概率阈值时,确定当前智能合约与剩余智能合约独立。
在本申请实施例中,当依赖信息包括依赖概率和交易执行次数时,步骤6011中交易处理设备将交易集合中每个交易所调用的智能合约,组合为与交易集合对应的交易合约集合之后,交易处理方法还包括:当交易处理设备基于合约依赖关系,从交易合约集合中,确定出与当前智能合约之间的依赖概率大于概率阈值、且交易执行次数大于次数阈值的至少一个第二依赖智能合约时,将至少一个第二依赖智能合约,组合为依赖合约集合。
在本申请实施例中,当依赖信息包括依赖概率和交易执行次数时,步骤6011中交易处理设备将交易集合中每个交易所调用的智能合约,组合为与交易集合对应的交易合约集合之后,该交易处理方法还包括:当交易处理设备基于合约依赖关系,确定交易合约集合与当前智能合约之间满足独立条件时,确定当前智能合约与剩余智能合约独立。其中,独立条件包括以下至少一项:依赖概率均小于或等于概率阈值,交易执行次数小于或等于次数阈值,依赖概率均小于或等于概率阈值、且交易执行次数大于次数阈值,依赖概率均大于概率阈值、且交易执行次数小于或等于次数阈值。
参见图7,图7是本申请实施例提供的交易处理方法的流程示意图二;如图7所示,在本申请实施例中,步骤603可通过步骤6031至步骤6033实现;也就是说,交易处理设备基于每个交易的操作对象集合,调整每个目标交易在至少两个交易序列中的执行顺序,包括步骤6031至步骤6033,下面对各步骤分别进行说明。
步骤6031、基于每个交易的操作对象集合,确定遍历到的交易所对应的第一操作对象集合、以及未遍历到的至少一个交易所对应的至少一个操作对象集合。
在本申请实施例中,交易处理设备从获得的每个交易的操作对象集合中,确定遍历到的交易所对应的操作对象集合,也就获得了第一操作对象集合;交易处理设备还会从获得的每个交易的操作对象集合中,确定未遍历到的至少一个交易所对应的至少一个操作对象集合,其中,未遍历到的至少一个交易与至少一个操作对象集合一一对应。
步骤6032、当第一操作对象集合与至少一个操作对象集合之间包括共同操作对象时,确定遍历到的交易为目标交易,并获取目标交易的第二冲突交易集合。
在本申请实施例中,交易处理设备对第一操作对象集合与至少一个操作对象集合之间是否包括共同操作对象进行判断,当确定第一操作对象集合与至少一个操作对象集合之间包括共同操作对象时,表明遍历到的交易与至少一个未遍历到的交易之间存在交易冲突;从而,此时,交易处理设备能够确定所遍历到的交易为目标交易,并基于所包括的共同操作对象从未遍历到的至少一个交易中确定与目标交易存在交易冲突的第二冲突交易集合。易知,第二冲突交易集合为未遍历到的至少一个交易中与目标交易存在冲突的交易所构成的集合。
步骤6033、在至少两个交易序列中,将目标交易的执行顺序调整至第二冲突交易集合之后。
在本申请实施例中,交易处理设备为了使得目标交易处理设备与第二冲突交易集合是串行的,故将目标交易的执行顺序调整至第二冲突交易集合之后,以及通过再次执行目标交易实现交易集合的正确执行。
继续参见图7,在本申请实施例中,步骤6031之后还包括步骤6034至步骤6036;也就是说,交易处理设备基于每个交易的操作对象集合,确定遍历到的交易所对应的第一操作对象集合、以及未遍历到的至少一个交易所对应的至少一个操作对象集合之后,该交易处理方法还包括步骤6034至步骤6036,下面对各步骤分别进行说明。
步骤6034、从合约依赖关系中,获取每个智能合约对应的至少一个智能合约中包括目标智能合约的至少一个子合约依赖关系。
需要说明的是,由于合约依赖关系包括各个智能合约中每个智能合约和对应的至少一个智能合约之间的依赖信息,因此,如果将一个智能合约与对应的至少一个智能合约之间分别对应的依赖信息,确定为一个子合约依赖关系,则合约依赖关系是由子合约依赖关系组成的。
在本申请实施例中,交易处理设备还用于基于第一操作对象集合与至少一个操作对象集合之间的关系,更新合约依赖关系,得到新合约依赖关系;首先,交易处理设备先基于遍历到的交易所调用的目标智能合约,确定依赖信息待更新的至少一个子合约依赖关系。
步骤6035、基于第一操作对象集合与至少一个操作对象集合之间的关系,在至少一个子合约依赖关系的每个子合约依赖关系中,更新目标智能合约对应的依赖信息,得到新合约依赖关系。
在本申请实施例中,交易处理设备基于第一操作对象集合与至少一个操作对象集合之间的关系,即基于遍历到的交易与未遍历到的至少一个交易之间的冲突与否,来更新至少一个子合约关系中目标智能合约对应的依赖信息;当完成更新时,也就获得了新合约依赖关系。
步骤6036、基于新交易集合中每个新交易所调用的智能合约、以及新合约依赖关系,生成至少两个新交易序列,并通过并行执行至少两个新交易序列,执行新交易集合。
在本申请实施例中,交易处理设备获得了新合约依赖关系之后,当获得了新区块对应的新交易集合时,基于新合约依赖关系执行新交易集合。其中,交易处理设备基于新合约依赖关系执行新交易集合并更新新合约依赖关系的过程,与基于合约依赖关系执行交易集合并更新合约依赖关系的过程类似,本申请实施例在此不再重复描述。
在本申请实施例中,步骤6035中交易处理设备基于第一操作对象集合与至少一个操作对象集合之间的关系,在至少一个子合约依赖关系的每个子合约依赖关系中,更新目标智能合约对应的依赖信息,得到新合约依赖关系,包括:当第一操作对象集合与至少一个操作对象集合之间的关系为冲突关系时,交易处理设备从至少一个子合约依赖关系中,确定出第一智能合约属于冲突合约集合的目标子合约依赖关系集合;并从至少一个子合约依赖关系中,确定除目标子合约依赖关系集合之外的剩余子合约依赖关系集合;以及,对目标子合约依赖关系集合中目标智能合约的依赖信息进行增强处理,并对剩余子合约依赖关系集合中目标智能合约的依赖信息进行减弱处理,得到新合约依赖关系。
需要说明的是,冲突关系是指第一操作对象集合与至少一个操作对象集合之间包括共同操作对象,即为遍历到的交易与未遍历到的至少一个交易存在交易冲突;第一智能合约为子合约依赖关系的参考智能合约,即为子合约依赖关系中与至少一个智能合约对应的智能合约;冲突合约集合包括第二冲突交易集合中每个交易所调用的智能合约。增强处理包括以下至少一项:提高依赖概率,增加交易冲突次数,其中,交易冲突次数是指调用该智能合约的交易与调用参考智能合约的交易存在交易冲突的次数。减弱处理包括以下至少一项:降低依赖概率,降低交易冲突次数。另外,依赖概率基于交易冲突次数与交易执行次数的比值确定。
在本申请实施例中,步骤6035中交易处理设备基于第一操作对象集合与至少一个操作对象集合之间的关系,在至少一个子合约依赖关系的每个子合约依赖关系中,更新目标智能合约对应的依赖信息,得到新合约依赖关系,包括:当第一操作对象集合与至少一个操作对象集合之间的关系为独立关系时,交易处理设备对至少一个子合约依赖关系中目标智能合约的依赖信息进行减弱处理,得到新合约依赖关系。
需要说明的是,独立关系是指第一操作对象集合与至少一个操作对象集合之间不包括共同操作对象,即为遍历到的交易与未遍历到的至少一个交易不存在交易冲突。
可以理解的是,各个智能合约之间的依赖信息,在经过多次更新之后,会达到一种稳定状态;此时,结合智能合约之间的依赖信息执行区块对应的批量交易时,能够实现交易集合的准确执行。
在本申请实施例中,步骤6035中交易处理设备更新目标智能合约对应的依赖信息,包括:交易处理设备对目标智能合约的依赖信息中的交易冲突次数和交易执行次数分别进行更新;并基于更新后的交易冲突次数和更新后的交易执行次数,更新目标智能合约的依赖信息中的依赖概率。
需要说明的是,更新包括增强处理和减弱处理;其中,当更新包括增强处理时,交易冲突次数和交易执行次数均分别自增一;当更新包括减弱处理时,交易冲突次数和交易执行次数均分别自减一。
在本申请实施例中,依赖信息中的交易执行次数通过位图的位图长度确定,依赖信息中的交易冲突次数通过位图的位图状态确定;此时,交易处理设备对目标智能合约的依赖信息中的交易冲突次数和交易执行次数分别进行更新,包括:基于子合约依赖关系中第一智能合约与冲突合约集合的所属关系,确定目标智能合约对应的待更新位状态;通过最大位图长度(比如,5)和待更新位状态,对依赖信息对应的位图进行滑动操作,分别更新目标智能合约的依赖信息中的交易冲突次数和交易执行次数。其中,滑动操作是指将待更新位作为位图的最新状态位(即为最末位),并保留添加了待更新位后的连续的最大位图长度的状态位。
需要说明的是,位图状态为第一指定状态,或第二指定状态;当所属关系为第一智能合约属于冲突合约集合时,待更新位状态为第一指定状态,对应的标识比如为1;当所属关系为第一智能合约不属于冲突合约集合时,待更新位状态为第二指定状态值,对应的标识比如为0。其中,交易冲突次数是指第一指定状态的数量。
可以理解的是,由于位图是采用每一位来存放状态(对应两种状态,第一指定状态或第二指定状态,第一指定状态对应于冲突,第二指定状态对应于独立)的数据,能够降低对存储空间的占用量;另外,由于位图是通过位操作实现的,从而能够提升合约依赖信息的更新效率。此外,通过对依赖信息对应的位图设置最大位图长度,能够提升依赖信息与当前待执行交易的匹配程度,进而提升交易执行的效率。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
参见图8,图8是本申请实施例提供的一种示例性的交易执行流程示意图;如图8所示,该示例性的交易执行流程包括步骤801至步骤804,下面对各步骤分别进行说明。
步骤801、处理区块。
需要说明的是,区块中包括一批交易(称为交易集合)。
步骤802、加载合约依赖关系。
需要说明的是,合约依赖关系即为智能合约间依赖关系,智能合约之间根据依赖因子(称为依赖信息)构成合约依赖关系,该合约依赖关系描述了每个智能合约与其他智能合约的依赖关系。
这里,依赖因子包括依赖概率和交易执行数量(称为交易执行数量);其中,依赖概率表示两个智能合约之间依赖的概率,取值范围为[0,1],并且,依赖概率与依赖级别正相关。参见图9,图9是本申请实施例提供的一种示例性的智能合约之间的依赖概率的示意图;如图9所示,在区块链网络中,智能合约之间的依赖对应存在不同的依赖级别;并且,随着依赖概率的增大,依赖级别越高;从而,依赖级别9-1(0<依赖概率<0.4)、依赖级别9-2(0.4≤依赖概率<0.7)和依赖级别9-3(0.7≤依赖概率)依次增大;其中,智能合约CA分别与智能合约CB、智能合约CM、智能合约CE、智能合约CF和智能合约CN所属的依赖级别依次为依赖级别9-3、依赖级别9-3、依赖级别9-2、依赖级别9-1和依赖级别9-1。
需要说明的是,依赖概率可以作为智能合约间依赖关系的一个特征。比如,当基于依赖概率确定智能合约间依赖关系时,依赖概率高(大于概率阈值的依赖概率)的智能合约间为强依赖关系(称为依赖),在构建交易DAG时以冲突的方式处理(比如,串行处理),依赖概率低(小于或等于概率阈值的依赖概率)的智能合约间为弱依赖关系(称为独立),在构建交易DAG时以不冲突的方式处理(比如,并行处理)。根据图9中智能合约CA与其他智能合约的依赖关系,当概率阈值为0.6时,智能合约CA与其他智能合约间的依赖关系如表1所示。
表1
还需要说明的是,由于同一个合约的交易其实是连续的过程,因此,基于位图(Bitmap)并结合采样的方式来从整体上确定智能合约间依赖关系。也就是说,对应一个智能合约,还可以将依赖概率结合交易执行数量(即为智能合约被调用的次数)共同确定智能合约间依赖关系。
参见图10,图10是本申请实施例提供的一种示例性的确定合约依赖关系的示意图;如图10所示,当采样的基数(称为最大位图长度)为5即位图的长度为5位,以及确定智能合约依赖与否的依赖因子阈值包括:基础交易数量(称为次数阈值)为3和依赖概率为0.7时,针对依赖关系10-2(称为子合约依赖关系,其中,智能合约CA称为参考智能合约,与智能合约CA对应的智能合约CB、智能合约CE、智能合约CF和智能合约CM,称为对应的至少一个智能合约),可以确定智能合约CA分别与智能合约CB和智能合约CM为强依赖关系,智能合约CA分别与智能合约CE和智能合约CF为弱依赖关系;针对依赖关系10-4(称为子合约依赖关系),可以确定智能合约CA分别与智能合约CB、智能合约CE和智能合约CM为强依赖关系,智能合约CA分别与智能合约CN和智能合约CF为弱依赖关系。
步骤803、根据合约依赖关系对区块中的交易进行初始交易DAG(称为至少两个交易序列)的构建。
需要说明的是,针对区块中的交易,结合每个交易调用的智能合约和智能合约间的依赖关系,构建一个初始交易DAG。
参见图11,图11是本申请实施例提供的一种示例性的基于合约依赖关系构建交易DAG的示意图;如图11所示,在对区块中的交易进行处理时,如果所获得的合约依赖关系为图10中的依赖关系10-4,结合区块中的交易对智能合约的调用情况11-1,则能够获得初始交易DAG 11-2;在初始的交易DAG 11-2中,交易T1、交易T2、交易T3和交易T6属于冲突分组11-11(称为交易序列),交易T4和交易T8属于冲突分组11-12(称为交易序列),交易T7属于冲突分组11-13(称为交易序列),交易T5属于冲突分组11-14(称为交易序列)。
步骤804、根据初始交易DAG执行区块中的交易,并根据执行过程中的交易冲突更新合约依赖关系。
需要说明的是,在根据初始交易DAG执行区块中的交易时,针对各个冲突分组,可以采用线程池技术进行并行处理;而每个冲突分组中的各交易串行处理。比如,在按照图11中的初始交易DAG 11-2,对区块中的交易进行执行时,使得冲突分组11-11至冲突分组11-14采用线程池技术进行并行处理,而每个冲突分组中的各交易串行处理。
再比如,参见图12,图12是本申请实施例提供的一种示例性的执行交易的示意图;如图12所示,基于合约依赖关系确定出的智能合约DAG 12-1中,节点为智能合约,节点之间的边表示智能合约之间为强依赖关系,存在冲突;基于智能合约DAG 12-1和区块12-2中每个交易所调用的智能合约,可以构建初始交易DAG 12-3;并采用线程池技术对初始交易DAG12-3中的冲突分组12-31、冲突分组12-32和冲突分组12-33进行并行处理。
另外,在初始交易DAG中的每个冲突分组内,也可以使用线程池方式进行并行化处理。
继续参见图12,在初始交易DAG 12-3中的冲突分组12-31内,可以将冲突分组12-31所包括的n个交易在线程池U中进行并行处理;在初始交易DAG 12-3中的冲突分组12-32内,可以将冲突分组12-32所包括的m个交易在线程池V中进行并行处理;在初始交易DAG12-3中的冲突分组12-33内,可以将冲突分组12-33所包括的1个交易在线程池W中进行并行处理。
下面说明根据执行过程中的交易冲突更新合约间依赖关系的过程。
继续参见图10,图10描述了智能合约CA经过两个区块后与其他智能合约的依赖关系。基于交易执行情况10-1可知,在第一个区块中,智能合约CB对应的交易执行数量为3,其中3次(称为交易冲突次数)与调用智能合约CA的交易存在读写集冲突(称为交易冲突),表示为智能合约CM对应的交易执行数量为4,其中3次与调用智能合约CA的交易存在读写集冲突,表示为/>智能合约CE对应的交易执行数量为5,其中3次与调用智能合约CA的交易存在读写集冲突,表示为/>智能合约CF对应的交易执行数量为3,其中1次与调用智能合约CA的交易存在读写集冲突,表示为/>智能合约CH对应的交易执行数量为8,其中0次与调用智能合约CA的交易存在读写集冲突,表示为/>由于初始时,各智能合约之间的依赖概率为0,且每个智能合约对应的交易数量也为0;从而,智能合约CA经过第一个区块的依赖关系更新之后,能够获得依赖关系10-2。
基于交易执行情况10-3可知,在第二个区块中,智能合约CB对应的交易执行数量为1,其中1次与调用智能合约CA的交易存在读写集冲突,表示为智能合约CM对应的交易执行数量为1,其中1次与调用智能合约CA的交易存在读写集冲突,表示为/>智能合约CE对应的交易执行数量为1,其中1次与调用智能合约CA的交易存在读写集冲突,表示为/>智能合约CN对应的交易执行数量为1,其中1次与调用智能合约CA的交易存在读写集冲突,表示为/>从而,依赖关系10-2经过第二个区块的依赖关系更新之后,能够获得依赖关系10-4。每次依赖关系更新时,对存在读写集冲突的情况,两智能合约之间的位图的滑动窗口进行+1处理(比如,更新智能合约CA与智能合约CE之间依赖关系的位操作10-5,称为滑动操作),对不存在读写集冲突的情况,两智能合约之间的位图的滑动窗口进行+0处理。
可以理解的是,一方面,智能合约间的强弱依赖关系是由交易间的读写集冲突得到的,在初始化时,所有智能合约均不冲突,而后基于区块中的读写冲突逐渐构建合约依赖关系;另一方面,智能合约间的强弱依赖关系随着交易执行而逐渐的进行调整,从而是变化的,是一种自适应的过程。
下面对区块中的一批交易进行执行的过程进行详细说明。
参见图13,图13是本申请实施例提供的另一种示例性的交易执行流程示意图;如图13所示,该示例性的交易执行流程由区块链网络中的节点设备执行,包括步骤1301至步骤1317,下面对各步骤分别进行说明。
步骤1301、开始执行区块中的交易集合TS。
步骤1302、根据合约依赖关系,对交易集合TS进行初始交易DAG的构建。
需要说明的是,步骤1302与步骤803对应的描述类似,本申请实施例在此不再重复描述。
步骤1303、将交易集合TS中所有交易的执行状态初始化为未执行状态。
步骤1304、按照交易DAG执行TS中未执行状态交易(所有未执行状态交易集合为UTS),生成或更新读写集集合RWS。
需要说明的是,节点设备在按照初始交易DAG执行交易集合时,每执行一个交易,均能够获得该交易对应的读写集(称为操作对象集合),并且,每完成一个交易,将该交易的执行状态由未执行状态更新为已执行状态;从而,当完成交易集合的执行时,能够获得包括每个交易的读写集的读写集集合RWS(RWS0、RWS1、……)。其中,步骤1304中交易DAG可以是初始交易DAG,也可以是调整后的交易DAG。
步骤1305、i=len(UTS)。
需要说明的是,初始时,将交易序号i确定为交易集合总数量;也就是说,i=len(UTS),len(TS)表示交易总量。这里,可以通过倒序遍历交易集合,来得到遍历到的交易Ti。
步骤1306、判断交易Ti与读写集集合RWS中其他读写集RWS0至RWSi-1(称为至少一个操作对象集合)是否存在冲突。如果是,则执行步骤1307;如果否,则执行步骤1311。
步骤1307、获取冲突交易集合(称为第二冲突交易集合)。
需要说明的是,继续参见图11,对区块中的每个交易的冲突情况进行判断,所确定的第一个待进行判断的交易为交易T8;将交易T8的读写集RWS8与RWS1至RWS7进行比较,由于读写集RWS8与交易T1的RWS1之间存在共同的读写对象(称为共同操作对象),从而,确定交易T1为交易T8的冲突交易,针对交易T8也就获得了包括交易T7的冲突交易集合。如此判断,针对交易T7能够获得包括交易T1的冲突交易集合,针对交易T6能够获得包括交易T1的冲突交易集合,针对交易T4能够获得包括交易T1的冲突交易集合,该交易冲突关系参见图11的调用情况11-1和初始交易DAG 11-2中的虚线箭头。
步骤1308、在交易DAG中,将交易Ti作为冲突交易集合的子节点。
继续参见图11,由于针对交易T4能够获得包括交易T1的冲突交易集合,从而,将交易T4作为交易T1的子节点,以完成对初始交易DAG的调整,如调整后的交易DAG 11-3所示。另外,当完成冲突判断之后,初始交易DAG 11-2被调整为交易DAG 11-3。
步骤1309、针对交易Ti所调用的智能合约Ci(称为目标智能合约)的依赖智能合约集合CS(称为目标智能合约的至少一个子合约依赖关系),将依赖智能合约集合CS中智能合约Ci的滑动窗口执行+1的处理。
需要说明的是,比如,针对交易T8,对应的依赖智能合约集合包括相对于智能合约CA的各个智能合约(包括智能合约CF),更新滑动窗口的过程参见图14,图14是本申请实施例提供的一种示例性的更新滑动窗口的示意图;如图14所示,更新前,针对智能合约CA,智能合约CF对应位图14-1,更新后,位图14-1将被更新为位图14-2(增加了为1的状态位,参见位图14-2中加粗的方框)。
步骤1310、将交易Ti的执行状态设置为未执行状态。执行步骤1312。
步骤1311、针对交易Ti所调用的智能合约Ci的依赖智能合约集合CS,将依赖智能合约集合CS中智能合约Ci的滑动窗口执行+0的处理。
步骤1312、i=i-1。
这里,通过对i进行自减,确定下一遍历到的交易Ti。
步骤1313、i≥1。如果是执行步骤1306,如果否则执行步骤1314。
步骤1314、判断是否存在未执行状态的交易。如果是则执行步骤1304,如果否则执行步骤1315。
步骤1315、根据滑动窗口更新依赖因子。
需要说明的是,继续参见图11,当完成依赖因子更新后,依赖关系10-4将被更新为依赖关系11-4。
步骤1316、根据依赖因子确定依赖的智能合约。
步骤1317、结束交易执行流程。
下面继续说明本申请实施例提供的交易处理装置455的实施为软件模块的示例性结构,在一些实施例中,如图5所示,存储在存储器450的交易处理装置455中的软件模块可以包括:
序列构建模块4551,用于基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,生成至少两个交易序列,其中,不同所述交易序列的任两个所述交易所分别调用的所述智能合约之间是独立的,所述合约依赖关系包括每个所述智能合约与对应的至少一个所述智能合约之间分别对应的依赖信息;
交易执行模块4552,用于并行执行至少两个所述交易序列,得到每个所述交易的操作对象集合;
冲突判断模块4553,用于遍历所述交易集合,并基于每个所述交易的所述操作对象集合,调整每个目标交易在至少两个所述交易序列中的执行顺序,其中,所述目标交易为遍历到的所述交易、且与未遍历到的至少一个所述交易之间包括共同操作对象;
所述交易执行模块4552,还用于当遍历结束时,基于调整后的执行顺序,再次执行每个所述目标交易。
在本申请实施例中,所述序列构建模块4551,还用于将所述交易集合中每个所述交易所调用的所述智能合约,组合为与所述交易集合对应的交易合约集合;当基于所述合约依赖关系,从所述交易合约集合中,确定出与当前交易所调用的当前智能合约依赖的依赖合约集合时,将所述依赖合约集合中的每个所述智能合约在所述交易集合中对应的所述交易,组合为所述当前交易的第一冲突交易集合,其中,所述当前交易为所述交易集合中的任一所述交易;将所述当前交易和所述第一冲突交易集合,确定为所述交易序列,得到与所述交易集合对应的至少两个所述交易序列。
在本申请实施例中,所述序列构建模块4551,还用于当基于所述合约依赖关系,确定所述当前智能合约与剩余智能合约独立时,将所述当前交易确定为所述交易序列,得到与所述交易集合对应的至少两个所述交易序列,其中,所述剩余智能合约包括所述交易合约集合中除所述当前智能合约之外的所述智能合约。
在本申请实施例中,当所述依赖信息包括依赖概率时,所述序列构建模块4551,还用于当基于所述合约依赖关系,从所述交易合约集合中,确定出与所述当前智能合约之间的所述依赖概率大于概率阈值的至少一个第一依赖智能合约时,将至少一个所述第一依赖智能合约,组合为所述依赖合约集合。
在本申请实施例中,当所述依赖信息包括依赖概率和交易执行次数时,所述序列构建模块4551,还用于当基于所述合约依赖关系,从所述交易合约集合中,确定出与所述当前智能合约之间的所述依赖概率大于概率阈值、且所述交易执行次数大于次数阈值的至少一个第二依赖智能合约时,将至少一个所述第二依赖智能合约,组合为所述依赖合约集合。
在本申请实施例中,所述冲突判断模块4553,还用于基于每个所述交易的所述操作对象集合,确定遍历到的所述交易所对应的第一操作对象集合、以及未遍历到的至少一个所述交易所对应的至少一个所述操作对象集合;当所述第一操作对象集合与至少一个所述操作对象集合之间包括共同操作对象时,确定遍历到的所述交易为所述目标交易,并获取所述目标交易的第二冲突交易集合;在至少两个所述交易序列中,将所述目标交易的执行顺序调整至所述第二冲突交易集合之后。
在本申请实施例中,所述交易处理装置455还包括合约更新模块4554,用于从所述合约依赖关系中,获取每个所述智能合约对应的至少一个所述智能合约中包括目标智能合约的至少一个子合约依赖关系,其中,所述目标智能合约为遍历到的所述交易所调用的所述智能合约,所述子合约依赖关系表示一个所述智能合约与对应的至少一个所述智能合约之间分别对应的所述依赖信息;基于所述第一操作对象集合与至少一个所述操作对象集合之间的关系,在至少一个所述子合约依赖关系的每个所述子合约依赖关系中,更新所述目标智能合约对应的所述依赖信息,得到新合约依赖关系;基于新交易集合中每个新交易所调用的所述智能合约、以及所述新合约依赖关系,生成至少两个新交易序列,并通过并行执行至少两个所述新交易序列,执行所述新交易集合。
在本申请实施例中,所述合约更新模块4554,还用于当所述第一操作对象集合与至少一个所述操作对象集合之间的关系为冲突关系时,从至少一个所述子合约依赖关系中,确定出第一智能合约属于冲突合约集合的目标子合约依赖关系集合;其中,所述冲突关系是指所述第一操作对象集合与至少一个所述操作对象集合之间包括共同操作对象,所述第一智能合约为所述子合约依赖关系的参考智能合约,所述冲突合约集合包括所述第二冲突交易集合中每个所述交易所调用的所述智能合约;从至少一个所述子合约依赖关系中,确定除所述目标子合约依赖关系集合之外的剩余子合约依赖关系集合;对所述目标子合约依赖关系集合中所述目标智能合约的所述依赖信息进行增强处理,并对所述剩余子合约依赖关系集合中所述目标智能合约的所述依赖信息进行减弱处理,得到所述新合约依赖关系。
在本申请实施例中,所述合约更新模块4554,还用于当所述第一操作对象集合与至少一个所述操作对象集合之间的关系为独立关系时,对至少一个所述子合约依赖关系中所述目标智能合约的所述依赖信息进行减弱处理,得到所述新合约依赖关系,其中,所述独立关系是指所述第一操作对象集合与至少一个所述操作对象集合之间不包括共同操作对象。
在本申请实施例中,所述合约更新模块4554,还用于对所述目标智能合约的所述依赖信息中的交易冲突次数和交易执行次数分别进行更新;基于更新后的所述交易冲突次数和更新后的所述交易执行次数,更新所述目标智能合约的所述依赖信息中的依赖概率。
在本申请实施例中,所述依赖信息中的所述交易执行次数通过位图的位图长度确定,所述依赖信息中的所述交易冲突次数通过所述位图的位图状态确定;所述合约更新模块4554,还用于基于所述子合约依赖关系中第一智能合约与冲突合约集合的所属关系,确定所述目标智能合约对应的待更新位状态;通过最大位图长度和所述待更新位状态,对所述依赖信息对应的所述位图进行滑动操作,以分别更新所述目标智能合约的所述依赖信息中的所述交易冲突次数和所述交易执行次数。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备(称为交易处理设备)的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的交易处理方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的交易处理方法,例如,如图6示出的交易处理方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个电子设备上执行(此时,这一个电子设备即交易处理设备),或者在位于一个地点的多个电子设备上执行(此时,位于一个地点的多个电子设备即交易处理设备),又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行(此时,分布在多个地点且通过通信网络互连的多个电子设备即交易处理设备)。
可以理解的是,在本申请实施例中,涉及到交易等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
综上,本申请实施例通过合约依赖关系将智能合约之间依赖的交易作为一个交易序列,得到多个可并行的交易序列,实现了交易序列的并行执行,提升了交易执行效率;并且,完成执行之后,还通过是否包括共同操作对象对目标交易的执行顺序进行调整,提升了存在交易冲突的交易的执行准确度;因此,基于合约依赖关系将多个交易划分为至少两个交易序列,并行执行该至少两个交易序列,并对发生交易冲突的交易进行顺序调整后再次执行,能够在确定交易正确执行的情况下降低交易执行时的资源消耗,提升交易执行效率。也就是说,如此,能够保证不存在交易冲突的交易执行一遍,以及通过合约依赖关系也能降低存在交易冲突的交易的执行次数,从而,能够提升交易执行效率。另外,采用位图和最大位图长度实现合约依赖关系的更新,能够提升更新效率和合约依赖关系的准确性。
以上,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (15)
1.一种交易处理方法,其特征在于,所述方法包括:
基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,生成至少两个交易序列,其中,不同所述交易序列的任两个所述交易所分别调用的所述智能合约之间是独立的,所述合约依赖关系包括每个所述智能合约与对应的至少一个所述智能合约之间分别对应的依赖信息;
并行执行至少两个所述交易序列,得到每个所述交易的操作对象集合;
遍历所述交易集合,并基于每个所述交易的所述操作对象集合,调整每个目标交易在至少两个所述交易序列中的执行顺序,其中,所述目标交易为遍历到的所述交易、且与未遍历到的至少一个所述交易之间包括共同操作对象;
当遍历结束时,基于调整后的执行顺序,再次执行每个所述目标交易。
2.根据权利要求1所述的方法,其特征在于,所述基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,生成至少两个交易序列,包括:
将所述交易集合中每个所述交易所调用的所述智能合约,组合为与所述交易集合对应的交易合约集合;
当基于所述合约依赖关系,从所述交易合约集合中,确定出与当前交易所调用的当前智能合约依赖的依赖合约集合时,将所述依赖合约集合中的每个所述智能合约在所述交易集合中对应的所述交易,组合为所述当前交易的第一冲突交易集合,其中,所述当前交易为所述交易集合中的任一所述交易;
将所述当前交易和所述第一冲突交易集合,确定为所述交易序列,得到与所述交易集合对应的至少两个所述交易序列。
3.根据权利要求2所述的方法,其特征在于,所述将所述交易集合中每个所述交易所调用的所述智能合约,组合为与所述交易集合对应的交易合约集合之后,所述方法还包括:
当基于所述合约依赖关系,确定所述当前智能合约与剩余智能合约独立时,将所述当前交易确定为所述交易序列,得到与所述交易集合对应的至少两个所述交易序列,其中,所述剩余智能合约包括所述交易合约集合中除所述当前智能合约之外的所述智能合约。
4.根据权利要求2所述的方法,其特征在于,当所述依赖信息包括依赖概率时,所述将所述交易集合中每个所述交易所调用的所述智能合约,组合为与所述交易集合对应的交易合约集合之后,所述方法还包括:
当基于所述合约依赖关系,从所述交易合约集合中,确定出与所述当前智能合约之间的所述依赖概率大于概率阈值的至少一个第一依赖智能合约时,将至少一个所述第一依赖智能合约,组合为所述依赖合约集合。
5.根据权利要求2所述的方法,其特征在于,当所述依赖信息包括依赖概率和交易执行次数时,所述将所述交易集合中每个所述交易所调用的所述智能合约,组合为与所述交易集合对应的交易合约集合之后,所述方法还包括:
当基于所述合约依赖关系,从所述交易合约集合中,确定出与所述当前智能合约之间的所述依赖概率大于概率阈值、且所述交易执行次数大于次数阈值的至少一个第二依赖智能合约时,将至少一个所述第二依赖智能合约,组合为所述依赖合约集合。
6.根据权利要求1所述的方法,其特征在于,所述基于每个所述交易的所述操作对象集合,调整每个目标交易在至少两个所述交易序列中的执行顺序,包括:
基于每个所述交易的所述操作对象集合,确定遍历到的所述交易所对应的第一操作对象集合、以及未遍历到的至少一个所述交易所对应的至少一个所述操作对象集合;
当所述第一操作对象集合与至少一个所述操作对象集合之间包括共同操作对象时,确定遍历到的所述交易为所述目标交易,并获取所述目标交易的第二冲突交易集合;
在至少两个所述交易序列中,将所述目标交易的执行顺序调整至所述第二冲突交易集合之后。
7.根据权利要求6所述的方法,其特征在于,所述基于每个所述交易的所述操作对象集合,确定遍历到的所述交易所对应的第一操作对象集合、以及未遍历到的至少一个所述交易所对应的至少一个所述操作对象集合之后,所述方法还包括:
从所述合约依赖关系中,获取每个所述智能合约对应的至少一个所述智能合约中包括目标智能合约的至少一个子合约依赖关系,其中,所述目标智能合约为遍历到的所述交易所调用的所述智能合约,所述子合约依赖关系表示一个所述智能合约与对应的至少一个所述智能合约之间分别对应的所述依赖信息;
基于所述第一操作对象集合与至少一个所述操作对象集合之间的关系,在至少一个所述子合约依赖关系的每个所述子合约依赖关系中,更新所述目标智能合约对应的所述依赖信息,得到新合约依赖关系;
基于新交易集合中每个新交易所调用的所述智能合约、以及所述新合约依赖关系,生成至少两个新交易序列,并通过并行执行至少两个所述新交易序列,执行所述新交易集合。
8.根据权利要求7所述的方法,其特征在于,所述基于所述第一操作对象集合与至少一个所述操作对象集合之间的关系,在至少一个所述子合约依赖关系的每个所述子合约依赖关系中,更新所述目标智能合约对应的所述依赖信息,得到新合约依赖关系,包括:
当所述第一操作对象集合与至少一个所述操作对象集合之间的关系为冲突关系时,从至少一个所述子合约依赖关系中,确定出第一智能合约属于冲突合约集合的目标子合约依赖关系集合;
其中,所述冲突关系是指所述第一操作对象集合与至少一个所述操作对象集合之间包括共同操作对象,所述第一智能合约为所述子合约依赖关系的参考智能合约,所述冲突合约集合包括所述第二冲突交易集合中每个所述交易所调用的所述智能合约;
从至少一个所述子合约依赖关系中,确定除所述目标子合约依赖关系集合之外的剩余子合约依赖关系集合;
对所述目标子合约依赖关系集合中所述目标智能合约的所述依赖信息进行增强处理,并对所述剩余子合约依赖关系集合中所述目标智能合约的所述依赖信息进行减弱处理,得到所述新合约依赖关系。
9.根据权利要求7所述的方法,其特征在于,所述基于所述第一操作对象集合与至少一个所述操作对象集合之间的关系,在至少一个所述子合约依赖关系的每个所述子合约依赖关系中,更新所述目标智能合约对应的所述依赖信息,得到新合约依赖关系,包括:
当所述第一操作对象集合与至少一个所述操作对象集合之间的关系为独立关系时,对至少一个所述子合约依赖关系中所述目标智能合约的所述依赖信息进行减弱处理,得到所述新合约依赖关系,其中,所述独立关系是指所述第一操作对象集合与至少一个所述操作对象集合之间不包括共同操作对象。
10.根据权利要求7至9任一项所述的方法,其特征在于,所述更新所述目标智能合约对应的所述依赖信息,包括:
对所述目标智能合约的所述依赖信息中的交易冲突次数和交易执行次数分别进行更新;
基于更新后的所述交易冲突次数和更新后的所述交易执行次数,更新所述目标智能合约的所述依赖信息中的依赖概率。
11.根据权利要求10所述的方法,其特征在于,所述依赖信息中的所述交易执行次数通过位图的位图长度确定,所述依赖信息中的所述交易冲突次数通过所述位图的位图状态确定;
所述对所述目标智能合约的所述依赖信息中的交易冲突次数和交易执行次数分别进行更新,包括:
基于所述子合约依赖关系中第一智能合约与冲突合约集合的所属关系,确定所述目标智能合约对应的待更新位状态;
通过最大位图长度和所述待更新位状态,对所述依赖信息对应的所述位图进行滑动操作,以分别更新所述目标智能合约的所述依赖信息中的所述交易冲突次数和所述交易执行次数。
12.一种交易处理装置,其特征在于,所述交易处理装置包括:
序列构建模块,用于基于交易集合中每个交易所调用的智能合约、以及合约依赖关系,生成至少两个交易序列,其中,不同所述交易序列的任两个所述交易所分别调用的所述智能合约之间是独立的,所述合约依赖关系包括每个所述智能合约与对应的至少一个所述智能合约之间分别对应的依赖信息;
交易执行模块,用于并行执行至少两个所述交易序列,得到每个所述交易的操作对象集合;
冲突判断模块,用于遍历所述交易集合,并基于每个所述交易的所述操作对象集合,调整每个目标交易在至少两个所述交易序列中的执行顺序,其中,所述目标交易为遍历到的所述交易、且与未遍历到的至少一个所述交易之间包括共同操作对象;
所述交易执行模块,还用于当遍历结束时,基于调整后的执行顺序,再次执行每个所述目标交易。
13.一种交易处理设备,其特征在于,所述交易处理设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至11任一项所述的交易处理方法。
14.一种计算机可读存储介质,存储有可执行指令,其特征在于,所述可执行指令用于被处理器执行时,实现权利要求1至11任一项所述的交易处理方法。
15.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时,实现权利要求1至11任一项所述的交易处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210805161.2A CN116993340A (zh) | 2022-07-08 | 2022-07-08 | 一种交易处理方法、装置、设备、存储介质及程序产品 |
PCT/CN2023/090059 WO2024007690A1 (zh) | 2022-07-08 | 2023-04-23 | 一种基于区块链的交易处理方法、装置、设备、计算机可读存储介质及计算机程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210805161.2A CN116993340A (zh) | 2022-07-08 | 2022-07-08 | 一种交易处理方法、装置、设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116993340A true CN116993340A (zh) | 2023-11-03 |
Family
ID=88532749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210805161.2A Pending CN116993340A (zh) | 2022-07-08 | 2022-07-08 | 一种交易处理方法、装置、设备、存储介质及程序产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116993340A (zh) |
WO (1) | WO2024007690A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109951547B (zh) * | 2019-03-15 | 2022-03-01 | 百度在线网络技术(北京)有限公司 | 事务请求并行处理方法、装置、设备和介质 |
US11194555B2 (en) * | 2020-04-13 | 2021-12-07 | International Business Machines Corporation | Optimization of execution of smart contracts |
CN112669155B (zh) * | 2020-12-31 | 2024-05-03 | 杭州趣链科技有限公司 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
CN112508574A (zh) * | 2021-02-03 | 2021-03-16 | 北京全息智信科技有限公司 | 一种区块链的并行交易执行方法、装置和电子设备 |
CN113220745B (zh) * | 2021-05-19 | 2024-02-09 | 中国科学技术大学 | 一种基于区块链的交易处理方法、装置及电子设备 |
-
2022
- 2022-07-08 CN CN202210805161.2A patent/CN116993340A/zh active Pending
-
2023
- 2023-04-23 WO PCT/CN2023/090059 patent/WO2024007690A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024007690A1 (zh) | 2024-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11995646B2 (en) | Blockchain-based method and system for specifying the recipient of an electronic communication | |
CN109981679B (zh) | 在区块链网络中执行事务的方法和装置 | |
US20240220983A1 (en) | Blockchain-implemented systems and methods for concurrent bytecode interpretation | |
US11210203B2 (en) | Testing platform for blockchain networks | |
US20200264902A1 (en) | Configuration for Application Using Microservices | |
CN108595157B (zh) | 区块链数据的处理方法、装置、设备和存储介质 | |
US20200151017A1 (en) | Event-driven blockchain workflow processing | |
TWI706647B (zh) | 區塊鏈網路中的功能即服務(faas)平臺 | |
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
JP2022515949A (ja) | トランザクション処理方法、装置、機器並びにコンピュータプログラム | |
JP2023546249A (ja) | トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム | |
US20070118572A1 (en) | Detecting changes in data | |
CN111427971B (zh) | 用于计算机系统的业务建模方法、装置、系统和介质 | |
WO2023045617A1 (zh) | 一种交易数据处理方法、装置、设备以及介质 | |
WO2020155811A1 (zh) | 区块链的智能合约执行方法及装置和电子设备 | |
US11410162B2 (en) | Anonymous distributed consensus regarding the verification of protocols | |
US20210073197A1 (en) | Byzantine consensus without centralized ordering | |
US20230208659A1 (en) | Blockchain apparatus and method for mobile edge computing | |
CN112181599A (zh) | 模型训练方法、装置及存储介质 | |
CN116993340A (zh) | 一种交易处理方法、装置、设备、存储介质及程序产品 | |
US11704726B1 (en) | Systems and methods for bartering services and goods using distributed ledger techniques | |
Prokić et al. | Correct orchestration of Federated Learning generic algorithms: formalisation and verification in CSP | |
WO2024011917A1 (en) | Delegate model for blockchain transactions | |
US20240289785A1 (en) | Blockchain-based method and system for specifying the recipient of an electronic communication | |
CN113626005B (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 |