CN112527464A - 基于区块链的虚拟机内存自动扩容系统和方法 - Google Patents
基于区块链的虚拟机内存自动扩容系统和方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000003993 interaction Effects 0.000 claims abstract description 10
- 230000003068 static effect Effects 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 3
- 238000004064 recycling Methods 0.000 claims description 3
- 241000722921 Tulipa gesneriana Species 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 20
- 230000006399 behavior Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000003340 mental effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005056 memory consolidation Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory 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周期,如果一直没有继续使用的话,会自动释放掉。具体代码如下:
因为需要考虑多线程安全问题,所以我们使用缓存channel来做永久缓存,在性能也许没有sync.pool好一点,因为sync.pool会在每个P上进行缓存,降低了每个G之间的数据竞争,在很多情况下,不需要加锁,但是就像上面所说的一样,sync.pool缓存的数据在两个GC周期会释放掉缓存,所以我们选择channel作为我们的永久缓存。而在临时的,超过永久缓存数量的情况下,用sync.pool来缓存内存对象。
内存池对象是一个单例模式,定义为一个全局变量。初始化时会生成几个(默认:3)内存对象放入永久缓存channel中。
从缓存池中获取缓存时,首先从永久缓存channel中获取,如果获取不到,则从sync.pool中获取,如果sync.pool中没有缓存对象,则会新生成对象,并返回。
把对象放回内存池中时,也是首先尝试把对象返回永久channel中,如果永久channel已经满了,则会放回sync.pool中。都是利用了golang的select机制。
怎么样申请新的内存,并合并老内存和新内存。并且保证内存合并后原来已经在用的内存地址还是依然有效的,也就是内存重定位问题。这里采用了一种非常简洁有效的解决方案。新申请的内存直接拼接在老内存的最后面,这样内存地址就不用再重定位了,其实是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:把执行结果同步到区块链,让区块链的各个模块和外部用户获取到执行结果。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115167833A (zh) * | 2022-09-02 | 2022-10-11 | 浙江大华技术股份有限公司 | 编程方法、可执行程序的执行方法及装置 |
Citations (6)
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 | 平安医疗健康管理股份有限公司 | 一种实例动态调整方法、装置及相关设备 |
-
2020
- 2020-12-18 CN CN202011505434.9A patent/CN112527464A/zh active Pending
Patent Citations (6)
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)
Title |
---|
JIANGSHAGNQIFENG: "PlatON-Go-mirror /life", 《GITHUB》 * |
Cited By (2)
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 |