CN116680209A - 基于wasm的多智能合约实例管理方法 - Google Patents
基于wasm的多智能合约实例管理方法 Download PDFInfo
- Publication number
- CN116680209A CN116680209A CN202310725761.2A CN202310725761A CN116680209A CN 116680209 A CN116680209 A CN 116680209A CN 202310725761 A CN202310725761 A CN 202310725761A CN 116680209 A CN116680209 A CN 116680209A
- Authority
- CN
- China
- Prior art keywords
- contract
- instance
- intelligent
- wasm
- intelligent contract
- 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
- 238000007726 management method Methods 0.000 title abstract description 26
- 230000006870 function Effects 0.000 claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims description 51
- 230000008569 process Effects 0.000 claims description 15
- 238000012795 verification Methods 0.000 claims description 12
- 230000003993 interaction Effects 0.000 claims description 11
- 238000012546 transfer Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 230000000875 corresponding effect Effects 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 2
- 238000004378 air conditioning Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000006854 communication Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于WASM的多智能合约实例管理方法,在区块链中设置智能合约引擎作为WASM智能合约和区块链节点的中间节点,智能合约引擎包括智能合约管理模块、合约实例模块和智能合约驱动,在合约部署时智能合约管理模块负责初始化实例化工具并连同合约源码一起发送给智能合约驱动,智能合约驱动生成N个合约实例,将N个合约实例投入合约实例缓冲模块中的合约实例缓冲池;在合约调用时智能合约驱动从所调用合约的合约实例缓冲池中随机获取一个空闲的合约实例并分配内存空间,并通过外部函数与WASM智能合约进行交互得到合约处理结果,然后回收内存空间,等待下一次调用。本发明通过设置多个合约实例用于后续的合约调用,提高交易执行的效率。
Description
技术领域
本发明属于区块链技术领域,更为具体地讲,涉及一种基于WASM的多智能合约实例管理方法。
背景技术
区块链技术是一种去中心化的分布式数据库技术,通过多个节点之间的协作和验证来维护数据的一致性和安全性。区块链技术和智能合约是密不可分的两个概念,区块链技术是实现去中心化、不可篡改、安全可靠的分布式数据库技术,而智能合约是在区块链上执行的可编程的自动化合约,能够实现自动化的交易和协议执行。智能合约是一种在区块链上运行的计算机程序,可以自动化地执行一系列操作和判断,并在满足一定条件时触发相应的行为。智能合约可以实现去中心化的交易、协议执行、信息共享等功能。它的执行结果是公开透明的,任何参与者都可以查看和验证。智能合约可以在区块链上自动执行,不需要第三方的介入和监督,从而可以实现更加高效、透明、公正的交易和协议执行。
现有的区块链智能合约大多采用基于Docker容器的机制,它可以实现动态部署和管理、具有一定隔离性的智能合约运行环境。具体来说,每个智能合约被打包成一个docker镜像,这个镜像包含了所有智能合约需要运行的代码和依赖项,在部署时由docker引擎加载和运行。但docker容器机制相对占用资源较高,并且存在节点和容器的进程间通信过程,执行效率相对较低。基于WASM(WebAssembly)引擎驱动的智能合约相比传统智能合约引擎,拥有资源占用低、隔离性高、执行效率高等优点。为了提高基于WASM智能合约的合约调用执行的性能,需要对WASM合约实例进行动态的缓存,另外考虑到资源占用和安全性上需要对WASM合约的虚拟机进行内存的分配管理。然而现有技术未能完全满足以上需求,需要进一步改进。
智能合约的运行方式可以基于不同的技术架构实现。常见的智能合约运行方式有两种:基于虚拟机的智能合约和基于容器的智能合约。基于虚拟机的智能合约使用虚拟机技术,在合约执行时,通过虚拟机运行智能合约的字节码。当合约需要执行时,虚拟机将字节码加载到内存中,并执行字节码。基于容器的智能合约采用容器技术,将智能合约运行在容器中。在合约执行时,容器会启动一个独立的运行环境,并在该环境中运行智能合约。智能合约的合约实例是指部署在区块链上的、可执行的合约代码。当调用该智能合约时,需要在区块链上创建一个合约实例,该实例包含合约代码、状态数据和执行环境。但已有的智能合约运行方式中均采用单合约实例的模式进行合约调用,即在处理合约调用请求时生成一个合约实例用于数据交互,这种模式在高并发调用时因需要生成大量合约实例而影响合约调用性能。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于WASM的多智能合约实例管理方法,通过设置智能合约引擎,在部署合约时生成多个合约实例并对实例进行内存分配与管理,用于后续的合约调用,提高交易执行的效率。
为了实现上述发明目的,本发明基于WASM的多智能合约实例管理方法包括以下步骤:
S1:在区块链中设置智能合约引擎作为WASM智能合约和区块链节点的中间节点,智能合约引擎包括智能合约管理模块、合约实例模块和智能合约驱动,其中:
智能合约管理模块用于对WASM智能合约的部署请求和调用请求进行安全验证,在合约部署时获取合约源码并初始化合约实例化需要的工具;
智能合约驱动用于执行合约部署以及处理合约调用;
合约实例模块设置有若干个合约实例缓冲池,用于存储WASM智能合约对应的合约实例;
S2:进行合约部署,具体方法为:
S2.1:用户根据实际情况编写WASM智能合约,其中包括接收合约调用请求的入口函数Invoke,在编写完毕后保存为合约包,然后生成WASM智能合约部署请求并发送至智能合约引擎,请求参数包括合约包路径、合约名;
S2.2:智能合约引擎中的智能合约管理模块接收合约部署请求,对该合约部署请求进行安全验证,安全验证通过后则根据合约包路径读取合约源码,然后对合约实例化需要的工具进行初始化,即生成wasm存储组件、wasm模块组件以及Wasi环境组件,并将合约源码和实例化工具发送给智能合约驱动;
S2.3:智能合约驱动在接收到合约源码后,将合约源码放至区块链上,完成WASM智能合约的部署;
S2.4:智能合约驱动在接收到合约源码和实例化工具后,生成N个合约实例,在合约实例缓冲模块中新建一个合约实例缓冲池,将N个合约实例投入该合约实例缓冲池中;合约实例的生成方法为:
首先创建WASM智能合约在与合约实例进行数据交互时使用的外部函数,包括向合约实例查询数据的GetState函数以及向合约实例插入数据的PutState函数,在外部函数中,合约实例以读取实例内存的固定地址的方式获取WASM智能合约传递的数据,在向WASM智能合约传递数据时外部函数会获取数据在内存空间的地址,并将地址传递给WASM智能合约;然后将外部函数注册到wasm模块组件内,然后调用实例化方法生成N个合约实例,N的值根据实际需要确定,其取值代表了该WASM智能合约的最大并发调用数量;在生成合约实例时对每个合约实例的内存进行设置,指定实例内存的地址和大小;
S3:采用如下方法进行合约调用:
S3.1:当区块链节点需要调用WASM智能合约时,生成合约调用请求并发送给智能合约引擎,合约调用请求包括合约名、合约方法和参数;
S3.2:智能合约引擎中的智能合约管理模块接收合约调用请求并进行身份验证,通过后从合约调用请求中解析得到合约名、合约方法和参数发送至智能合约驱动;智能合约驱动根据合约名从对应的合约实例缓冲池中随机获取一个空闲的合约实例;
S3.3:智能合约驱动在内存空间中根据合约实例的内存大小分配一段空白空间作为合约实例的内存空间,通过memory.Data()方法将所获取合约实例内存空间转为字符切片格式,并向其中写入合约调用请求;
S3.4:智能合约驱动导出合约实例的Invoke函数,将合约调用请求在合约实例内存空间中的起始地址作为Invoke函数的传入参数;WASM智能合约通过Invoke函数传入的起始地址直接对合约实例内存空间进行读取获取合约调用请求,解析请求中的合约方法和对应参数,并跳转到对应的合约方法中处理合约请求;
在WASM智能合约处理合约请求过程中,合约实例和WASM智能合约通过外部函数进行数据交互,具体方法为:
WASM智能合约通过合约部署时注册的外部函数获取合约实例提供的业务操作;当WASM智能合约需要调用外部函数PutState向合约实例传递数据时,获取该数据的key-value键值对,然后将key和value的地址传递至合约实例;合约实例通过外部函数PutState从本次内存空间中读取key和value的真实数据,并以键值对形式存储于状态数据库中;如果此交互过程无误则节点向WASM智能合约返回数据传递成功信息,否则返回数据传递失败信息;在WASM智能合约调用外部函数GetState时,合约实例从本次内存空间中读取key值,随后以key值作为检索项查询节点状态数据库,若查询无误则将获得的value值返回给WASM智能合约,否则返回数据查询失败信息;
S3.5:WASM智能合约在处理完成合约请求后,将合约处理结果的实例内存地址作为Invoke函数的返回值传递给智能合约驱动,节点端根据地址读取实例内存获取获得本次调用的合约处理结果,然后通过智能合约管理模块反馈至发起本次调用的区块链节点;
S3.6:智能合约驱动将为合约实例分配的内存空间进行回收,通过调用instance.Close()来释放合约实例所占用的资源,包括内存空间和句柄。然后将使用的合约实例放回对应的合约实例缓冲池,等待下一次调用。
本发明基于WASM的多智能合约实例管理方法,在区块链中设置智能合约引擎作为WASM智能合约和区块链节点的中间节点,智能合约引擎包括智能合约管理模块、合约实例模块和智能合约驱动,在合约部署时智能合约管理模块负责初始化实例化工具并连同合约源码一起发送给智能合约驱动,智能合约驱动生成N个合约实例,在合约实例缓冲模块中新建一个合约实例缓冲池,将N个合约实例投入该合约实例缓冲池中;在合约调用时智能合约驱动从所调用合约的合约实例缓冲池中随机获取一个空闲的合约实例并分配内存空间,并通过外部函数与WASM智能合约进行交互得到合约处理结果,然后回收内存空间,等待下一次调用。
本发明具有以下有益效果:
1)本发明设置了合约实例缓冲池,合约实例缓冲池与智能合约属于一对一关系,每个合约实例缓冲池中有多个可用的智能合约实例,处理合约调用请求时从对应的实例缓冲池中随机获取一个智能合约实例进行调用,从而更好地支持调用并发;
2)本发明支持对合约实例进行内存分配与回收:在调用合约实例时分配大小合适的内存空间,在调用结束后对其进行内存回收,清空调用过程中在实例内存中写入的数据防止后续调用时产生数据覆写,减少内存泄露,并在清空后将实例放回缓冲池等待再次调用,从而减少内存资源的浪费;
3)本发明支持合约实例通过写入内存的方式传递数据。在合约实例化时会定义WASM智能合约向合约实例传递数据的外部函数,合约调用过程中,WASM合约通过调用外部函数向合约实例传递数据的内存地址,合约实例以读取合约实例内存的方式获取对应地址上的数据并操作。
附图说明
图1是本发明基于WASM的多智能合约实例管理方法的具体实施方式流程图;
图2是本发明中智能合约引擎的结构图;
图3是本发明中WASM智能合约部署的流程图;
图4是本发明中合约实例生成的流程图;
图5是本发明中智能合约调用的流程图;
图6是本发明中合约实例和WASM智能合约数据交互示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
实施例
图1是本发明基于WASM的多智能合约实例管理方法的具体实施方式流程图。如图1所示,本发明基于WASM的多智能合约实例管理方法的具体步骤包括:
S101:配置智能合约引擎:
在区块链中设置智能合约引擎作为WASM智能合约和其他区块链节点的中间节点。图2是本发明中智能合约引擎的结构图。如图2所示,本发明中智能合约引擎包括智能合约管理模块、合约实例缓冲模块和智能合约驱动,其中:
智能合约管理模块用于对WASM智能合约的部署请求和调用请求进行安全验证,在合约部署时获取合约源码并初始化合约实例化需要的工具。
智能合约驱动用于执行合约部署以及处理合约调用。
合约实例模块设置有若干个合约实例缓冲池,用于存储WASM智能合约对应的合约实例。
S102:WASM智能合约部署:
与常用合约部署不同,本发明中为了提供合约并行调用,在合约部署时还需要生成合约实例。图3是本发明中WASM智能合约部署的流程图。如图3所示,本发明中合约部署的具体步骤包括:
S201:发送合约部署请求:
用户根据实际情况编写WASM智能合约,其中包括接收合约调用请求的入口函数Invoke,在编写完毕后保存为合约包,然后生成WASM智能合约部署请求并发送至智能合约引擎,请求参数包括合约包路径、合约名。
S302:导入合约源码并初始化实例化工具:
智能合约引擎中的智能合约管理模块接收合约部署请求,对该合约部署请求进行安全验证,安全验证通过后则根据合约包路径读取合约源码,然后对合约实例化需要的工具进行初始化,即生成wasm存储组件、wasm模块组件以及Wasi环境组件,并将合约源码和实例化工具发送给智能合约驱动。wasm存储组件、wasm模块组件和Wasi环境组件是后续生成合约实例的关键组件,在代码执行期间多次重复使用。
S303:WASM智能合约上链:
智能合约驱动在接收到合约源码后,将合约源码放至区块链上,完成WASM智能合约的部署。
S304:生成并保存合约实例:
智能合约驱动在接收到合约源码和实例化工具后,生成N个合约实例,在合约实例缓冲模块中新建一个合约实例缓冲池,将N个合约实例投入该合约实例缓冲池中。图4是本发明中合约实例生成的流程图。如图4所示,合约实例的生成方法为:
首先创建WASM智能合约在与合约实例进行数据交互时使用的外部函数,包括向合约实例查询数据的GetState函数以及向合约实例插入数据的PutState函数,在外部函数中,合约实例以读取实例内存的固定地址的方式获取WASM智能合约传递的数据,在向WASM智能合约传递数据时外部函数会获取数据在内存空间的地址,并将地址传递给WASM智能合约。然后将外部函数注册到wasm模块组件内,然后调用实例化方法生成N个合约实例,N的值根据实际需要确定,其取值代表了该WASM智能合约的最大并发调用数量。在生成合约实例时对每个合约实例的内存进行设置,指定实例内存的地址和大小。本实施例中通过instance.Exports.GetMemory(“memory”)方法导出实例内存,实例内存的最小值为一页64KB,通过memory.Grow(n)方法指定内存大小为n页,从而设置合约实例的内存大小。
S103:WASM智能合约调用:
本发明在处理合约调用请求时,采用一种并发管理方式对合约实例缓冲池的合约实例进行调用,以提高并发调用的性能。图5是本发明中智能合约调用的流程图。如图5所示,本发明中智能合约调用的具体方法为:
S501:发送合约调用请求:
当区块链节点需要调用WASM智能合约时,生成合约调用请求并发送给智能合约引擎,合约调用请求包括合约名、合约方法和参数。
S502:分配合约实例:
智能合约引擎中的智能合约管理模块接收合约调用请求并进行身份验证,通过后从合约调用请求中解析得到合约名、合约方法和参数发送至智能合约驱动。智能合约驱动根据合约名从对应的合约实例缓冲池中随机获取一个空闲的合约实例。由于本发明中多个合约实例间互不干扰,因此在这种机制下可以并发处理调用请求。
S503:分配内存:
智能合约驱动在内存空间中根据合约实例的内存大小分配一段空白空间作为合约实例的内存空间,通过memory.Data()方法将所获取合约实例内存空间转为字符切片格式,并向其中写入合约调用请求。
S504:基于Invoke函数传递合约调用请求:
智能合约驱动导出合约实例的Invoke函数,将合约调用请求在合约实例内存空间中的起始地址作为Invoke函数的传入参数。WASM智能合约通过Invoke函数传入的起始地址直接对合约实例内存空间进行读取获取合约调用请求,解析请求中的合约方法和对应参数,并跳转到对应的合约方法中处理合约请求。根据以上方法可知,本发明通过Invoke函数即可将合约调用请求发送到对应的WASM智合约。
在WASM智能合约处理合约请求过程中,合约实例和WASM智能合约通过外部函数进行数据交互。图6是本发明中合约实例和WASM智能合约数据交互示意图。如图6所示,本发明中合约实例和WASM智能合约数据交互的具体方法为:
WASM智能合约通过合约部署时注册的外部函数获取合约实例提供的业务操作。当WASM智能合约需要调用外部函数PutState向合约实例传递数据时,获取该数据的key-value键值对,然后将key和value的地址传递至合约实例。合约实例通过外部函数PutState从本次内存空间中读取key和value的真实数据,并以键值对形式存储于状态数据库中。如果此交互过程无误则节点向WASM智能合约返回数据传递成功信息,否则返回数据传递失败信息。在WASM智能合约调用外部函数GetState时,合约实例从本次内存空间中读取key值,随后以key值作为检索项查询节点状态数据库,若查询无误则将获得的value值返回给WASM智能合约,否则返回数据查询失败信息。
可见,在本发明中,合约实例的返回信息依旧以写入实例内存的方式传送至WASM智能合约,WASM智能合约获得的返回值实际上是返回信息在实例内存中的起始地址,并通过该地址从内存内读取真实数据。
S505:反馈合约处理结果:
WASM智能合约在处理完成合约请求后,将合约处理结果的实例内存地址作为Invoke函数的返回值传递给智能合约驱动,节点端根据地址读取实例内存获取获得本次调用的合约处理结果,然后通过智能合约管理模块反馈至发起本次调用的区块链节点。
S506:释放实例内存:
智能合约驱动将为合约实例分配的内存空间进行回收,通过调用instance.Close()来释放合约实例所占用的资源,包括内存空间和句柄。然后将使用的合约实例放回对应的合约实例缓冲池,等待下一次调用。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (1)
1.一种基于WASM的多智能合约实例管理,其特征在于,包括以下步骤:
S1:在区块链中设置智能合约引擎作为WASM智能合约和区块链节点的中间节点,智能合约引擎包括智能合约管理模块、合约实例模块和智能合约驱动,其中:
智能合约管理模块用于对WASM智能合约的部署请求和调用请求进行安全验证,在合约部署时获取合约源码并初始化合约实例化需要的工具;
智能合约驱动用于执行合约部署以及处理合约调用;
合约实例模块设置有若干个合约实例缓冲池,用于存储WASM智能合约对应的合约实例;
S2:进行合约部署,具体方法为:
S2.1:用户根据实际情况编写WASM智能合约,其中包括接收合约调用请求的入口函数Invoke,在编写完毕后保存为合约包,然后生成WASM智能合约部署请求并发送至智能合约引擎,请求参数包括合约包路径、合约名;
S2.2:智能合约引擎中的智能合约管理模块接收合约部署请求,对该合约部署请求进行安全验证,安全验证通过后则根据合约包路径读取合约源码,然后对合约实例化需要的工具进行初始化,即生成wasm存储组件、wasm模块组件以及Wasi环境组件,并将合约源码和实例化工具发送给智能合约驱动;
S2.3:智能合约驱动在接收到合约源码后,将合约源码放至区块链上,完成WASM智能合约的部署;
S2.4:智能合约驱动在接收到合约源码和实例化工具后,生成N个合约实例,在合约实例缓冲模块中新建一个合约实例缓冲池,将N个合约实例投入该合约实例缓冲池中;合约实例的生成方法为:
首先创建WASM智能合约在与合约实例进行数据交互时使用的外部函数,包括向合约实例查询数据的GetState函数以及向合约实例插入数据的PutState函数,在外部函数中,合约实例以读取实例内存的固定地址的方式获取WASM智能合约传递的数据,在向WASM智能合约传递数据时外部函数会获取数据在内存空间的地址,并将地址传递给WASM智能合约;然后将外部函数注册到wasm模块组件内,然后调用实例化方法生成N个合约实例,N的值根据实际需要确定,其取值代表了该WASM智能合约的最大并发调用数量;在生成合约实例时对每个合约实例的内存进行设置,指定实例内存的地址和大小;
S3:采用如下方法进行合约调用:
S3.1:当区块链节点需要调用WASM智能合约时,生成合约调用请求并发送给智能合约引擎,合约调用请求包括合约名、合约方法和参数;
S3.2:智能合约引擎中的智能合约管理模块接收合约调用请求并进行身份验证,通过后从合约调用请求中解析得到合约名、合约方法和参数发送至智能合约驱动;智能合约驱动根据合约名从对应的合约实例缓冲池中随机获取一个空闲的合约实例;
S3.3:智能合约驱动在内存空间中根据合约实例的内存大小分配一段空白空间作为合约实例的内存空间,通过memory.Data()方法将所获取合约实例内存空间转为字符切片格式,并向其中写入合约调用请求;
S3.4:智能合约驱动导出合约实例的Invoke函数,将合约调用请求在合约实例内存空间中的起始地址作为Invoke函数的传入参数;WASM智能合约通过Invoke函数传入的起始地址直接对合约实例内存空间进行读取获取合约调用请求,解析请求中的合约方法和对应参数,并跳转到对应的合约方法中处理合约请求;
在WASM智能合约处理合约请求过程中,合约实例和WASM智能合约通过外部函数进行数据交互,具体方法为:
WASM智能合约通过合约部署时注册的外部函数获取合约实例提供的业务操作;当WASM智能合约需要调用外部函数PutState向合约实例传递数据时,获取该数据的key-value键值对,然后将key和value的地址传递至合约实例;合约实例通过外部函数PutState从本次内存空间中读取key和value的真实数据,并以键值对形式存储于状态数据库中;如果此交互过程无误则节点向WASM智能合约返回数据传递成功信息,否则返回数据传递失败信息;在WASM智能合约调用外部函数GetState时,合约实例从本次内存空间中读取key值,随后以key值作为检索项查询节点状态数据库,若查询无误则将获得的value值返回给WASM智能合约,否则返回数据查询失败信息;
S3.5:WASM智能合约在处理完成合约请求后,将合约处理结果的实例内存地址作为Invoke函数的返回值传递给智能合约驱动,节点端根据地址读取实例内存获取获得本次调用的合约处理结果,然后通过智能合约管理模块反馈至发起本次调用的区块链节点;
S3.6:智能合约驱动将为合约实例分配的内存空间进行回收,通过调用instance.Close()来释放合约实例所占用的资源,包括内存空间和句柄。然后将使用的合约实例放回对应的合约实例缓冲池,等待下一次调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310725761.2A CN116680209A (zh) | 2023-06-19 | 2023-06-19 | 基于wasm的多智能合约实例管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310725761.2A CN116680209A (zh) | 2023-06-19 | 2023-06-19 | 基于wasm的多智能合约实例管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116680209A true CN116680209A (zh) | 2023-09-01 |
Family
ID=87779017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310725761.2A Pending CN116680209A (zh) | 2023-06-19 | 2023-06-19 | 基于wasm的多智能合约实例管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116680209A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117593129A (zh) * | 2024-01-19 | 2024-02-23 | 腾讯科技(深圳)有限公司 | 交易的执行方法、装置、计算机可读介质及电子设备 |
-
2023
- 2023-06-19 CN CN202310725761.2A patent/CN116680209A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117593129A (zh) * | 2024-01-19 | 2024-02-23 | 腾讯科技(深圳)有限公司 | 交易的执行方法、装置、计算机可读介质及电子设备 |
CN117593129B (zh) * | 2024-01-19 | 2024-05-03 | 腾讯科技(深圳)有限公司 | 交易的执行方法、装置、计算机可读介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108062252B (zh) | 一种信息交互方法、对象管理方法及装置和系统 | |
CN102103497B (zh) | 有限状态机执行装置和方法、在应用中的建立和使用方法 | |
EP2442265A2 (en) | Method and server cluster for MapReducing FLOW services and large documents | |
JPH07281974A (ja) | ネットワーク内のコンピュータ間でデータを交換するための通信システム | |
CN101421711A (zh) | 用于资源受限设备的虚拟执行系统 | |
CN111880866B (zh) | 跨进程回调执行方法、装置、设备及存储介质 | |
CN111176791B (zh) | 一种基于多虚拟机区块链平台跨虚拟机调用方法 | |
US11321090B2 (en) | Serializing and/or deserializing programs with serializable state | |
CN110851237A (zh) | 一种面向国产平台的容器跨异构集群重构方法 | |
CN105893320B (zh) | 一种面向多核处理器的远程任务函数调用方法 | |
CN116680209A (zh) | 基于wasm的多智能合约实例管理方法 | |
CN100365583C (zh) | 组件的实现方法以及系统 | |
CN116795647A (zh) | 一种数据库异构资源管理与调度方法、装置、设备及介质 | |
CN111294293B (zh) | 一种基于用户态协议栈的网络隔离方法和装置 | |
CN115640143A (zh) | 微服务处理方法、装置、电子设备及存储介质 | |
CN108829530B (zh) | 一种图像处理方法及装置 | |
CN111324395B (zh) | 调用方法、装置和计算机可读存储介质 | |
CN117519972A (zh) | Gpu资源管理方法及装置 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
CN116204307A (zh) | 兼容不同计算框架的联邦学习方法和联邦学习系统 | |
CN112416414A (zh) | 一种基于状态机的微服务架构容器化轻量级工作流系统 | |
CN113312031B (zh) | 一种软件通信体系结构的命名服务接口 | |
CN115328679A (zh) | 异构函数库的自动化集成方法、计算设备及其系统 | |
CN115829826A (zh) | 模型存储优化方法及电子设备 | |
CN112698912B (zh) | 一种Java Card虚拟机运行环境及内存管理方法 |
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 |