1. 引言

evm2 EVM平方:
e=vm² (pronounced evm-squared; the = is silent), also spelled evm2, is an evm that runs inside evm。

开源代码见:

  • https://github.com/hananbeer/evm2

当前使用 huff——为A low level assembly language for the EVM 汇编语言 实现了evm,使得可have a vm in evm:

  • run_huff.sh
  • test_huff.sh

同时,还有一些老接口:

  • 1)编译:【其中evm为go-ethereum中的一个工具】

    evm compile evm.easm
    
  • 2)运行:使用evm run或如下脚本:
    ./run.sh 0x<bytecode>
    
  • 3)调试:./disas.sh将编译evm2,然后展示反汇编结果,有助于理解debug。

2. e=vm2测试用例

注意:代码中若无return声明,将返回evm2的memory。

  • 1)用例1:返回0x33 * 2:
./test.sh 60336002025952
"00..0066"
  • 2)用例2:返回[0x00, 0x20, 0x40]:
./test.sh 595952595952595952
"..00..20..40"
  • 3)用例3:mstore8 & mstore:
./test_huff.sh 6040595360205952
"40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020"
  • 4)用例4:emit LOG0(abi.encode(uint256(-1), uint256(0))):【查看日志需运行evm --debug
# classic evm:
evm --debug --json --code 600019595260406000a0 run# and for evm2:
evm --debug --json --code `huffc evm.huff --bin-runtime` --input 600019595260406000a0 run#### LOGS ####
LOG0: 0000000000000000000000007265636569766572 bn=0 txi=0
00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000010  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

参考资料

[1] twitter evm-squared

e=vm2:vm in evm相关推荐

  1. 操作系统-虚拟机-百科:VM

    ylbtech-操作系统-虚拟机-百科:VM 虚拟机(Virtual Machine)指 通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 虚拟系统通过生成现有操作系统 ...

  2. 谷歌新作gVisor:VM容器融合技术已经到来

    5 月 2 日,谷歌发布了一款新型的沙箱容器运行时 gVisor,号称能够为容器提供更安全的隔离,同时比 VM 更轻量.容器基于共享内核,安全性是大家关注的一大要点,gVisor 的发布势必将引来更多 ...

  3. vm 安装jdk1.8_JDK 13:VM.events已添加到jcmd

    vm 安装jdk1.8 CSR( 兼容性和规范审查 ) JDK-8224601 ["提供VM.events诊断命令"]从JDK 13 Early Access Build #24 ...

  4. JDK 13:VM.events已添加到jcmd

    CSR( 兼容性和规范审查 ) JDK-8224601 ["提供VM.events诊断命令"]从JDK 13 Early Access Build #24 (日期为2019/6/6 ...

  5. 虚拟化 oracle rac,数据库虚拟化之战:VM与Oracle RAC

    云计算.虚拟机.利用率提升.整合或者任何你喜欢用的词汇,这都是当今所有IT组织大量工作关注的焦点.在本文中,我们将进行一场讨论,双方都是久经沙场的IT资深人士,探讨虚拟机技术与Oracle真正应用集群 ...

  6. linux降低磁盘的读,Linux磁盘I/O优化:vm.dirty_ratio - 米扑博客

    Linux 文件缓存是一项重要的性能改进,在大多数情况下,读缓存在绝大多数情况下是有益无害的(程序可以直接从RAM中读取数据).写缓存比较复杂,Linux内核将磁盘写入缓存,过段时间再异步将它们刷新到 ...

  7. 小白笔记:VM VirtualBox 虚拟机下Ubuntu磁盘空间不足”Low Disk Space on “Filesystem root” ”及固定大小储存虚拟磁盘转动态分配储存的简单扩容

    示范版本:虚拟机软件VM VirtualBox 6.1.36 +系统Ubuntu20.04 解决问题:Ubuntu在启动或下载文件时候时,提示磁盘空间不足(Low Disk Space on &quo ...

  8. 步骤整理:VM虚拟机安装Brat(包括安装VMware,CentOS)

    VM虚拟机安装Brat 先说一句 以下内容,需要大量下载,如果觉得网页下载速度过慢,可安装IDM 以下为IDM软件,特意找了无需付费的: 链接:https://pan.baidu.com/s/1-jV ...

  9. 【方向盘】启动命令和IDEA如何传递:VM参数、命令行参数、系统参数、环境变量参数、main方法参数

    本文已被https://yourbatman.cn收录:女娲Knife-Initializr工程可公开访问啦:程序员专用网盘https://wangpan.yourbatman.cn:技术专栏源代码大 ...

最新文章

  1. 【Qt】QImage使用总结
  2. F2上的8×8可逆矩阵的个数为2的62次幂
  3. 关于在学校锻炼的思考
  4. 1.4 VC6.0在win7下安装的兼容性问题以及解决办法
  5. 期货黄金与现货黄金比较
  6. 微信小程序数据拼接_微信小程序使用原生WebSokcet实现断线重连及数据拼接
  7. 第11章 递归分形树(《Python趣味创意编程》教学视频)
  8. RHEL5.4 x86_64 GCC 4.1.2 升级到4.7.0版过程(含安装MPFR、GMP、MPC过程)
  9. 微软新开源!不用写 1 行代码的自动化测试工具
  10. 建造者模式 生成器模式 创建型 设计模式(五)
  11. 米思齐MT1637简单显示字符串和时间
  12. 微信小程序分享至朋友圈功能
  13. PAT-厘米换算英尺英寸(简单编程题)
  14. github网站下载方法
  15. ubuntu双显示器下发生的问题
  16. 108. 将有序数组转换为二叉搜索树
  17. 今天我们不搞科研,来搞颜色
  18. 中国防静电塑料卷轴市场深度研究分析报告
  19. C语言机器人视觉系统原理,机器人视觉系统的组成及工作原理
  20. 0017加速UV检测的一种算法

热门文章

  1. html div居中属性,让div水平居中设置margin属性
  2. 传统蒙文字体_论传统蒙古文字体的设计方法
  3. 小米手机安装 charles 证书,提示“没有可安装的证书”
  4. java 本地缓存框架_5个强大的Java分布式缓存框架推荐
  5. Lepus(天兔)监控数据库
  6. 深度学习目标检测YOLO对于数据集的要求
  7. PhoneGap简介
  8. 程序员都有些什么企业文化?
  9. java接口注释_Java的注释和API文档
  10. c 只获取程序名_UG NX后处理出EXCEL程序单的解决方案