CN112527464A - 基于区块链的虚拟机内存自动扩容系统和方法 - Google Patents

基于区块链的虚拟机内存自动扩容系统和方法 Download PDF

Info

Publication number
CN112527464A
CN112527464A CN202011505434.9A CN202011505434A CN112527464A CN 112527464 A CN112527464 A CN 112527464A CN 202011505434 A CN202011505434 A CN 202011505434A CN 112527464 A CN112527464 A CN 112527464A
Authority
CN
China
Prior art keywords
memory
module
virtual machine
block chain
execution
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
CN202011505434.9A
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.)
Shanghai Wanxiang Blockchain Inc
Original Assignee
Shanghai Wanxiang Blockchain Inc
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 Shanghai Wanxiang Blockchain Inc filed Critical Shanghai Wanxiang Blockchain Inc
Priority to CN202011505434.9A priority Critical patent/CN112527464A/zh
Publication of CN112527464A publication Critical patent/CN112527464A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种基于区块链的虚拟机内存自动扩容系统和方法,包括:编译器模块:对WASM二进制代码进行解析,生成内存汇编指令;执行引擎模块:执行生成的内存汇编指令;内存模块:为执行引擎模块的实例化和汇编指令的运行进行内存管理;GAS模块:通过消耗GAS,防止恶意攻击;区块链和虚拟机交互模块:接收外部参数的输入给执行引擎模块,同时将执行引擎模块的执行结果传输到区块链。本发明通过内存自动扩容可以让图灵完备语言所编写的任何类型合约的执行不用考虑内存限制,同时新的内存分配器和内存池可以让内存分配和申请性能大幅度提升,从而整体上推高了区块链的性能。

Description

