CN117764728A - 一种区块链跨合约调用方法、装置、设备及存储介质 - Google Patents

一种区块链跨合约调用方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117764728A
CN117764728A CN202211137224.8A CN202211137224A CN117764728A CN 117764728 A CN117764728 A CN 117764728A CN 202211137224 A CN202211137224 A CN 202211137224A CN 117764728 A CN117764728 A CN 117764728A
Authority
CN
China
Prior art keywords
contract
transaction
cross
cache
instance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211137224.8A
Other languages
English (en)
Inventor
卢光宏
韩天乐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Cloud Computing Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Cloud Computing Beijing Co Ltd filed Critical Tencent Cloud Computing Beijing Co Ltd
Priority to CN202211137224.8A priority Critical patent/CN117764728A/zh
Publication of CN117764728A publication Critical patent/CN117764728A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请实施例公开了一种区块链跨合约调用方法、装置、设备及存储介质,相关实施例可应用于云技术、智慧交通等各种场景,用于提高区块链查询效率。本申请实施例方法包括:初始调度第一合约实例逐条执行待处理交易对应的语句,当执行到第一跨合约调用语句时,生成第一辅助交易,调度第二合约实例,逐条执行第一辅助交易对应的语句,当执行到第二跨合约调用语句时,生成第二辅助交易,重新调度的第一合约实例基于第一缓存,逐条执行第二辅助交易对应的语句,将第二辅助交易的执行结果返回至第二合约实例,将第一辅助交易的执行结果返回至初始调度的第一合约实例,当待处理交易对应的全部语句执行完毕时,将交易整体缓存中的全部缓存存储至数据库中。

Description