基于区块链的虚拟机内存自动扩容系统和方法
技术领域
本发明涉及区块链技术领域,具体地,涉及一种基于区块链的虚拟机内存自动扩容系统和方法。
背景技术
区块链的共识需要一个确定性的环境,来执行确定性的行为。也就是说,不管节点的宿主机器是异构的,还是同构的,都需要确保在初始状态,行为操作两者一致的情况下,所有节点的输出结构也必须保证一致。为了实现这一核心要求,区块链系统需要引入虚拟机技术。
虚拟机是用来执行外部用户部署的合约交易,而外部用户部署的合约交易对与内存消耗的大小是没有办法预测的,如果按照固定内存大小来设计虚拟机的话,过大的内存初始化会造成内存的浪费和启动速度的下降,而如果初始化的内存过小的话,则会导致交易执行失败,而且是永久的失败,这是用户不可以接受的。而如果从用户侧,链外规定的方式限制交易使用内存的大小,则会导致一些类型的交易无法使用区块链,从而限制业务类型的多样性,也会增加合约编写者的心智负担。如果内存管理模块可以采用自动内存扩容方案,则上述问题都会得到完美的解决。
难点有:1)内存管理器自动扩容方案设计成适合区块链特性;2)虚拟机在并发环境下的内存申请和释放的性能问题。
专利文献CN111770022A(申请号:CN202010597674.X)公开了一种基于链路监控的扩容方法,包括:与多条链路关联的多个客户端建立通信连接,每个客户端关联于相应链路中的一个节点;获取所述客户端上传的索引订单,所述索引订单包含所述客户端所处节点的链路信息;采集所述客户端所上传索引订单中的链路信息,将所述链路信息转换成预置的数据交换结构并将所述转换后的链路信息存储在预设存储区域中;周期性调取和分析所述预设存储区域中的链路信息,以确定所述多个链路是否包括异常链路,若所述多个链路包括异常链路,对所述异常链路中所承载的服务进行扩容处理。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于区块链的虚拟机内存自动扩容系统和方法。
根据本发明提供的基于区块链的虚拟机内存自动扩容系统,包括:
编译器模块:对WASM二进制代码进行解析,生成内存汇编指令;
执行引擎模块:执行生成的内存汇编指令;
内存模块:为执行引擎模块的实例化和汇编指令的运行进行内存管理;
GAS模块:通过消耗GAS,防止恶意攻击;
区块链和虚拟机交互模块:接收外部参数的输入给执行引擎模块,同时将执行引擎模块的执行结果传输到区块链。
优选的,所述编译器模块根据WASM规范对二进制代码进行解析,获取其中的汇编指令和静态数据,然后构建WASM模块对象和节对象用以存储汇编指令和静态数据,并构建出指令码值所对应的指令对象。
优选的,所述执行引擎模块包括:构建虚拟机用以模拟实体计算机,并使用内存模块作为虚拟机的内存管理器。
优选的,所述内存模块对虚拟机的内存进行管理,包括内存申请、内存再申请、内存自动扩容、内存释放和释放后合并。
优选的,所述内存模块执行包括内存分配、内存再分配、内存释放和内存合并。
优选的,在内存模块中引入内存池模块,申请的内存先从内存池模块中获取,获取失败时再从系统申请新的内存;内存释放时,先查看内存池模块中缓存的内存是否已经达到设置的最大值,若没有达到最大值,则把要释放的内存直接放回内存池模块,否则把要释放的内存释放给系统回收。
优选的,所述内存池模块中的缓存包括:
永久缓存:缓存永久存在直至整个系统区块链节点进程退出;
暂时缓存:缓存预设时间段,若在预设时间段内没有继续使用,则自动释放缓存。
优选的,所述GAS模块执行包括指令GAS注册和指令GAS计算。
优选的,所述区块链和虚拟机交互模块执行包括宿主本地方法注册、宿主方法查询与执行。
根据本发明提供的基于区块链的虚拟机内存自动扩容方法,包括:
步骤1:对WASM二进制代码进行解析,生成内存汇编指令;
步骤2:构建虚拟机用以模拟实体计算机,并使用内存模块作为虚拟机的内存管理器;
步骤3:采用GAS机制量化虚拟机交易执行时的资源消耗,防止恶意攻击;
步骤4:虚拟机执行内存汇编指令与编译器模块构建的WASM模块对象,
步骤5:把执行结果同步到区块链,让区块链的各个模块和外部用户获取到执行结果。
与现有技术相比,本发明具有如下的有益效果:
1、本发明可以支持图灵完备语言所编写的任何合约的执行,并在异构环境下,达到操作的确定性,从而有力的支持了节点间的一致性;
2、本发明通过内存分配方案的设计可以降低开发者心智负担,开发者和用户都不用再考虑内存大小的问题;
3、本发明通过内存自动扩容可以让图灵完备语言所编写的任何类型合约的执行不用考虑内存限制,同时新的内存分配器和内存池可以让内存分配和申请性能大幅度提升,从而整体上推高了区块链的性能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明系统框架图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
如图1,根据本发明提供的一种为区块链定制的虚拟机内存自动扩展方案,包括:编译器模块、执行引擎模块、内存模块、GAS模块、区块链和虚拟机交互模块。
编译器模块对WASM二进制代码进行解析,生成内存汇编指令对象。执行引擎模块执行编译器模块生成的汇编指令对象,而内存模块为执行引擎模块的实例化和汇编指令的运行提供内存管理功能。在执行引擎模块执行时,为了防止死循环攻击,DDOS攻击等恶意行为,本发明提供了GAS模块。每一个汇编指令的运行都需要消耗数量不等的GAS,从而防止以上攻击。区块链和虚拟机交互模块接受外部参数的输入给执行引擎模块,同时帮助执行引擎模块的执行结果传输到区块链。
所述编译器模块包括二进制代码解析,汇编指令生成,静态数据读取等功能;
所述执行引擎模块包含执行方法的查询功能,汇编解释执行等功能和函数调用栈模块;本发明对每一个函数在代码层次上都抽象出了一个Frame对象与之相对应,我们称之为函数调用栈模块。Frame对象包括程序计数器,寄存器数组,输入参数数组,函数代码等字段。在执行引擎执行到不同的函数时,会生成对应数据的Frame对象,用Frame对象来替代一个个函数。汇编解释执行主要通过执行引擎中的Execute函数来达成,这个函数内部有一个for循环,用于不停的读取汇编指令,根据汇编指令会生成Frame对象,然后调用Frame对象中的函数代码字段中的汇编指令代码,然后根据指令含义执行相应的操作,然后更新移动程序计数器数值让其指向下一条指令。
所述内存模块包括内存分配,内存再分配,内存释放,内存合并等功能和内存池模块;
所述GAS模块包含指令GAS注册,指令GAS计算等功能。
所述区块链和虚拟机交互模块包括宿主本地方法注册,宿主方法查询与执行等功能。
所述编译器模块根据WASM规范对二进制代码进行解析,获取其中的汇编指令和静态数据,然后构建WASM模块对象和节对象用以存储这些数据,并构建出指令码值所对应的指令对象。
所述执行引擎模块首先构建虚拟机对象用以模拟实体计算机。构建的虚拟机需要利用下述的内存模块作为虚拟机的内存管理器,同时为了防止恶意攻击,我们采用GAS机制来量化虚拟机交易执行时的资源消耗。虚拟机执行的指令来源与编译器模块构建的WASM模块对象,同时利用区块链和虚拟机交互模块把执行引擎模块的执行结果给同步到区块链,从而让区块链的各个模块和外部用户获取到执行结果。
所述内存模块主要负责虚拟机的内存管理功能。内存管理主要包括内存的申请,内存的再申请,内存的自动扩容,内存的释放和释放后的合并。同时为了保证内存管理的高性能,这里引入了内存池模块,申请的内存首先从内存池中去获取,获取失败时再从系统申请新的内存。而内存释放时则先查看内存池中缓存的内存是否已经达到设置的最大值,如果没有达到最大值,则把要释放的内存直接放回内存池,否则会把要释放的内存释放给系统回收掉。而为了进一步提供内存分配效率,同时支持多线程并发请求。我们把内存池中的缓存分为两种类型的缓存,一种是永久缓存,也就说除非整个系统区块链节点进程退出,这个缓存就会永久存在,不会被删除。另一种缓存则是缓存两个GC周期,如果一直没有继续使用的话,会自动释放掉。具体代码如下:
Figure BDA0002844771780000051
因为需要考虑多线程安全问题,所以我们使用缓存channel来做永久缓存,在性能也许没有sync.pool好一点,因为sync.pool会在每个P上进行缓存,降低了每个G之间的数据竞争,在很多情况下,不需要加锁,但是就像上面所说的一样,sync.pool缓存的数据在两个GC周期会释放掉缓存,所以我们选择channel作为我们的永久缓存。而在临时的,超过永久缓存数量的情况下,用sync.pool来缓存内存对象。
内存池对象是一个单例模式,定义为一个全局变量。初始化时会生成几个(默认:3)内存对象放入永久缓存channel中。
Figure BDA0002844771780000052
从缓存池中获取缓存时,首先从永久缓存channel中获取,如果获取不到,则从sync.pool中获取,如果sync.pool中没有缓存对象,则会新生成对象,并返回。
Figure BDA0002844771780000053
Figure BDA0002844771780000061
把对象放回内存池中时,也是首先尝试把对象返回永久channel中,如果永久channel已经满了,则会放回sync.pool中。都是利用了golang的select机制。
Figure BDA0002844771780000062
怎么样申请新的内存,并合并老内存和新内存。并且保证内存合并后原来已经在用的内存地址还是依然有效的,也就是内存重定位问题。这里采用了一种非常简洁有效的解决方案。新申请的内存直接拼接在老内存的最后面,这样内存地址就不用再重定位了,其实是golang运行时帮我们进行了内存重定位。golang语言实现:`oldAddr=append(oldAddr,newAddr)`。
而为了定制内存分配器以适应区块链,我们必须实现内存分配(malloc,calloc),内存释放(free),内存再分配(realloc)四个接口方法。
malloc,calloc:在线性内存上直接分配内存,分配的内存大小等于sizeof(mem_control_block)个字节+申请内存大小(offset),这个sizeof(mem_control_block)个字节是用于记录可以申请空间大小,返回线性内存中申请内存数据的索引当作其内存地址。标记当前内存的使用量(MallocedSize==MallocedSize+sizeof(mem_control_block)+offset)。下次分配内存时,直接从最大使用内存MallocedSize+sizeof(mem_control_block)的方式当做内存地址返回给调用者。
伪代码:
var memory=[128]byte{}
var max-index=4//已经分配到了一个内存,假设现在memory[0:4]4个字节表示的int大小是20的话,就表示现在分配一个20byte的可用内存。
func malloc(size int)int{
start:=max-index-4
var lastDataSize int=toLength(memory[start:start+4])//把4个byte转成int型数据
max-index=4+lastDataSize//更新最新内存申请到了哪里
memory[max-index-4:max-index]=toByts(size)//把新申请的内存长度记录在内存控制块中
return max-index//返回新申请的内存地址,也就是数据索引
}
free方法不做任何操作。realloc方法的实现首先用malloc申请新的内存空间,然后把原来地址的数据copy到最新地址。原来地址的数据长度通过原来数据内存地址-sizeof(mem_control_block)得到的mem_control_block结构可知。
如上方式现实的内存申请方案其优点是很容易实现。且动态扩容时不需要地址重定位,效率很高,非常适合区块链这种不可能长时间运行合约的场景。
所述gas模块对WASM规范所规定的所有指令注册了其相应的gas值,注册的方式是定义了一个全局变量,我们称之为GasTable。gas值和汇编指令在GasTable全局变量中一一对应。具体代码如下:
var GasTable=[256]Instruction{
opcodes.Nop:{Execute:nil,GasCost:1,},
opcodes.Unreachable:{Execute:nil,GasCost:1,},
opcodes.Select:{Execute:nil,GasCost:21,},
opcodes.I32Add:{Execute:nil,GasCost:14,},
opcodes.I32Sub:{Execute:nil,GasCost:15,},
}
执行引擎模块在执行交易时会从GasTable中获取每一个要执行的汇编指令所要消耗的Gas,每执行一个汇编指令都累加其相应的GAS值,当累计消耗GAS值大于规定的gas阀值时会终止交易运行,交易运行失败。
所述区块链和虚拟机交互模块有两个主要功能:1.为虚拟机提供宿主本地方法当做合约的公有方法,用以提高交易运行速度和降低合约编写难度。2.虚拟机运行合约的结果同步到区块链。
可以添加一个JIT模块,在编译器模块解析二进制代码后,对解析后得到的WASM汇编指令转换为本地宿主机器的汇编指令,进一步大幅的提高虚拟机性能。
在区块链中引入虚拟机,虚拟机可以在异构的环境下,构建出一个虚拟的同构环境,用于帮助实现所有节点的行为确定性和一致性。
而对于内存自动扩容功能,在一个简单的KV存储合约中,假设以K为键,而值是一个不停增加长度的字符串。当虚拟机的内存无法存储下值的时候,内存管理模块会自动扩容,自动进行地址重地位,一切都不需要用户干预。当这个KV存储合约交易执行完毕后,过大的内存申请将会被自动释放。既有效的提高了内存利用率,又让合约的编写和执行没有任何内存大小的限制。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种基于区块链的虚拟机内存自动扩容系统,其特征在于,包括:
编译器模块:对WASM二进制代码进行解析,生成内存汇编指令;
执行引擎模块:执行生成的内存汇编指令;
内存模块:为执行引擎模块的实例化和汇编指令的运行进行内存管理;
GAS模块:通过消耗GAS,防止恶意攻击;
区块链和虚拟机交互模块:接收外部参数的输入给执行引擎模块,同时将执行引擎模块的执行结果传输到区块链。
2.根据权利要求1所述的基于区块链的虚拟机内存自动扩容系统,其特征在于,所述编译器模块根据WASM规范对二进制代码进行解析,获取其中的汇编指令和静态数据,然后构建WASM模块对象和节对象用以存储汇编指令和静态数据,并构建出指令码值所对应的指令对象。
3.根据权利要求1所述的基于区块链的虚拟机内存自动扩容系统,其特征在于,所述执行引擎模块包括:构建虚拟机用以模拟实体计算机,并使用内存模块作为虚拟机的内存管理器。
4.根据权利要求1所述的基于区块链的虚拟机内存自动扩容系统,其特征在于,所述内存模块对虚拟机的内存进行管理,包括内存申请、内存再申请、内存自动扩容、内存释放和释放后合并。
5.根据权利要求1所述的基于区块链的虚拟机内存自动扩容系统,其特征在于,所述内存模块执行包括内存分配、内存再分配、内存释放和内存合并。
6.根据权利要求1所述的基于区块链的虚拟机内存自动扩容系统,其特征在于,在内存模块中引入内存池模块,申请的内存先从内存池模块中获取,获取失败时再从系统申请新的内存;内存释放时,先查看内存池模块中缓存的内存是否已经达到设置的最大值,若没有达到最大值,则把要释放的内存直接放回内存池模块,否则把要释放的内存释放给系统回收。
7.根据权利要求6所述的基于区块链的虚拟机内存自动扩容系统,其特征在于,所述内存池模块中的缓存包括:
永久缓存:缓存永久存在直至整个系统区块链节点进程退出;
暂时缓存:缓存预设时间段,若在预设时间段内没有继续使用,则自动释放缓存。
8.根据权利要求1所述的基于区块链的虚拟机内存自动扩容系统,其特征在于,所述GAS模块执行包括指令GAS注册和指令GAS计算。
9.根据权利要求1所述的基于区块链的虚拟机内存自动扩容系统,其特征在于,所述区块链和虚拟机交互模块执行包括宿主本地方法注册、宿主方法查询与执行。
10.一种基于区块链的虚拟机内存自动扩容方法,其特征在于,采用权利要求1-9中任一种所述的基于区块链的虚拟机内存自动扩容系统,包括:
步骤1:对WASM二进制代码进行解析,生成内存汇编指令;
步骤2:构建虚拟机用以模拟实体计算机,并使用内存模块作为虚拟机的内存管理器;
步骤3:采用GAS机制量化虚拟机交易执行时的资源消耗,防止恶意攻击;
步骤4:虚拟机执行内存汇编指令与编译器模块构建的WASM模块对象,
步骤5:把执行结果同步到区块链,让区块链的各个模块和外部用户获取到执行结果。
CN202011505434.9A 2020-12-18 2020-12-18 基于区块链的虚拟机内存自动扩容系统和方法 Pending CN112527464A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011505434.9A CN112527464A (zh) 2020-12-18 2020-12-18 基于区块链的虚拟机内存自动扩容系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011505434.9A CN112527464A (zh) 2020-12-18 2020-12-18 基于区块链的虚拟机内存自动扩容系统和方法