一种区块链跨合约调用方法、装置、设备及存储介质
技术领域
本申请实施例涉及安全通信技术领域,尤其涉及一种区块链跨合约调用方法、装置、设备及存储介质。
背景技术
通常智能合约执行引擎较为常见的是以太虚拟机(Ethereum Virtual Machine,EVM)和JAVA虚拟机(Java Virtual Machine,JVM),二者分别用于Solidity和JAVA语言的智能合约开发。EVM可以执行任意复杂算法的编码,以太坊上的账户可以分为外部账户(EOA)与合约账户,其中外部账户由私人密钥控制,合约账户由合约代码控制;而在JVM环境下,智能合约是被抽象为接口的形式进行调用的。
在某一个合约调用另一个合约时,通常可以基于以太坊的合约间调用方案如CALL、CALLCODE以及DELEGATECALL等方法实现,这些方案本质上都是在同一个虚拟机中执行所有计算,有所不同的是调用过程中上下文的切换,但是,合约可以属于不同的执行引擎,例如Golang、EVM、WASM等,由于不同的合约引擎属于不同的进程,而目前常用的跨合约间调用方案在进行数据交换时通常不具备缓存机制,则容易导致当数据端不在合约实例侧面对海量的查询操作时区块链的查询效率不高。
发明内容
本申请实施例提供了一种区块链跨合约调用方法、装置、设备及存储介质,用于合约实例共享缓存的方式,在跨合约调用时,如果遇到同一个合约实例,合约实例的缓存可以共享,以避免重新读写数据造成多次数据传输而耗费大量的时间,另外,还能够通过交易整体缓存作为数据传输和缓存的中转站,以维护合约实例在计算和获取数据时的高效性和准确性,从而提高区块链执行查询操作的效率。
本申请实施例一方面提供了一种区块链跨合约调用方法,包括:
当跨合约调度器接收到待处理交易时,根据待处理交易的属性,初始调度第一合约实例逐条执行待处理交易对应的语句;
当初始调度的第一合约实例执行到第一跨合约调用语句时,向跨合约调度器发送携带有第一合约实例执行语句所对应的第一缓存,以及第一辅助交易的属性的第一跨合约调用请求,以使跨合约调度器根据第一跨合约调用语句生成第一辅助交易,并存储第一缓存至交易整体缓存;
若第一辅助交易属性不同于待处理交易的属性,则跨合约调度器根据第一跨合约调用请求调度第二合约实例,逐条执行第一辅助交易对应的语句,其中,第二合约实例不同于第一合约实例;
当第二合约实例执行到第二跨合约调用语句时,向跨合约调度器发送携带有第二合约实例执行语句所对应的第二缓存,以及第二辅助交易的属性的第二跨合约调用请求,以使跨合约调度器根据第二跨合约调用语句生成第二辅助交易,并存储第二缓存至交易整体缓存;
若第二辅助交易属性与待处理交易的属性相同,则跨合约调度器根据第二跨合约调用请求重新调度第一合约实例,并将第一缓存共享至重新调度的第一合约实例,以使重新调度的第一合约实例基于第一缓存,逐条执行第二辅助交易对应的语句;
当第二辅助交易对应的全部语句执行完毕时,将第二辅助交易的执行结果返回至第二合约实例,以使第二合约实例基于第二辅助交易的执行结果,执行第二跨合约调用语句后的语句;
当第一辅助交易对应的全部语句执行完毕时,将第一辅助交易的执行结果返回至初始调度的第一合约实例,以使初始调度的第一合约实例基于第一辅助交易的执行结果,执行第一跨合约调用语句后的语句;
当待处理交易对应的全部语句执行完毕时,将待处理交易的执行结果返回至跨合约调度器,以使跨合约调度器将待处理交易的执行结果,以及交易整体缓存中的全部缓存存储至数据库中。
本申请另一方面提供了一种区块链跨合约调用装置,包括:
获取单元,用于当跨合约调度器接收到待处理交易时,根据待处理交易的属性,初始调度第一合约实例逐条执行待处理交易对应的语句;
发送单元,用于当初始调度的第一合约实例执行到第一跨合约调用语句时,向跨合约调度器发送携带有第一合约实例执行语句所对应的第一缓存,以及第一辅助交易的属性的第一跨合约调用请求,以使跨合约调度器根据第一跨合约调用语句生成第一辅助交易,并存储第一缓存至交易整体缓存;
处理单元,用于若第一辅助交易属性不同于待处理交易的属性,则跨合约调度器根据第一跨合约调用请求调度第二合约实例,逐条执行第一辅助交易对应的语句,其中,第二合约实例不同于第一合约实例;
发送单元,还用于当第二合约实例执行到第二跨合约调用语句时,向跨合约调度器发送携带有第二合约实例执行语句所对应的第二缓存,以及第二辅助交易的属性的第二跨合约调用请求,以使跨合约调度器根据第二跨合约调用语句生成第二辅助交易,并存储第二缓存至交易整体缓存;
处理单元,还用于若第二辅助交易属性与待处理交易的属性相同,则跨合约调度器根据第二跨合约调用请求重新调度第一合约实例,并将第一缓存共享至重新调度的第一合约实例,以使重新调度的第一合约实例基于第一缓存,逐条执行第二辅助交易对应的语句;
处理单元,还用于当第二辅助交易对应的全部语句执行完毕时,将第二辅助交易的执行结果返回至第二合约实例,以使第二合约实例基于第二辅助交易的执行结果,执行第二跨合约调用语句后的语句;
处理单元,还用于当第一辅助交易对应的全部语句执行完毕时,将第一辅助交易的执行结果返回至初始调度的第一合约实例,以使初始调度的第一合约实例基于第一辅助交易的执行结果,执行第一跨合约调用语句后的语句;
处理单元,还用于当待处理交易对应的全部语句执行完毕时,将待处理交易的执行结果返回至跨合约调度器,以使跨合约调度器将待处理交易的执行结果,以及交易整体缓存中的全部缓存存储至数据库中。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,获取单元具体可以用于:
区块链从交易队列中选取待处理交易,并发送至跨合约调度器;
当跨合约调度器接收到待处理交易,建立待处理交易对应的任务;
基于任务使用任务调度器,根据待处理交易的属性,初始调度第一合约实例逐条执行待处理交易对应的语句,其中,初始调度第一合约实例来源于第一合约虚拟机引擎。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,发送单元具体可以用于:
当初始调度的第一合约实例执行到第一跨合约调用语句时,根据第一跨合约调用语句中的第一辅助交易的属性字段,确定第一辅助交易的属性;
初始调度的第一合约实例基于执行的第一跨合约调用语句前的语句,生成第一缓存;
向跨合约调度器发送携带有第一缓存以及第一辅助交易的属性的第一跨合约调用请求;
当跨合约调度器接收到第一跨合约调用请求时,根据第一跨合约调用语句生成第一辅助交易;
跨合约调度器将第一缓存存储至交易整体缓存中第一合约实例标识对应的缓存集。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
跨合约调度器根据第一辅助交易,建立任务的第一子任务;
若第一辅助交易属性不同于待处理交易的属性,则基于第一子任务使用任务调度器,根据第一辅助交易的属性,调度第二合约实例逐条执行第一辅助交易对应的语句,其中,第二合约实例来源于第一合约虚拟机引擎或第二合约虚拟机引擎,第一合约虚拟机引擎不同于第二合约虚拟机引擎。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,发送单元具体可以用于:
当第二合约实例执行到第二跨合约调用语句时,根据第二跨合约调用语句中的第二辅助交易的属性字段,确定第二辅助交易的属性;
第二合约实例基于执行的第二跨合约调用语句前的语句,生成第二缓存;
向跨合约调度器发送携带有第二缓存以及第二辅助交易的属性的第二跨合约调用请求;
当跨合约调度器接收到第二跨合约调用请求时,根据第二跨合约调用语句生成第二辅助交易;
跨合约调度器将第二缓存存储至交易整体缓存中第二合约实例标识对应的缓存集。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
跨合约调度器根据第二辅助交易,建立任务的第二子任务;
若第二辅助交易属性与待处理交易的属性相同,则基于第二子任务使用任务调度器,根据第二辅助交易的属性,重新调度第一合约实例;
跨合约调度器将第一缓存共享至重新调度的第一合约实例,以使重新调度第一合约实例逐条执行第一辅助交易对应的语句。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
当重新调度第一合约实例执行完毕第二辅助交易对应的全部语句时,向跨合约调度器返回第二辅助交易的执行结果,以及执行全部语句对应的第一全部缓存;
跨合约调度器将接收到的第一全部缓存存储至交易整体缓存中第一合约实例标识对应的缓存集;
跨合约调度器将接收到的第二辅助交易的执行结果发送至第二合约实例,以使第二合约实例基于执行结果,执行第二跨合约调用语句后的语句。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
当第二合约实例执行完毕第一辅助交易对应的全部语句时,向跨合约调度器返回第一辅助交易的执行结果,以及执行全部语句对应的第二全部缓存;
跨合约调度器将接收到的第二全部缓存存储至交易整体缓存中第二合约实例标识对应的缓存集;
跨合约调度器将接收到的第一辅助交易的执行结果发送至初始调度的第一合约实例,以使初始调度的第一合约实例基于执行结果,执行第一跨合约调用语句后的语句。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
当初始调度的第一合约实例执行完毕待处理交易对应的全部语句时,向跨合约调度器返回待处理交易的执行结果,以及执行全部语句对应的第三全部缓存;
跨合约调度器将接收到的第三全部缓存存储至交易整体缓存中第一合约实例标识对应的缓存集;
跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存存储至区块链的数据库中。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存返回至区块链中;
分别对第一缓存、第一全部缓存、第三全部缓存、第二缓存和第二全部缓存进行遍历,若存在冲突缓存,则对冲突缓存进行更正处理,以得到更正缓存并存储至数据库。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
将冲突缓存对应的交易重新发送至跨合约调度器,以使跨合约调度器接收到待更正交易,建立待更正交易对应的更正任务;
基于更正任务使用任务调度器,根据待更正交易的属性,调度合约实例逐条执行待更正交易对应的语句;
当合约实例执行完毕待更正交易对应的全部语句,将待更正交易的执行结果以及执行待更正交易对应的全部语句的更正缓存存储至数据库,并删除冲突缓存以及冲突缓存对应的执行结果。
在一种可能的设计中,本申请实施例另一方面的一种实现方式中,处理单元具体可以用于:
跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存返回至区块链中;
分别对第一缓存、第一全部缓存、第三全部缓存、第二缓存和第二全部缓存进行遍历,若不存在冲突缓存,则将待处理交易的执行结果以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存写入区块链缓存快照,以使区块链缓存快照将写入的全部缓存以区块为单位更新到数据库中。
本申请另一方面提供了一种计算机设备,包括:存储器、处理器以及总线系统;
其中,存储器用于存储程序;
处理器用于执行存储器中的程序时实现如上述各方面的方法;
总线系统用于连接存储器以及处理器,以使存储器以及处理器进行通信。
本申请的另一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
从以上技术方案可以看出,本申请实施例具有以下有益效果:
通过初始调度第一合约实例逐条执行待处理交易对应的语句,当初始调度第一合约实例执行到第一跨合约调用语句时,生成第一辅助交易以及第一缓存,并当第一辅助交易的属性不同于待处理交易的属性时,调度不同于第一合约实例的第二合约实例,逐条执行第一辅助交易对应的语句,当执行到第二跨合约调用语句时,生成第二辅助交易,并当第二辅助交易的属性与待处理交易的属性相同时,将第一缓存共享至重新调度的第一合约实例逐条执行第二辅助交易对应的语句,然后,将重新调度的第一合约实例对第二辅助交易的执行结果返回至第二合约实例,并将第二合约实例对第一辅助交易的执行结果返回至初始调度的第一合约实例,最后,当初始调度的第一合约实例对待处理交易对应的全部语句执行完毕时,将交易整体缓存中的全部缓存存储至数据库中。通过上述方式,能够将所有合约实例在执行交易语句时产生的缓存都存储至交易整体缓存中,使得当执行到跨合约调用语句,出现相同属性要调用相同的合约实例时,可以将相同的合约实例在此前存储至交易整体缓存同一合约实例标识对应的缓存集中的缓存,共享至重新调度的相同合约实例中,以避免重新读写数据造成多次数据传输而耗费大量的时间,另外,还能够通过交易整体缓存作为数据传输和缓存的中转站,以维护合约实例在计算和获取数据时的高效性和准确性,从而提高区块链执行查询操作的效率。
附图说明
图1(a)是本申请实施例中数据控制系统的一个区块链分布式系统架构示意图;
图1(b)是本申请实施例中数据控制系统的一个区块结构示意图;
图1(c)是本申请实施例中数据控制系统的一个交互示意图;
图2是本申请实施例中区块链跨合约调用方法的一个实施例流程图;
图3是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图4是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图5是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图6是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图7是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图8是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图9是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图10是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图11是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图12是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图13是本申请实施例中区块链跨合约调用方法的另一个实施例流程图;
图14是本申请实施例中区块链跨合约调用方法的一个原理流程示意图;
图15是本申请实施例中区块链跨合约调用方法的一个生成新交易生成的流程示意图;
图16是本申请实施例中区块链跨合约调用方法的一个对冲突缓存进行更正的流程示意图;
图17是本申请实施例中区块链跨合约调用方法的一个共享缓存的跨合约调用数据结构示意图;
图18是本申请实施例中区块链跨合约调用装置的一个实施例示意图;
图19是本申请实施例中计算机设备的一个实施例示意图。
具体实施方式
本申请实施例提供了一种区块链跨合约调用方法、装置、设备及存储介质,用于合约实例共享缓存的方式,在跨合约调用时,如果遇到同一个合约实例,合约实例的缓存可以共享,以避免重新读写数据造成多次数据传输而耗费大量的时间,另外,还能够通过交易整体缓存作为数据传输和缓存的中转站,以维护合约实例在计算和获取数据时的高效性和准确性,从而提高区块链执行查询操作的效率。
本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解,先对本申请实施例涉及到的一些术语或概念进行解释。
1、区块链:信息技术领域的一种分布式账本技术,一般由共识、交易区块和状态数据存储、密码学身份安全等内容构成,由于账本是分布式存储的,而且区块是经过共识的,所以具有不可篡改、可追溯、共同维护等特征。
2、共享缓存:共享缓存是在不同的运行实例中共享运行缓存的机制,通过共享缓存,实例能够提前获取某些状态数据的值,避免低效的状态数据查询操作。
3、智能合约:一种运行在区块链上的程序。和普通程序不同的是,智能合约要保证在区块链网络的每一个节点中运行的结果完全相同,这样才能使任何一个节点都可以验证区块中智能合约执行的结果是否正确。
4、跨合约调用:一个合约通过代码调用另一个合约的过程。
可以理解的是,在本申请的具体实施方式中,涉及到待处理交易、第一缓存以及第二缓存等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
可以理解的是,如本申请所公开的区块链跨合约调用方法,涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。
以分布式系统为区块链系统为例,参见图1(a),图1(a)是本发明实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图,由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission ControlProtocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图1(a)示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币;
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
参见图1(b),图1(b)是本发明实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
应理解的是,本申请提供的区块链跨合约调用方法可应用于各种场景,包括但不限于人工智能、云技术、地图、智慧交通等,用于通过共享同一合约实例对应的缓存进行跨合约的调用以完成区块链上的查询操作,以应用于如工资支付、虚拟游戏币交易、商品购买交易等场景。
为了解决上述问题,本申请提出了一种区块链跨合约调用方法,该方法应用于数据控制系统,通过初始调度第一合约实例逐条执行待处理交易对应的语句,当初始调度第一合约实例执行到第一跨合约调用语句时,生成第一辅助交易以及第一缓存,并当第一辅助交易的属性不同于待处理交易的属性时,调度不同于第一合约实例的第二合约实例,逐条执行第一辅助交易对应的语句,当执行到第二跨合约调用语句时,生成第二辅助交易,并当第二辅助交易的属性与待处理交易的属性相同时,将第一缓存共享至重新调度的第一合约实例逐条执行第二辅助交易对应的语句,然后,将重新调度的第一合约实例对第二辅助交易的执行结果返回至第二合约实例,并将第二合约实例对第一辅助交易的执行结果返回至初始调度的第一合约实例,最后,当初始调度的第一合约实例对待处理交易对应的全部语句执行完毕时,将交易整体缓存中的全部缓存存储至数据库中。通过上述方式,能够将所有合约实例在执行交易语句时产生的缓存都存储至交易整体缓存中,使得当执行到跨合约调用语句,出现相同属性要调用相同的合约实例时,可以将相同的合约实例在此前存储至交易整体缓存同一合约实例标识对应的缓存集中的缓存,共享至重新调度的相同合约实例中,以避免重新读写数据造成多次数据传输而耗费大量的时间,另外,还能够通过交易整体缓存作为数据传输和缓存的中转站,以维护合约实例在计算和获取数据时的高效性和准确性,从而提高区块链执行查询操作的效率。
可以理解的是,本申请提出了一种区块链跨合约调用方法,该方法应用于数据控制系统,在实际场景中可以由更多种类的终端设备参与到数据处理的过程中,终端设备包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等,具体数量和种类因实际场景而定,具体此处不做限定。另外,在实际场景中,也可以有多个服务器的参与,特别是在多模型训练交互的场景中,服务器的数量因实际场景而定,具体此处不做限定。
需要注意的是,本实施例中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(contentdelivery network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,终端设备以及服务器可以连接组成区块链网络,本申请在此不做限制。
为了便于理解,请参阅图1(c),图1(c)为本申请实施例中数据控制系统的一个交互示意图,如图图1(c)所示,关于交易处理主要包含区块链侧和智能合约虚拟机引擎侧,首先区块链侧的交易队列会将所有待执行的任务(待处理交易)都会先放到该交易队列中,该交易队列会批量发送待处理交易到智能合约虚拟机引擎中;其次,当智能合约虚拟机引擎接受任务后,会根据需要通知任务调度器,调度进程管理器来调用适合的合约实例进程执行任务;然后,合约实例进程根据接收到的任务执行相应的合约代码,并形成读写集缓存;最后,在执行完成任务后,将执行结果以及合约实例对应读写集缓存的返回给区块链缓存快照,使得缓存快照将累积的缓存以区块为单位更新到数据库中,所有交易完成。
结合上述介绍,下面将对本申请中区块链跨合约调用方法进行介绍,请参阅图2,本申请实施例中区块链跨合约调用方法一个实施例包括:
在步骤S101中,当跨合约调度器接收到待处理交易时,根据待处理交易的属性,初始调度第一合约实例逐条执行待处理交易对应的语句;
在本实施例中,区块链侧的交易队列会先将所有待执行的待处理交易都会先放到该交易队列中,该交易队列会批量发送待处理交易到跨合约调度器,则当跨合约调度器接收到待处理交易时,可以根据待处理交易的属性,选择智能合约虚拟机引擎,并将待处理交易发送至选择的智能合约虚拟机引擎,通过进程管理器,初始调度第一合约实例逐条执行待处理交易对应的语句。
可以理解的是,为了更好地实现跨合约调用,本实施例采样如图15所示的一种基于新生成交易的实现跨合约调用的方式,具体过程如下:
1)区块链在生成区块时,可以从交易池获取一批交易,依次执行;
2)如果当前批中的交易没有执行完毕,则取出一笔交易;
3)调度合约实例执行该交易;
4)执行该交易的某个语句;
5)如果执行到返回语句,则直接返回,并调度合约实例运行下一笔交易;
6)否则,判断是否执行到跨合约调用的语句;
7)如果不是,则继续执行下一条语句;
8)否则,生成新的交易,调用合约实例对新的交易继续执行第3步;
9)等待所有交易执行完毕,所有调度结束。
其中,跨合约调度器为区块链侧用于调度智能合约虚拟机引擎执行交易。第一合约实例用于泛指合约实例,具体可以表现为工资交易合约、证券交易合约、账号证明合约等等,此处不作具体限制,如图14中的合约1。待处理交易的属性具体可以表现为如交易名称、交易类型以及特殊交易标识等,此处不作具体限制。
为了便于理解,如图14所示,本实施例后续均以深度为3的跨合约调用为例进行介绍,深度第一层和深度第三层都是来自合约1,第二层来自合约2,这里跨合约调度负责管理所有合约实例的调用和状态同步,状态数据库负责最终落库状态,可以理解的是,实际应用场景中可以涉及多层深度以及多种合约实例,此处不作具体限制。
具体地,如图14所示,当跨合约调度器接收到待处理交易时,可以向一个智能合约虚拟机引擎发起任务(如图14所示意的1、发起任务),基于发起任务通过如图14所示意的深度1,初始调度第一合约实例(如图14所示意的深度1中的合约1),读写待处理交易对应的合约代码以及相关数据,并可以根据待处理交易的属性(如交易类型),初始调度第一合约实例按照上述如图15所示的步骤,逐句执行待处理交易对应的语句(如图14所示意的深度1中的读写数据)。
需要说明的是,本实施例中的区块链支持合约引擎能力,区块链具有跨合约调用能力以及合约实例具有缓存能力。
在步骤S102中,当初始调度的第一合约实例执行到第一跨合约调用语句时,向跨合约调度器发送携带有第一合约实例执行语句所对应的第一缓存,以及第一辅助交易的属性的第一跨合约调用请求,以使跨合约调度器根据第一跨合约调用语句生成第一辅助交易,并存储第一缓存至交易整体缓存;
在本实施例中,第一跨合约调用语句用于至指示需要进行跨合约调用的代码语句,具体可以包括交易的属性字段以及交易的其他关键字段等。第一缓存用于表示第一合约实例执行待处理交易对应的第一条语句至第一条跨合约调用语句所产生的阶段缓存(如图14所示意的合约1深度1前半段缓存)。第一辅助交易是在执行待处理交易的基础上还需要执行的新交易,即当新交易执行完后才能继续保证待处理交易执行完毕,如执行对象A的工资支付交易(即待处理交易)时,还需要执行完对象A的账号鉴权交易(即第一辅助交易),才能继续执行对象A的工资支付交易(即待处理交易)。
具体地,如图14所示,当初始调度的第一合约实例执行到第一跨合约调用语句时,向跨合约调度器发送携带有第一合约实例执行语句所对应的第一缓存,以及第一辅助交易的属性的第一跨合约调用请求(如图14所示意的深度1向跨合约调度器发送2、请求跨合约调用)。
进一步地,基于如上述图15的执行步骤,本实施例可以通过跨合约调度器根据第一跨合约调用语句生成第一辅助交易(即如图15所示意的生成新的交易),并存储第一缓存至交易整体缓存(如图14所示意的深度1通过跨合约调度器执行3、同步合约1深度1前半段缓存至交易整体缓存)。
在步骤S103中,若第一辅助交易属性不同于待处理交易的属性,则跨合约调度器根据第一跨合约调用请求调度第二合约实例,逐条执行第一辅助交易对应的语句,其中,第二合约实例不同于第一合约实例;
在本实施例中,如果在跨合约调度器获取到的第一跨合约调用请求中,第一辅助交易属性不同于待处理交易的属性,则可以调度不同于第一合约实例的第二合约实例,来逐条执行第一辅助交易对应的语句,以维护第一辅助交易的安全执行,以及合约实例的计算和获取传输数据等。
其中,第一辅助交易的属性用于泛指不同于待处理交易的其他交易的属性,具体可以表现为如交易名称、交易类型以及特殊交易标识等,此处不作具体限制。
具体地,如图14所示,如果在生成新的交易即第一辅助交易时,可以先通过判断第一辅助交易属性与待处理交易的属性是否相同,若不同,则可以理解为需要调用不同于第一合约实例的其他合约实例即第二合约实例,故跨合约调度器向如图14所示意的深度2发起子任务,使得深度2可以根据第一跨合约调用请求调度第二合约实例(如图14所示意的深度2中的合约2),逐条执行第一辅助交易对应的语句(如图14所示意的深度2中的读写数据)。
在步骤S104中,当第二合约实例执行到第二跨合约调用语句时,向跨合约调度器发送携带有第二合约实例执行语句所对应的第二缓存,以及第二辅助交易的属性的第二跨合约调用请求,以使跨合约调度器根据第二跨合约调用语句生成第二辅助交易,并存储第二缓存至交易整体缓存;
在本实施例中,第二跨合约调用语句用于至指示需要进行跨合约调用的代码语句,具体可以包括交易的属性字段以及交易的其他关键字段等。第二缓存用于表示第二合约实例执行第一辅助交易对应的第一条语句至第一条跨合约调用语句所产生的阶段缓存(如图14所示意的合约2深度2前半段缓存)。第二辅助交易是在执行第一辅助交易的基础上还需要执行的新交易,即当新交易执行完后才能继续保证第一辅助交易以及待处理交易执行完毕,如执行对象A的工资支付交易(即待处理交易)时,需要执行完对象A的账号鉴权交易(即第一辅助交易)的同时,还需要执行对象A的冻结资金状态查询交易(即第二辅助交易)后,才能继续执行对象A的账号鉴权交易(即第一辅助交易),再执行对象A的工资支付交易(即待处理交易)。
具体地,如图14所示,当初始调度的第二合约实例执行到第二跨合约调用语句时,向跨合约调度器发送携带有第二合约实例执行语句所对应的第二缓存,以及第二辅助交易的属性的第二跨合约调用请求(如图14所示意的深度2向跨合约调度器发送5、请求跨合约调用)。
进一步地,基于如上述图15的执行步骤,本实施例可以通过跨合约调度器根据第二跨合约调用语句生成第二辅助交易(即如图15所示意的生成新的交易),并存储第二缓存至交易整体缓存(如图14所示意的深度2通过跨合约调度器执行6、同步合约2深度2前半段缓存至交易整体缓存)。
在步骤S105中,若第二辅助交易属性与待处理交易的属性相同,则跨合约调度器根据第二跨合约调用请求重新调度第一合约实例,并将第一缓存共享至重新调度的第一合约实例,以使重新调度的第一合约实例基于第一缓存,逐条执行第二辅助交易对应的语句;
在本实施例中,如果在跨合约调度器获取到的第二跨合约调用请求中,第二辅助交易属性与待处理交易的属性相同,则可以重新调度第一合约实例,并将第一缓存共享至重新调度的第一合约实例,以使重新调度的第一合约实例基于第一缓存,来逐条执行第二辅助交易对应的语句,以维护第二辅助交易的安全执行,以及合约实例的计算和获取传输数据等。
其中,第二辅助交易的属性用于泛指不同于待处理交易的其他交易的属性,具体可以表现为如交易名称、交易类型以及特殊交易标识等,此处不作具体限制。
具体地,如图14所示,如果在生成新的交易即第二辅助交易时,可以先通过判断第二辅助交易属性与待处理交易的属性是否相同,若相同,则可以理解为遇到了相同合约实例,可以进行共享缓存,即需要重新调用第一合约实例,故跨合约调度器可以向如图14所示意的深度3发起子任务以及共享第一缓存(如图14所示意的跨合约调度器向深度3执行7、发起子任务,发送合约1前半段缓存),使得深度3可以根据第一跨合约调用请求开启新的合约进程,重新调度第一合约实例(如图14所示意的深度3中的合约1),逐条执行第二辅助交易对应的语句(如图14所示意的深度3中的读写数据)。
在步骤S106中,当第二辅助交易对应的全部语句执行完毕时,将第二辅助交易的执行结果返回至第二合约实例,以使第二合约实例基于第二辅助交易的执行结果,执行第二跨合约调用语句后的语句;
可以理解的是,如图17所示,由于交易整体缓存在跨合约调用本质上是一种递归调用,即从第一层的初始合约实例调用第二层合约实例,同理第二层合约实例调用第三层合约实例,依此类推,可以依次进行下一层的合约调用,然后,当每一层的合约实例执行完成后都会返回到上一层合约实例继续执行,如当第三层的合约实例执行完成后会返回第二层的合约实例进行执行,当第二层的合约实例执行完毕后会返回第一层的合约实例继续执行,依次类推直到回到第一层的初始合约执行完毕。
其中,在执行每一层的合约实例的调用时都会产生读写集,可以用于检测缓存冲突和修改最终数据库。本实施例中的交易整体缓存一方面可以用于最终数据库的存储,另一方面用于加速运行合约实例的数据获取。
其中,如图17所示,共享缓存的跨合约调用数据结构有如下关系:
a)数据映射,不同合约的读写集是不会冲突的(键中含有合约信息),相同合约共享缓存,因此,如图17所示,可以对缓存数据以合约名进行划分,如合约名1映射于读写数据1,以便于筛选合约缓存并进行共享或传递。
b)读写数据,合约运行过程中涉及到的缓存数据。
i.读集(如图17所示意的合约名1映射于读写数据1中的读集,如包括键1以及相应的值、键2以及相应的值等等),合约运行过程中请求获取数据所产生的缓存。
ii.写集(如图17所示意的合约名1映射于读写数据1中的写集,如包括键1以及相应的值、键2以及相应的值等等),合约运行过程中请求写入数据所产生的缓存。
由此,如图14所示,当第二辅助交易对应的全部语句执行完毕时,可以返回至上一层的合约实例的调用,即将第二辅助交易的执行结果返回至第二合约实例(如图14所示意的10、返回结果),以使第二合约实例基于第二辅助交易的执行结果,继续按照上述如15所示的执行步骤执行第二跨合约调用语句后的语句。
在步骤S107中,当第一辅助交易对应的全部语句执行完毕时,将第一辅助交易的执行结果返回至初始调度的第一合约实例,以使初始调度的第一合约实例基于第一辅助交易的执行结果,执行第一跨合约调用语句后的语句;
具体地,基于上述递归调用原理,如图14所示,当第一辅助交易对应的全部语句执行完毕时,可以返回至上一层的合约实例的调用,即将第一辅助交易的执行结果返回至初始调度的第一合约实例以及共享第一全部缓存至初始的第一合约实例(如图14所示意的13、返回结果,发送合约1全部缓存),以使初始调用的第一合约实例可以基于第二辅助交易的执行结果,继续按照上述如15所示的执行步骤执行第二跨合约调用语句后的语句。
在步骤S108中,当待处理交易对应的全部语句执行完毕时,将待处理交易的执行结果返回至跨合约调度器,以使跨合约调度器将待处理交易的执行结果,以及交易整体缓存中的全部缓存存储至数据库中。
具体地,基于上述递归调用原理,如图14所示,当待处理交易对应的全部语句执行完毕时,可以理解为最初的合约实例的执行完成,将待处理交易的执行结果返回至跨合约调度器,(如图14所示意的14、返回结果),以使跨合约调度器将待处理交易的执行结果,以及交易整体缓存中的全部缓存存储至数据库中(如图14所示意的14、落入数据库)。
在本申请实施例中,提供了一种区块链跨合约调用方法,通过上述方式,能够将所有合约实例在执行交易语句时产生的缓存都存储至交易整体缓存中,使得当执行到跨合约调用语句,出现相同属性要调用相同的合约实例时,可以将相同的合约实例在此前存储至交易整体缓存同一合约实例标识对应的缓存集中的缓存,共享至重新调度的相同合约实例中,以避免重新读写数据造成多次数据传输而耗费大量的时间,另外,还能够通过交易整体缓存作为数据传输和缓存的中转站,以维护合约实例在计算和获取数据时的高效性和准确性,从而提高区块链执行查询操作的效率。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图3所示,步骤S101当跨合约调度器接收到待处理交易时,根据待处理交易的属性,初始调度第一合约实例逐条执行待处理交易对应的语句,包括:
在步骤S301中,区块链从交易队列中选取待处理交易,并发送至跨合约调度器;
在步骤S302中,当跨合约调度器接收到待处理交易,建立待处理交易对应的任务;
在步骤S303中,基于任务使用任务调度器,根据待处理交易的属性,初始调度第一合约实例逐条执行待处理交易对应的语句,其中,初始调度第一合约实例来源于第一合约虚拟机引擎。
在本实施例中,区块链侧的交易队列会先将所有待执行的待处理交易都会先放到该交易队列中,区块链从交易队列中选取待处理交易,并发送至跨合约调度器,则当跨合约调度器接收到待处理交易,选择智能合约虚拟机引擎,并建立待处理交易对应的任务,然后,基于任务使用任务调度器,根据待处理交易的属性,初始调度第一合约实例逐条执行待处理交易对应的语句。
其中,初始调度第一合约实例来源于第一合约虚拟机引擎。其中,第一合约虚拟机引擎用于泛指能够支持合约引擎能力的智能合约虚拟机引擎,智能合约虚拟机引擎可以包括任务调度器、进行管理器以及多个合约运行实例等。
具体地,如图14所示,区块链从交易队列中选取待处理交易后,可以发送至跨合约调度器,当跨合约调度器接收到待处理交易时,可以向一个智能合约虚拟机引擎发起任务(如图14所示意的1、发起任务),基于任务使用任务调度器,调度进程,并通过进程管理器开启合约实例进程(如图14所示意的深度1),来初始调度第一合约实例(如图14所示意的深度1中的合约1),读写待处理交易对应的合约代码以及相关数据,并可以根据待处理交易的属性(如交易类型),初始调度第一合约实例按照上述如图15所示的执行步骤,逐句执行待处理交易对应的语句(如图14所示意的深度1中的读写数据)。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图4所示,步骤S102当初始调度的第一合约实例执行到第一跨合约调用语句时,向跨合约调度器发送携带有第一合约实例执行语句所对应的第一缓存,以及第一辅助交易的属性的第一跨合约调用请求,包括:
在步骤S401中,当初始调度的第一合约实例执行到第一跨合约调用语句时,根据第一跨合约调用语句中的第一辅助交易的属性字段,确定第一辅助交易的属性;
在步骤S402中,初始调度的第一合约实例基于执行的第一跨合约调用语句前的语句,生成第一缓存;
在步骤S403中,向跨合约调度器发送携带有第一缓存以及第一辅助交易的属性的第一跨合约调用请求;
在步骤S404中,当跨合约调度器接收到第一跨合约调用请求时,根据第一跨合约调用语句生成第一辅助交易;
在步骤S405中,跨合约调度器将第一缓存存储至交易整体缓存中第一合约实例标识对应的缓存集。
在本实施例中,当初始调度的第一合约实例执行到第一跨合约调用语句时,可以根据第一跨合约调用语句中的第一辅助交易的属性字段,确定第一辅助交易的属性,初始调度的第一合约实例基于执行的第一跨合约调用语句前的语句,生成第一缓存,并向跨合约调度器发送携带有第一缓存以及第一辅助交易的属性的第一跨合约调用请求,使得当跨合约调度器接收到第一跨合约调用请求时,可以根据第一跨合约调用语句生成第一辅助交易并存储至交易整体缓存中第一合约实例标识对应的缓存集,以便于后续对缓存的共享和传递,以维护数据传输的高效性,从而可以在一定程度上提高区块链执行查询操作的效率。
其中,第一合约实例标识用于指示第一合约实例,具体可以表现为第一合约实例的名称(如图17所示意的合约名1)。第一合约实例标识对应的缓存集用于指示第一合约实例具有映射关系的读写数据集(如图17所示意的合约名1对应的读写数据)。
具体地,如图14所示,当初始调度的第一合约实例执行到第一跨合约调用语句时,可以根据第一跨合约调用语句中的第一辅助交易的属性字段,确定第一辅助交易的属性,同时,为更好地实现相同合约的内存共享,本实施例可以记录每个合约实例的运行实例缓存(如图17所示意的运行实例缓存,以及运行实例缓存包括的读集和写集),即当初始调度的第一合约实例执行到第一跨合约调用语句时,可以记录该初始调度的第一合约实例执行过的第一跨合约调用语句前的语句的运行实例缓存,即第一缓存。
进一步地,初始调度的第一合约实例的进程,可以向跨合约调度器发送携带有第一缓存以及第一辅助交易的属性的第一跨合约调用请求(如图14所示意的深度1向跨合约调度器发送2、请求跨合约调用)。
进一步地,当跨合约调度器接收到第一跨合约调用请求时,可以基于如上述图15的执行步骤,通过跨合约调度器根据第一跨合约调用语句生成第一辅助交易(即如图15所示意的生成新的交易),并将第一缓存存储至交易整体缓存中第一合约实例标识对应的缓存集(如图14所示意的深度1通过跨合约调度器执行3、同步合约1深度1前半段缓存至交易整体缓存)。
可选地,在上述图3对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图5所示,步骤S103若第一辅助交易属性不同于待处理交易的属性,则跨合约调度器根据第一跨合约调用请求调度第二合约实例,逐条执行第一辅助交易对应的语句,包括:
在步骤S501中,跨合约调度器根据第一辅助交易,建立任务的第一子任务;
在步骤S502中,若第一辅助交易属性不同于待处理交易的属性,则基于第一子任务使用任务调度器,根据第一辅助交易的属性,调度第二合约实例逐条执行第一辅助交易对应的语句,其中,第二合约实例来源于第一合约虚拟机引擎或第二合约虚拟机引擎,第一合约虚拟机引擎不同于第二合约虚拟机引擎。
在本实施例中,当跨合约调度器生成第一辅助交易后,可以根据第一辅助交易,建立任务的第一子任务,然后,如果在跨合约调度器获取到的第一跨合约调用请求中,第一辅助交易属性不同于待处理交易的属性,则可以基于第一子任务使用任务调度器,根据第一辅助交易的属性,调度不同于第一合约实例的第二合约实例,来逐条执行第一辅助交易对应的语句,以维护第一辅助交易的安全执行,以及维护合约实例的计算和获取传输数据等的效率。
其中,第一子任务用于泛指跨合约调度器已创建的任务下的子任务(如图14示意的4、发起子任务)。第二合约实例来源于第一合约虚拟机引擎或第二合约虚拟机引擎,第一合约虚拟机引擎不同于第二合约虚拟机引擎。第二合约虚拟机引擎用于泛指具有不同于第一合约虚拟机引擎的合约能力的智能合约虚拟机引擎。
具体地,如图14所示,当跨合约调度器生成第一辅助交易后,可以根据第一辅助交易,建立任务的第一子任务(如图14示意的4、发起子任务),可以基于生成新的交易即第一辅助交易,来判断第一辅助交易属性与待处理交易的属性是否相同,若不同,则可以理解为需要调用不同于第一合约实例的其他合约实例即第二合约实例,故跨合约调度器向如图14所示意的深度2发起子任务,来基于第一子任务使用任务调度器,调度进程管理器开启使得如图14所示意的深度2的合约进程,深度2的合约进程可以根据第一辅助交易的属性,调度不同于第一合约实例的第二合约实例(如图14所示意的深度2中的合约2),来按照上述如图15所示的执行步骤,逐条执行第一辅助交易对应的语句(如图14所示意的深度2中的读写数据)。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图6所示,步骤S104当第二合约实例执行到第二跨合约调用语句时,向跨合约调度器发送携带有第二合约实例执行语句所对应的第二缓存,以及第二辅助交易的属性的第二跨合约调用请求,包括:
在步骤S601中,当第二合约实例执行到第二跨合约调用语句时,根据第二跨合约调用语句中的第二辅助交易的属性字段,确定第二辅助交易的属性;
在步骤S602中,第二合约实例基于执行的第二跨合约调用语句前的语句,生成第二缓存;
在步骤S603中,向跨合约调度器发送携带有第二缓存以及第二辅助交易的属性的第二跨合约调用请求;
在步骤S604中,当跨合约调度器接收到第二跨合约调用请求时,根据第二跨合约调用语句生成第二辅助交易;
在步骤S605中,跨合约调度器将第二缓存存储至交易整体缓存中第二合约实例标识对应的缓存集。
在本实施例中,当初始调度的第二合约实例执行到第二跨合约调用语句时,可以根据第二跨合约调用语句中的第二辅助交易的属性字段,确定第二辅助交易的属性,初始调度的第二合约实例基于执行的第二跨合约调用语句前的语句,生成第二缓存,并向跨合约调度器发送携带有第二缓存以及第二辅助交易的属性的第二跨合约调用请求,使得当跨合约调度器接收到第二跨合约调用请求时,可以根据第二跨合约调用语句生成第二辅助交易并存储至交易整体缓存中第二合约实例标识对应的缓存集,以便于后续对缓存的共享和传递,以维护数据传输的高效性,从而可以在一定程度上提高区块链执行查询操作的效率。
其中,第二合约实例标识用于指示第二合约实例,具体可以表现为第二合约实例的名称(如图17所示意的合约名2)。第二合约实例标识对应的缓存集用于指示第二合约实例具有映射关系的读写数据集(如图17所示意的合约名2对应的读写数据)。
具体地,如图14所示,当初始调度的第二合约实例执行到第二跨合约调用语句时,可以根据第二跨合约调用语句中的第二辅助交易的属性字段,确定第二辅助交易的属性,同时,为更好地实现相同合约的内存共享,本实施例可以记录每个合约实例的运行实例缓存(如图17所示意的运行实例缓存,以及运行实例缓存包括的读集和写集),即当初始调度的第二合约实例执行到第二跨合约调用语句时,可以记录该初始调度的第二合约实例执行过的第二跨合约调用语句前的语句的运行实例缓存,即第二缓存。
进一步地,初始调度的第二合约实例的进程,可以向跨合约调度器发送携带有第二缓存以及第二辅助交易的属性的第二跨合约调用请求(如图14所示意的深度1向跨合约调度器发送5、请求跨合约调用)。
进一步地,当跨合约调度器接收到第二跨合约调用请求时,可以基于如上述图15的执行步骤,通过跨合约调度器根据第二跨合约调用语句生成第二辅助交易(即如图15所示意的生成新的交易),并将第二缓存存储至交易整体缓存中第二合约实例标识对应的缓存集(如图14所示意的深度2通过跨合约调度器执行6、同步合约2深度2前半段缓存至交易整体缓存)。
可选地,在上述图3对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图7所示,步骤S105若第二辅助交易属性与待处理交易的属性相同,则跨合约调度器根据第二跨合约调用请求重新调度第一合约实例,并将第一缓存共享至重新调度的第一合约实例,包括:
在步骤S701中,跨合约调度器根据第二辅助交易,建立任务的第二子任务;
在步骤S702中,若第二辅助交易属性与待处理交易的属性相同,则基于第二子任务使用任务调度器,根据第二辅助交易的属性,重新调度第一合约实例;
在步骤S703中,跨合约调度器将第一缓存共享至重新调度的第一合约实例,以使重新调度第一合约实例逐条执行第一辅助交易对应的语句。
在本实施例中,当跨合约调度器生成第二辅助交易后,可以根据第二辅助交易,建立任务的第二子任务,然后,如果在跨合约调度器获取到的第二跨合约调用请求中,第二辅助交易属性与待处理交易的属性相同,则可以基于第二子任务使用任务调度器,根据第二辅助交易的属性,重新调度第一合约实例,并将第一缓存共享至重新调度的第一合约实例,以使重新调度的第一合约实例可以基于第一缓存,来逐条执行第二辅助交易对应的语句,以维护第二辅助交易的安全执行,以及维护合约实例的计算和获取传输数据等的效率。
其中,第二子任务用于泛指跨合约调度器已创建的任务下的子任务(如图14示意的7、发起子任务)。第二子任务不同于第一子任务,其中,第二子任务可以与第一子任务为并列关系或包含关系(如第一子任务包括第二子任务)。
具体地,如图14所示,当跨合约调度器生成第二辅助交易后,可以根据第二辅助交易,建立任务的第二子任务(如图14示意的7、发起子任务),可以基于生成新的交易即第二辅助交易,来判断第二辅助交易属性与待处理交易的属性是否相同,若相同,则可以理解为遇到了相同合约实例,可以进行共享缓存,故跨合约调度器向如图14所示意的深度3发起子任务,来基于第二子任务使用任务调度器,调度进程管理器开启使得如图14所示意的深度3的合约进程,深度3的合约进程可以重新调用第一合约实例,且跨合约调度器可以向如图14所示意的深度3的合约进程共享第一缓存(如图14所示意的跨合约调度器向深度3执行7、发起子任务,发送合约1前半段缓存),使得深度3的合约进程基于第一缓存,按照上述如图15所示的执行步骤,逐条执行第二辅助交易对应的语句(如图14所示意的深度3中的读写数据)。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图8所示,步骤S106当第二辅助交易对应的全部语句执行完毕时,将第二辅助交易的执行结果返回至第二合约实例,包括:
在步骤S801中,当重新调度第一合约实例执行完毕第二辅助交易对应的全部语句时,向跨合约调度器返回第二辅助交易的执行结果,以及执行全部语句对应的第一全部缓存;
在步骤S802中,跨合约调度器将接收到的第一全部缓存存储至交易整体缓存中第一合约实例标识对应的缓存集;
在步骤S803中,跨合约调度器将接收到的第二辅助交易的执行结果发送至第二合约实例,以使第二合约实例基于执行结果,执行第二跨合约调用语句后的语句。
在本实施例中,当重新调度第一合约实例执行完毕第二辅助交易对应的全部语句时,可以向跨合约调度器返回第二辅助交易的执行结果,以及执行全部语句对应的第一全部缓存,使得跨合约调度器可以将接收到的第一全部缓存存储至交易整体缓存中第一合约实例标识对应的缓存集,并将接收到的第二辅助交易的执行结果发送至第二合约实例,以使第二合约实例基于执行结果,执行第二跨合约调用语句后的语句,以维护后续第一辅助交易的顺利完整执行,以及维护合约实例的计算和获取传输数据等效率。
其中,第一全部缓存指示第一合约实例执行完毕第二辅助交易对应的全部语句,所产生的运行实例缓存(如图17所示意的运行实例缓存)。第一全部缓存可用于共享至其他运行的第一合约实例。
具体地,基于上述递归调用原理,如图14所示,当重新调度第一合约实例执行完毕第二辅助交易对应的全部语句时,可以返回至上一层的合约实例的调用,即向跨合约调度器返回第二辅助交易的执行结果(如图14所示意的10、返回结果),以及向跨合约调度器返回执行全部语句对应的第一全部缓存(如图14所示意的9、同步合约1深度3的全部缓存),以使第二合约实例可以基于第二辅助交易的执行结果,继续按照上述如15所示的执行步骤执行第二跨合约调用语句后的语句。
例如,当重新调度第一合约实例(如图14所示意的深度3的合约1)执行完毕对象A的冻结资金状态查询交易(即第二辅助交易)的全部语句后,可以将对象A的冻结资金状态查询交易(即第二辅助交易)的执行结果,返回至上一层的合约实例的调用(如图14所示意的深度2的合约2),使得第二合约实例(如图14所示意的深度2的合约2)可以继续执行对象A的账号鉴权交易(即第一辅助交易)中的第二跨合约调用语句后的语句。
可选地,在上述图8对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图9所示,步骤S107当第一辅助交易对应的全部语句执行完毕时,将第一辅助交易的执行结果返回至初始调度的第一合约实例,以使初始调度的第一合约实例基于第一辅助交易的执行结果,执行第一跨合约调用语句后的语句,包括:
在步骤S901中,当第二合约实例执行完毕第一辅助交易对应的全部语句时,向跨合约调度器返回第一辅助交易的执行结果,以及执行全部语句对应的第二全部缓存;
在步骤S902中,跨合约调度器将接收到的第二全部缓存存储至交易整体缓存中第二合约实例标识对应的缓存集;
在步骤S903中,跨合约调度器将接收到的第一辅助交易的执行结果发送至初始调度的第一合约实例,以使初始调度的第一合约实例基于执行结果,执行第一跨合约调用语句后的语句。
在本实施例中,当第二合约实例执行完毕第一辅助交易对应的全部语句时,可以向跨合约调度器返回第一辅助交易的执行结果,以及执行全部语句对应的第二全部缓存,使得跨合约调度器可以将接收到的第二全部缓存存储至交易整体缓存中第二合约实例标识对应的缓存集,并将接收到的第一辅助交易的执行结果发送至初始调度的第一合约实例,以使初始调度的第一合约实例可以基于该执行结果,执行第二跨合约调用语句后的语句,以维护后续待处理交易的顺利完整执行,以及维护合约实例的计算和获取传输数据等效率。
其中,第二全部缓存指示第二合约实例执行完毕第一辅助交易对应的全部语句,所产生的运行实例缓存(如图17所示意的运行实例缓存)。第二全部缓存可用于共享至其他运行的第二合约实例。
具体地,基于上述递归调用原理,如图14所示,当第二合约实例执行完毕第一辅助交易对应的全部语句时,可以返回至上一层的合约实例的调用,即向跨合约调度器返回第一辅助交易的执行结果(如图14所示意的11、返回结果),以及向跨合约调度器返回执行全部语句对应的第二全部缓存(如图14所示意的12、同步合约2深度2的全部缓存),同时,跨合约调度器可以将同属于第一合约实例标识对应的第一全部缓存,共享至初始调度的第一合约实例,以使初始调度的第一合约实例可以基于第一辅助交易的执行结果以及第一全部缓存,继续按照上述如15所示的执行步骤执行第一跨合约调用语句后的语句。
例如,当第二合约实例(如图14所示意的深度2的合约2)执行完毕账号鉴权交易(即第一辅助交易)的全部语句后,可以将对象A的账号鉴权交易(即第一辅助交易)的执行结果,返回至上一层的合约实例的调用(如图14所示意的深度1的合约1),使得初始调度的第一合约实例(如图14所示意的深度1的合约1)可以继续执行对象A的工资支付交易(即待处理交易)中的第一跨合约调用语句后的语句。
可选地,在上述图9对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图10所示,步骤S108当待处理交易对应的全部语句执行完毕时,将待处理交易的执行结果返回至跨合约调度器,包括:
在步骤S1001中,当初始调度的第一合约实例执行完毕待处理交易对应的全部语句时,向跨合约调度器返回待处理交易的执行结果,以及执行全部语句对应的第三全部缓存;
在步骤S1002中,跨合约调度器将接收到的第三全部缓存存储至交易整体缓存中第一合约实例标识对应的缓存集;
在步骤S1003中,跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存存储至区块链的数据库中。
在本实施例中,当初始调度的第一合约实例执行完毕待处理交易对应的全部语句时,可以向跨合约调度器返回待处理交易的执行结果,以及执行全部语句对应的第三全部缓存,使得跨合约调度器可以将接收到的第三全部缓存存储至交易整体缓存中第一合约实例标识对应的缓存集,并使得跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存存储至区块链的数据库中,以完成待处理交易的顺利完整执行,以及维护合约实例的计算和获取传输数据等效率。
其中,第三全部缓存指示初始调度的第一合约实例执行完毕待处理交易对应的全部语句,所产生的运行实例缓存(如图17所示意的运行实例缓存)。第三全部缓存可用于共享至其他运行的第一合约实例。
具体地,基于上述递归调用原理,如图14所示,当初始调度的第一合约实例执行完毕待处理交易对应的全部语句时,可以理解为任务交易执行完成,则可以向跨合约调度器返回待处理交易的执行结果(如图14所示意的14、返回结果),以及向跨合约调度器返回执行全部语句对应的第三全部缓存(如图14所示意的15、同步合约1深度1的全部缓存),使得跨合约调度器可以将待处理交易的执行结果(如图14所示意的14、返回结果),以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存存储至区块链的数据库中(如图14所示意的16、落入数据库)。
例如,当初始调度的第一合约实例(如图14所示意的深度1的合约1)执行完毕账号鉴权交易(即第一辅助交易)的全部语句后,可以将对象A的工资支付交易(即待处理交易)的执行结果,返回至跨合约调度器。
可选地,在上述图10对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图11所示,步骤S1003跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存存储至区块链的数据库中,包括:
在步骤S1101中,跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存返回至区块链中;
在步骤S1102中,分别对第一缓存、第一全部缓存、第三全部缓存、第二缓存和第二全部缓存进行遍历,若存在冲突缓存,则对冲突缓存进行更正处理,以得到更正缓存并存储至数据库。
在本实施例中,当跨合约调度器接收到初始调度的第一合约实例返回的待处理交易的执行结果,以及第三全部缓存时,可以先将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存返回至区块链中,然后,在对区块链中的第一缓存、第一全部缓存、第三全部缓存、第二缓存和第二全部缓存分别进行遍历,如果遍历到冲突缓存,则可以对冲突缓存进行更正处理,以获取到更正缓存并存储至数据库,能够分别维护了区块链侧的缓存和智能合约虚拟机引擎侧的合约实例缓存,从而降低了数据传输的成本,在一定程度上提升了区块链执行查询操作的效率。
可以理解的是,由于合约实例在运行过程中会生成读写集,这部分读写集既是缓存,也是最终需要落库存储的数据,故在合约实例运行完成后会将生成的读写集返回给区块链进行存储。为了便于理解,本实施例以一笔交易为了进行介绍,如图16所示,如何进行冲突检测以及更正的具体步骤如下:
(1)区块链将交易发送至智能合约虚拟机引擎中;
(2)智能合约虚拟机引擎可以启动一个合约实例来执行上述交易;
(3)当交易执行完毕后,该合约实例也生成完成读写集缓存;
(4)合约实例将该读写集缓存返回到区块链进行处理;
(5)区块链遍历结果中的所有读写集;
(6)如果存在冲突缓存,即读写集冲突(有别的读写集对该交易进行了读写),则返回第1步,重新执行上述步骤;否则进入第7步;
(7)将读写集写入到最终快照中,执行结束。
其中,冲突缓存可以用于表示同一交易被不同时间点触发的相同合约实例执行交易产生的缓存,或是不同时间点触发的不同的合约实例执行交易产生的缓存,或是同一时间点触发的不同的合约实例执行交易产生的缓存等,还可以表示为其他,此处不作具体限制。
具体地,按照上述如图16所示的执行步骤中的步骤(1)至步骤(3),当跨合约调度器接收到初始调度的第一合约实例返回的待处理交易的执行结果,以及第三全部缓存时,可以按照上述如图16所示的执行步骤中的步骤(4)先将待处理交易的执行结果,以及将交易整体缓存中的全部缓存,如第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存返回至区块链中,然后,可以对区块链中的第一缓存、第一全部缓存、第三全部缓存、第二缓存和第二全部缓存分别进行遍历,如果遍历到冲突缓存,则可以对冲突缓存进行更正处理,即重复上述如图16所示的执行步骤中的步骤(1)至步骤(6),以获取到更正缓存,将更正后的执行结果以及更正后的全部缓存写入区块链缓存快照,以使区块链缓存快照将写入的全部缓存以区块为单位更新到数据库中。
可选地,在上述图11对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图12所示,步骤S1102若存在冲突缓存,则对冲突缓存进行更正处理,以得到更正缓存并存储至数据库,包括:
在步骤S1201中,将冲突缓存对应的交易重新发送至跨合约调度器,以使跨合约调度器接收到待更正交易,建立待更正交易对应的更正任务;
在步骤S1202中,基于更正任务使用任务调度器,根据待更正交易的属性,调度合约实例逐条执行待更正交易对应的语句;
在步骤S1203中,当合约实例执行完毕待更正交易对应的全部语句,将待更正交易的执行结果以及执行待更正交易对应的全部语句的更正缓存存储至数据库,并删除冲突缓存以及冲突缓存对应的执行结果。
在本实施例中,当遍历到冲突缓存后,可以将冲突缓存对应的交易重新发送至跨合约调度器,以使跨合约调度器接收到待更正交易,并重新建立待更正交易对应的更正任务,进而可以基于更正任务使用任务调度器,根据待更正交易的属性,重新调度合约实例逐条执行待更正交易对应的语句,然后,当合约实例执行完毕待更正交易对应的全部语句时,可以将待更正交易的执行结果以及执行待更正交易对应的全部语句的更正缓存存储至数据库,并删除冲突缓存以及冲突缓存对应的执行结果,以维护区块链侧的缓存和智能合约虚拟机引擎侧的合约实例缓存,从而降低了数据传输的成本,在一定程度上提升了区块链执行查询操作的效率。
具体地,按照上述如图16所示的执行步骤中的步骤(1)至步骤(4),如果遍历到冲突缓存,则可以对冲突缓存进行更正处理,即重复上述如图16所示的执行步骤中的步骤(1)至步骤(6),即将冲突缓存对应的交易重新发送至跨合约调度器,以使跨合约调度器接收到待更正交易,并重新建立待更正交易对应的更正任务,进而可以基于更正任务使用任务调度器,根据待更正交易的属性,重新调度合约实例逐条执行待更正交易对应的语句,然后,当合约实例执行完毕待更正交易对应的全部语句时,可以将待更正交易的执行结果以及执行待更正交易对应的全部语句的更正缓存返回至区块链中进行处理,并删除冲突缓存以及冲突缓存对应的执行结果,然后,重新遍历区块链中的全部缓存,如果未遍历到冲突缓存,则按照上述如图16所示的执行步骤中的步骤(7)将区块链中更正后的执行结果以及更正后的全部缓存写入区块链缓存快照,以使区块链缓存快照将写入的全部缓存以区块为单位更新到数据库中。
可选地,在上述图10对应的实施例的基础上,本申请实施例提供的区块链跨合约调用方法另一个可选实施例中,如图13所示,步骤S1003跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存存储至区块链的数据库中,包括:
在步骤S1301中,跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存返回至区块链中;
在步骤S1302中,分别对第一缓存、第一全部缓存、第三全部缓存、第二缓存和第二全部缓存进行遍历,若不存在冲突缓存,则将待处理交易的执行结果以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存写入区块链缓存快照,以使区块链缓存快照将写入的全部缓存以区块为单位更新到数据库中。
在本实施例中,当跨合约调度器接收到初始调度的第一合约实例返回的待处理交易的执行结果,以及第三全部缓存时,可以先将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存返回至区块链中,然后,在对区块链中的第一缓存、第一全部缓存、第三全部缓存、第二缓存和第二全部缓存分别进行遍历,如果未遍历到冲突缓存,则可以将待处理交易的执行结果以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存写入区块链缓存快照,以使区块链缓存快照将写入的全部缓存以区块为单位更新到数据库中,以维护区块链侧的缓存和智能合约虚拟机引擎侧的合约实例缓存,从而降低了数据传输的成本,在一定程度上提升了区块链执行查询操作的效率。
具体地,按照上述如图16所示的执行步骤中的步骤(1)至步骤(3),当跨合约调度器接收到初始调度的第一合约实例返回的待处理交易的执行结果,以及第三全部缓存时,可以按照上述如图16所示的执行步骤中的步骤(4)先将待处理交易的执行结果,以及将交易整体缓存中的全部缓存,如第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存返回至区块链中,然后,可以对区块链中的第一缓存、第一全部缓存、第三全部缓存、第二缓存和第二全部缓存分别进行遍历,如果未遍历到冲突缓存,则按照上述如图16所示的执行步骤中的步骤(7)将待处理交易的执行结果以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存写入区块链缓存快照,以使区块链缓存快照将写入的全部缓存以区块为单位更新到数据库中。
下面对本申请中的区块链跨合约调用装置进行详细描述,请参阅图18,图18为本申请实施例中区块链跨合约调用装置的一个实施例示意图,区块链跨合约调用装置20包括:
获取单元201,用于当跨合约调度器接收到待处理交易时,根据待处理交易的属性,初始调度第一合约实例逐条执行待处理交易对应的语句;
发送单元202,用于当初始调度的第一合约实例执行到第一跨合约调用语句时,向跨合约调度器发送携带有第一合约实例执行语句所对应的第一缓存,以及第一辅助交易的属性的第一跨合约调用请求,以使跨合约调度器根据第一跨合约调用语句生成第一辅助交易,并存储第一缓存至交易整体缓存;
处理单元203,用于若第一辅助交易属性不同于待处理交易的属性,则跨合约调度器根据第一跨合约调用请求调度第二合约实例,逐条执行第一辅助交易对应的语句,其中,第二合约实例不同于第一合约实例;
发送单元202,还用于当第二合约实例执行到第二跨合约调用语句时,向跨合约调度器发送携带有第二合约实例执行语句所对应的第二缓存,以及第二辅助交易的属性的第二跨合约调用请求,以使跨合约调度器根据第二跨合约调用语句生成第二辅助交易,并存储第二缓存至交易整体缓存;
处理单元203,还用于若第二辅助交易属性与待处理交易的属性相同,则跨合约调度器根据第二跨合约调用请求重新调度第一合约实例,并将第一缓存共享至重新调度的第一合约实例,以使重新调度的第一合约实例基于第一缓存,逐条执行第二辅助交易对应的语句;
处理单元203,还用于当第二辅助交易对应的全部语句执行完毕时,将第二辅助交易的执行结果返回至第二合约实例,以使第二合约实例基于第二辅助交易的执行结果,执行第二跨合约调用语句后的语句;
处理单元203,还用于当第一辅助交易对应的全部语句执行完毕时,将第一辅助交易的执行结果返回至初始调度的第一合约实例,以使初始调度的第一合约实例基于第一辅助交易的执行结果,执行第一跨合约调用语句后的语句;
处理单元203,还用于当待处理交易对应的全部语句执行完毕时,将待处理交易的执行结果返回至跨合约调度器,以使跨合约调度器将待处理交易的执行结果,以及交易整体缓存中的全部缓存存储至数据库中。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,获取单元201具体可以用于:
区块链从交易队列中选取待处理交易,并发送至跨合约调度器;
当跨合约调度器接收到待处理交易,建立待处理交易对应的任务;
基于任务使用任务调度器,根据待处理交易的属性,初始调度第一合约实例逐条执行待处理交易对应的语句,其中,初始调度第一合约实例来源于第一合约虚拟机引擎。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,发送单元202具体可以用于:
当初始调度的第一合约实例执行到第一跨合约调用语句时,根据第一跨合约调用语句中的第一辅助交易的属性字段,确定第一辅助交易的属性;
初始调度的第一合约实例基于执行的第一跨合约调用语句前的语句,生成第一缓存;
向跨合约调度器发送携带有第一缓存以及第一辅助交易的属性的第一跨合约调用请求;
当跨合约调度器接收到第一跨合约调用请求时,根据第一跨合约调用语句生成第一辅助交易;
跨合约调度器将第一缓存存储至交易整体缓存中第一合约实例标识对应的缓存集。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,处理单元203具体可以用于:
跨合约调度器根据第一辅助交易,建立任务的第一子任务;
若第一辅助交易属性不同于待处理交易的属性,则基于第一子任务使用任务调度器,根据第一辅助交易的属性,调度第二合约实例逐条执行第一辅助交易对应的语句,其中,第二合约实例来源于第一合约虚拟机引擎或第二合约虚拟机引擎,第一合约虚拟机引擎不同于第二合约虚拟机引擎。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,发送单元202具体可以用于:
当第二合约实例执行到第二跨合约调用语句时,根据第二跨合约调用语句中的第二辅助交易的属性字段,确定第二辅助交易的属性;
第二合约实例基于执行的第二跨合约调用语句前的语句,生成第二缓存;
向跨合约调度器发送携带有第二缓存以及第二辅助交易的属性的第二跨合约调用请求;
当跨合约调度器接收到第二跨合约调用请求时,根据第二跨合约调用语句生成第二辅助交易;
跨合约调度器将第二缓存存储至交易整体缓存中第二合约实例标识对应的缓存集。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,处理单元203具体可以用于:
跨合约调度器根据第二辅助交易,建立任务的第二子任务;
若第二辅助交易属性与待处理交易的属性相同,则基于第二子任务使用任务调度器,根据第二辅助交易的属性,重新调度第一合约实例;
跨合约调度器将第一缓存共享至重新调度的第一合约实例,以使重新调度第一合约实例逐条执行第一辅助交易对应的语句。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,处理单元203具体可以用于:
当重新调度第一合约实例执行完毕第二辅助交易对应的全部语句时,向跨合约调度器返回第二辅助交易的执行结果,以及执行全部语句对应的第一全部缓存;
跨合约调度器将接收到的第一全部缓存存储至交易整体缓存中第一合约实例标识对应的缓存集;
跨合约调度器将接收到的第二辅助交易的执行结果发送至第二合约实例,以使第二合约实例基于执行结果,执行第二跨合约调用语句后的语句。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,处理单元203具体可以用于:
当第二合约实例执行完毕第一辅助交易对应的全部语句时,向跨合约调度器返回第一辅助交易的执行结果,以及执行全部语句对应的第二全部缓存;
跨合约调度器将接收到的第二全部缓存存储至交易整体缓存中第二合约实例标识对应的缓存集;
跨合约调度器将接收到的第一辅助交易的执行结果发送至初始调度的第一合约实例,以使初始调度的第一合约实例基于执行结果,执行第一跨合约调用语句后的语句。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,处理单元203具体可以用于:
当初始调度的第一合约实例执行完毕待处理交易对应的全部语句时,向跨合约调度器返回待处理交易的执行结果,以及执行全部语句对应的第三全部缓存;
跨合约调度器将接收到的第三全部缓存存储至交易整体缓存中第一合约实例标识对应的缓存集;
跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存存储至区块链的数据库中。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,处理单元203具体可以用于:
跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存返回至区块链中;
分别对第一缓存、第一全部缓存、第三全部缓存、第二缓存和第二全部缓存进行遍历,若存在冲突缓存,则对冲突缓存进行更正处理,以得到更正缓存并存储至数据库。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,处理单元203具体可以用于:
将冲突缓存对应的交易重新发送至跨合约调度器,以使跨合约调度器接收到待更正交易,建立待更正交易对应的更正任务;
基于更正任务使用任务调度器,根据待更正交易的属性,调度合约实例逐条执行待更正交易对应的语句;
当合约实例执行完毕待更正交易对应的全部语句,将待更正交易的执行结果以及执行待更正交易对应的全部语句的更正缓存存储至数据库,并删除冲突缓存以及冲突缓存对应的执行结果。
可选地,在上述图18对应的实施例的基础上,本申请实施例提供的区块链跨合约调用装置的另一实施例中,处理单元203具体可以用于:
跨合约调度器将待处理交易的执行结果,以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存返回至区块链中;
分别对第一缓存、第一全部缓存、第三全部缓存、第二缓存和第二全部缓存进行遍历,若不存在冲突缓存,则将待处理交易的执行结果以及将交易整体缓存中的第一合约标识对应的第一缓存、第一全部缓存和第三全部缓存,以及第二合约标识对应的第二缓存和第二全部缓存写入区块链缓存快照,以使区块链缓存快照将写入的全部缓存以区块为单位更新到数据库中。
本申请另一方面提供了另一种计算机设备示意图,如图19所示,图19是本申请实施例提供的一种计算机设备结构示意图,该计算机设备300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)310(例如,一个或一个以上处理器)和存储器320,一个或一个以上存储应用程序331或数据332的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器320和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对计算机设备300中的一系列指令操作。更进一步地,中央处理器310可以设置为与存储介质330通信,在计算机设备300上执行存储介质330中的一系列指令操作。
计算机设备300还可以包括一个或一个以上电源340,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口360,和/或,一个或一个以上操作系统333,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述计算机设备300还用于执行如图2至图13对应的实施例中的步骤。
本申请的另一方面提供了一种计算机可读存储介质,其上存储有计算机程序,当计算机程序被处理器执行时实现如图2至图13所示实施例描述的方法中的步骤。
本申请的另一方面提供了一种包含计算机程序的计算机程序产品,当计算机程序被处理器执行时实现如图2至图13所示实施例描述的方法中的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (16)