Publications (1)

Publication Number Publication Date
CN112527464A true CN112527464A (zh) 2021-03-19

Family

ID=75001480

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011505434.9A Pending CN112527464A (zh) 2020-12-18 2020-12-18 基于区块链的虚拟机内存自动扩容系统和方法

Country Status (1)

Country Link
CN (1) CN112527464A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115167833A (zh) * 2022-09-02 2022-10-11 浙江大华技术股份有限公司 编程方法、可执行程序的执行方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107360238A (zh) * 2017-07-25 2017-11-17 光载无限(北京)科技有限公司 基于区块链cpow共识算法的智能合约网关
US20180157491A1 (en) * 2011-03-25 2018-06-07 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN108647361A (zh) * 2018-05-21 2018-10-12 中国工商银行股份有限公司 一种基于区块链的数据存储方法、装置及系统
CN111179086A (zh) * 2019-12-31 2020-05-19 杭州趣链科技有限公司 一种基于WebAssembly的智能合约虚拟机
CN111399990A (zh) * 2020-05-29 2020-07-10 支付宝(杭州)信息技术有限公司 解释执行智能合约指令的方法及装置
CN111651170A (zh) * 2020-05-29 2020-09-11 平安医疗健康管理股份有限公司 一种实例动态调整方法、装置及相关设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180157491A1 (en) * 2011-03-25 2018-06-07 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN107360238A (zh) * 2017-07-25 2017-11-17 光载无限(北京)科技有限公司 基于区块链cpow共识算法的智能合约网关
CN108647361A (zh) * 2018-05-21 2018-10-12 中国工商银行股份有限公司 一种基于区块链的数据存储方法、装置及系统
CN111179086A (zh) * 2019-12-31 2020-05-19 杭州趣链科技有限公司 一种基于WebAssembly的智能合约虚拟机
CN111399990A (zh) * 2020-05-29 2020-07-10 支付宝(杭州)信息技术有限公司 解释执行智能合约指令的方法及装置
CN111651170A (zh) * 2020-05-29 2020-09-11 平安医疗健康管理股份有限公司 一种实例动态调整方法、装置及相关设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JIANGSHAGNQIFENG: "PlatON-Go-mirror /life", 《GITHUB》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115167833A (zh) * 2022-09-02 2022-10-11 浙江大华技术股份有限公司 编程方法、可执行程序的执行方法及装置
CN115167833B (zh) * 2022-09-02 2022-12-02 浙江大华技术股份有限公司 编程方法、可执行程序的执行方法及装置