1.一种区块链跨合约调用方法,其特征在于,包括:
当跨合约调度器接收到待处理交易时,根据所述待处理交易的属性,初始调度第一合约实例逐条执行所述待处理交易对应的语句;
当初始调度的所述第一合约实例执行到第一跨合约调用语句时,向所述跨合约调度器发送携带有所述第一合约实例执行语句所对应的第一缓存,以及所述第一辅助交易的属性的第一跨合约调用请求,以使所述跨合约调度器根据所述第一跨合约调用语句生成第一辅助交易,并存储所述第一缓存至交易整体缓存;
若所述第一辅助交易属性不同于所述待处理交易的属性,则所述跨合约调度器根据所述第一跨合约调用请求调度第二合约实例,逐条执行所述第一辅助交易对应的语句,其中,所述第二合约实例不同于所述第一合约实例;
当所述第二合约实例执行到第二跨合约调用语句时,向所述跨合约调度器发送携带有所述第二合约实例执行语句所对应的第二缓存,以及所述第二辅助交易的属性的第二跨合约调用请求,以使所述跨合约调度器根据所述第二跨合约调用语句生成第二辅助交易,并存储所述第二缓存至交易整体缓存;
若所述第二辅助交易属性与所述待处理交易的属性相同,则所述跨合约调度器根据所述第二跨合约调用请求重新调度第一合约实例,并将所述第一缓存共享至重新调度的所述第一合约实例,以使重新调度的所述第一合约实例基于所述第一缓存,逐条执行所述第二辅助交易对应的语句;
当所述第二辅助交易对应的全部语句执行完毕时,将所述第二辅助交易的执行结果返回至所述第二合约实例,以使所述第二合约实例基于所述第二辅助交易的执行结果,执行所述第二跨合约调用语句后的语句;
当所述第一辅助交易对应的全部语句执行完毕时,将所述第一辅助交易的执行结果返回至初始调度的所述第一合约实例,以使初始调度的所述第一合约实例基于所述第一辅助交易的执行结果,执行所述第一跨合约调用语句后的语句;
当所述待处理交易对应的全部语句执行完毕时,将所述待处理交易的执行结果返回至所述跨合约调度器,以使所述跨合约调度器将所述待处理交易的执行结果,以及所述交易整体缓存中的全部缓存存储至数据库中。
2.根据权利要求1所述的方法,其特征在于,所述当跨合约调度器接收到待处理交易时,根据所述待处理交易的属性,初始调度第一合约实例逐条执行所述待处理交易对应的语句,包括:
区块链从交易队列中选取所述待处理交易,并发送至所述跨合约调度器;
当所述跨合约调度器接收到所述待处理交易,建立所述待处理交易对应的任务;
基于所述任务使用任务调度器,根据所述待处理交易的属性,初始调度所述第一合约实例逐条执行所述待处理交易对应的语句,其中,初始调度所述第一合约实例来源于第一合约虚拟机引擎。
3.根据权利要求1所述的方法,其特征在于,所述当初始调度的所述第一合约实例执行到第一跨合约调用语句时,向所述跨合约调度器发送携带有所述第一合约实例执行语句所对应的第一缓存,以及所述第一辅助交易的属性的第一跨合约调用请求,包括:
当初始调度的所述第一合约实例执行到第一跨合约调用语句时,根据所述第一跨合约调用语句中的第一辅助交易的属性字段,确定所述第一辅助交易的属性;
初始调度的所述第一合约实例基于执行的所述第一跨合约调用语句前的语句,生成所述第一缓存;
向所述跨合约调度器发送携带有所述第一缓存以及所述第一辅助交易的属性的第一跨合约调用请求;
当所述跨合约调度器接收到所述第一跨合约调用请求时,根据所述第一跨合约调用语句生成所述第一辅助交易;
所述跨合约调度器将所述第一缓存存储至所述交易整体缓存中第一合约实例标识对应的缓存集。
4.根据权利要求2所述的方法,其特征在于,所述若所述第一辅助交易属性不同于所述待处理交易的属性,则所述跨合约调度器根据所述第一跨合约调用请求调度第二合约实例,逐条执行所述第一辅助交易对应的语句,包括:
所述跨合约调度器根据所述第一辅助交易,建立所述任务的第一子任务;
若所述第一辅助交易属性不同于所述待处理交易的属性,则基于所述第一子任务使用所述任务调度器,根据所述第一辅助交易的属性,调度所述第二合约实例逐条执行所述所述第一辅助交易对应的语句,其中,所述第二合约实例来源于所述第一合约虚拟机引擎或第二合约虚拟机引擎,所述第一合约虚拟机引擎不同于所述第二合约虚拟机引擎。
5.根据权利要求1所述的方法,其特征在于,所述当所述第二合约实例执行到第二跨合约调用语句时,向所述跨合约调度器发送携带有所述第二合约实例执行语句所对应的第二缓存,以及所述第二辅助交易的属性的第二跨合约调用请求,包括:
当所述第二合约实例执行到第二跨合约调用语句时,根据所述第二跨合约调用语句中的第二辅助交易的属性字段,确定所述第二辅助交易的属性;
所述第二合约实例基于执行的所述第二跨合约调用语句前的语句,生成所述第二缓存;
向所述跨合约调度器发送携带有所述第二缓存以及所述第二辅助交易的属性的第二跨合约调用请求;
当所述跨合约调度器接收到所述第二跨合约调用请求时,根据所述第二跨合约调用语句生成所述第二辅助交易;
所述跨合约调度器将所述第二缓存存储至所述交易整体缓存中第二合约实例标识对应的缓存集。
6.根据权利要求2所述的方法,其特征在于,所述若所述第二辅助交易属性与所述待处理交易的属性相同,则所述跨合约调度器根据所述第二跨合约调用请求重新调度第一合约实例,并将所述第一缓存共享至重新调度的所述第一合约实例,包括:
所述跨合约调度器根据所述第二辅助交易,建立所述任务的第二子任务;
若所述第二辅助交易属性与所述待处理交易的属性相同,则基于所述第二子任务使用所述任务调度器,根据所述第二辅助交易的属性,重新调度所述第一合约实例;
所述跨合约调度器将所述第一缓存共享至重新调度的所述第一合约实例,以使重新调度所述第一合约实例逐条执行所述所述第一辅助交易对应的语句。
7.根据权利要求1所述的方法,其特征在于,所述当所述第二辅助交易对应的全部语句执行完毕时,将所述第二辅助交易的执行结果返回至所述第二合约实例,包括:
当重新调度所述第一合约实例执行完毕所述第二辅助交易对应的全部语句时,向所述跨合约调度器返回所述第二辅助交易的执行结果,以及执行所述全部语句对应的第一全部缓存;
所述跨合约调度器将接收到的所述第一全部缓存存储至所述交易整体缓存中第一合约实例标识对应的缓存集;
所述跨合约调度器将接收到的所述第二辅助交易的执行结果发送至所述第二合约实例,以使所述第二合约实例基于所述执行结果,执行所述第二跨合约调用语句后的语句。
8.根据权利要求7所述的方法,其特征在于,所述当所述第一辅助交易对应的全部语句执行完毕时,将所述第一辅助交易的执行结果返回至初始调度的所述第一合约实例,以使初始调度的所述第一合约实例基于所述第一辅助交易的执行结果,执行所述第一跨合约调用语句后的语句,包括:
当所述第二合约实例执行完毕所述第一辅助交易对应的全部语句时,向所述跨合约调度器返回所述第一辅助交易的执行结果,以及执行所述全部语句对应的第二全部缓存;
所述跨合约调度器将接收到的所述第二全部缓存存储至所述交易整体缓存中第二合约实例标识对应的缓存集;
所述跨合约调度器将接收到的所述第一辅助交易的执行结果发送至初始调度的所述第一合约实例,以使初始调度的所述第一合约实例基于所述执行结果,执行所述第一跨合约调用语句后的语句。
9.根据权利要求8所述的方法,其特征在于,所述当所述待处理交易对应的全部语句执行完毕时,将所述待处理交易的执行结果返回至所述跨合约调度器,包括:
当初始调度的所述第一合约实例执行完毕所述待处理交易对应的全部语句时,向所述跨合约调度器返回所述待处理交易的执行结果,以及执行所述全部语句对应的第三全部缓存;
所述跨合约调度器将接收到的所述第三全部缓存存储至交易整体缓存中所述第一合约实例标识对应的缓存集;
所述跨合约调度器将所述待处理交易的执行结果,以及将所述交易整体缓存中的所述第一合约标识对应的所述第一缓存、第一全部缓存和所述第三全部缓存,以及所述第二合约标识对应的第二缓存和第二全部缓存存储至区块链的数据库中。
10.根据权利要求9所述的方法,其特征在于,所述跨合约调度器将所述待处理交易的执行结果,以及将所述交易整体缓存中的所述第一合约标识对应的所述第一缓存、第一全部缓存和所述第三全部缓存,以及所述第二合约标识对应的第二缓存和第二全部缓存存储至区块链的数据库中,包括:
所述跨合约调度器将所述待处理交易的执行结果,以及将所述交易整体缓存中的所述第一合约标识对应的所述第一缓存、第一全部缓存和所述第三全部缓存,以及所述第二合约标识对应的第二缓存和第二全部缓存返回至所述区块链中;
分别对所述第一缓存、第一全部缓存、所述第三全部缓存、第二缓存和第二全部缓存进行遍历,若存在冲突缓存,则对所述冲突缓存进行更正处理,以得到更正缓存并存储至所述数据库。
11.根据权利要求10所述的方法,其特征在于,所述若存在冲突缓存,则对所述冲突缓存进行更正处理,以得到更正缓存并存储至所述数据库,包括:
将所述冲突缓存对应的交易重新发送至所述跨合约调度器,以使所述跨合约调度器接收到所述待更正交易,建立所述待更正交易对应的更正任务;
基于所述更正任务使用所述任务调度器,根据所述待更正交易的属性,调度合约实例逐条执行所述待更正交易对应的语句;
当所述合约实例执行完毕所述待更正交易对应的全部语句,将所述待更正交易的执行结果以及执行所述待更正交易对应的全部语句的更正缓存存储至所述数据库,并删除所述冲突缓存以及所述冲突缓存对应的执行结果。
12.根据权利要求9所述的方法,其特征在于,所述所述跨合约调度器将所述待处理交易的执行结果,以及将所述交易整体缓存中的所述第一合约标识对应的所述第一缓存、第一全部缓存和所述第三全部缓存,以及所述第二合约标识对应的第二缓存和第二全部缓存存储至区块链的数据库中,包括:
所述跨合约调度器将所述待处理交易的执行结果,以及将所述交易整体缓存中的所述第一合约标识对应的所述第一缓存、第一全部缓存和所述第三全部缓存,以及所述第二合约标识对应的第二缓存和第二全部缓存返回至所述区块链中;
分别对所述第一缓存、第一全部缓存、所述第三全部缓存、第二缓存和第二全部缓存进行遍历,若不存在冲突缓存,则将所述待处理交易的执行结果以及将所述交易整体缓存中的所述第一合约标识对应的所述第一缓存、第一全部缓存和所述第三全部缓存,以及所述第二合约标识对应的第二缓存和第二全部缓存写入区块链缓存快照,以使所述区块链缓存快照将写入的全部缓存以区块为单位更新到所述数据库中。
13.一种区块链跨合约调用装置,其特征在于,包括:
获取单元,用于当跨合约调度器接收到待处理交易时,根据所述待处理交易的属性,初始调度第一合约实例逐条执行所述待处理交易对应的语句;
发送单元,用于当初始调度的所述第一合约实例执行到第一跨合约调用语句时,向所述跨合约调度器发送携带有所述第一合约实例执行语句所对应的第一缓存,以及所述第一辅助交易的属性的第一跨合约调用请求,以使所述跨合约调度器根据所述第一跨合约调用语句生成第一辅助交易,并存储所述第一缓存至交易整体缓存;
处理单元,用于若所述第一辅助交易属性不同于所述待处理交易的属性,则所述跨合约调度器根据所述第一跨合约调用请求调度第二合约实例,逐条执行所述第一辅助交易对应的语句,其中,所述第二合约实例不同于所述第一合约实例;
所述发送单元,还用于当所述第二合约实例执行到第二跨合约调用语句时,向所述跨合约调度器发送携带有所述第二合约实例执行语句所对应的第二缓存,以及所述第二辅助交易的属性的第二跨合约调用请求,以使所述跨合约调度器根据所述第二跨合约调用语句生成第二辅助交易,并存储所述第二缓存至交易整体缓存;
所述处理单元,还用于若所述第二辅助交易属性与所述待处理交易的属性相同,则所述跨合约调度器根据所述第二跨合约调用请求重新调度第一合约实例,并将所述第一缓存共享至重新调度的所述第一合约实例,以使重新调度的所述第一合约实例基于所述第一缓存,逐条执行所述第二辅助交易对应的语句;
所述处理单元,还用于当所述第二辅助交易对应的全部语句执行完毕时,将所述第二辅助交易的执行结果返回至所述第二合约实例,以使所述第二合约实例基于所述第二辅助交易的执行结果,执行所述第二跨合约调用语句后的语句;
所述处理单元,还用于当所述第一辅助交易对应的全部语句执行完毕时,将所述第一辅助交易的执行结果返回至初始调度的所述第一合约实例,以使初始调度的所述第一合约实例基于所述第一辅助交易的执行结果,执行所述第一跨合约调用语句后的语句;
所述处理单元,还用于当所述待处理交易对应的全部语句执行完毕时,将所述待处理交易的执行结果返回至所述跨合约调度器,以使所述跨合约调度器将所述待处理交易的执行结果,以及所述交易整体缓存中的全部缓存存储至数据库中。
14.一种计算机设备,包括存储器、处理器以及总线系统,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述的方法的步骤;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
16.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
CN202211137224.8A 2022-09-19 2022-09-19 一种区块链跨合约调用方法、装置、设备及存储介质 Pending CN117764728A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211137224.8A CN117764728A (zh) 2022-09-19 2022-09-19 一种区块链跨合约调用方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211137224.8A CN117764728A (zh) 2022-09-19 2022-09-19 一种区块链跨合约调用方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117764728A true CN117764728A (zh) 2024-03-26