Similar Documents

Publication Publication Date Title
CN110297689B (zh) 智能合约执行方法、装置、设备及介质
Cheung et al. Automatic partitioning of database applications
US7765527B2 (en) Per thread buffering for storing profiling data
Inoue et al. A trace-based Java JIT compiler retrofitted from a method-based compiler
US8473900B2 (en) Combining classes referenced by immutable classes into a single synthetic class
KR102353213B1 (ko) 데이터 프리페칭 방법, 장치, 및 시스템
US20190324880A1 (en) Memory health metrics
US11294791B2 (en) Code optimization for connected managed runtime environments
JP3422743B2 (ja) メモリ使用効率を増すための方法
CN112527464A (zh) 基于区块链的虚拟机内存自动扩容系统和方法
CN113900896B (zh) 一种代码运行的监测方法、装置、设备及存储介质
Hu et al. Optimization of dense matrix multiplication on IBM Cyclops-64: Challenges and experiences
Mosberger et al. Protocol latency: MIPS and reality
US11474832B2 (en) Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics
US10346086B2 (en) Determining an age category for an object stored in a heap
US10120796B2 (en) Memory allocation for long-lived objects
Dosanjh et al. The case for semi-permanent cache occupancy: Understanding the impact of data locality on network processing
WO2018125408A1 (en) Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment
JP2003140912A (ja) データ処理システム及びデータ処理方法、並びに記憶媒体
Inoue et al. A study of memory management for web-based applications on multicore processors
Coarfa et al. Experiences with Sweep3D implementations in Co-array Fortran
Asai et al. Transparent avoidance of redundant data transfer on GPU-enabled apache spark
Ahmed et al. Transforming blocking MPI collectives to non-blocking and persistent operations
CN115203210A (zh) 哈希表处理方法、装置、设备及计算机可读存储介质
Valvag et al. Cogset vs. hadoop: Measurements and analysis

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210319