Family

ID=90316670

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211137224.8A Pending CN117764728A (zh) 2022-09-19 2022-09-19 一种区块链跨合约调用方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117764728A (zh)

Similar Documents

Publication Publication Date Title
EP3559874B1 (en) Event-driven blockchain workflow processing
CN109472572B (zh) 基于区块链主链加并行多子链的合约系统
US20190354518A1 (en) Chain mesh network for decentralized transaction systems
CN113094396B (zh) 基于节点内存的数据处理方法、装置、设备以及介质
KR102254809B1 (ko) 블록체인에 기반한, 자원 공유에 따른 보상 제공하는 분산형 컴퓨팅 자원 공유 시스템 및 컴퓨팅 장치
CN111213340A (zh) 选择用于密码功能的证明委托并使其安全
CN111309745B (zh) 虚拟资源处理方法、装置、电子设备及存储介质
CN112685391B (zh) 一种服务数据迁移方法、装置、计算机设备和存储介质
CN110597922A (zh) 数据处理方法、装置、终端及存储介质
CN113568981A (zh) 一种交易数据处理方法、装置、设备以及介质
CN115712660B (zh) 数据存储方法、装置、服务器及存储介质
CN113194143A (zh) 一种区块链账户的创建方法、装置及电子设备
CN113034137A (zh) 基于区块链的数据处理方法、装置及相关设备
WO2023207529A1 (zh) 数据处理方法、装置及设备、介质、产品
CN112669160B (zh) 数据处理方法、装置、电子设备及存储介质
CN113159935B (zh) 基于区块链的待办业务处理方法及装置
CN117764728A (zh) 一种区块链跨合约调用方法、装置、设备及存储介质
CN113032036B (zh) 业务数据处理方法、装置、系统、计算机设备和存储介质
Chihoub et al. 10 ConsistencyManagement in Cloud Storage Systems
KR20200048708A (ko) 블록체인에 기반한, 분산형 컴퓨팅 자원 공유 시스템 상에서의 보안 통신 제공 방법
CN112231415B (zh) 区块链网络的数据同步方法、系统、电子设备及可读介质
CN111737729A (zh) 基于业务数据区块链的评价数据存储方法及系统
CN112579343A (zh) 区块链节点数据的恢复方法及装置
CN111695132A (zh) 基于业务数据区块链的投票数据存储方法及系统
US20230004955A1 (en) Peer-to-peer selectable digital money system

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