0%

VM-matters

Zheng S, Wang H, Wu L, et al. VM matters: a comparison of WASM VMS and EVMS in the performance of blockchain smart contracts[J]. arXiv preprint arXiv:2012.01032, 2020.

Introduction

Wasm已经被以太坊采用,即eWASM,以期望取代EVM

以太坊的性能瓶颈

  • 共识协议
  • 交易签名
  • 执行引擎(EVM)

然而EVM对真实世界的合约来说工具不够完善,开发者开始研究Wasm。Wasm被集成到了所有主流浏览器中。Wasm程序执行效率接近于本地执行,比浏览器Js的实现快2倍

Ethereum 2.0 roadmap中已经包含了eWASM,潜在的优势

  • 交易处理更快,提升吞吐量
  • 支持更多智能合约语言
  • 目前Geth和Openethereum在实验支持WASM,但是社区活跃似乎在18年,从2022年起代码仓库不再更新

目前没有明确的证据表明WASM能够提高区块链执行的实际效率

主要工作

  • 本文分析了智能合约执行引擎对区块链执行效率的影响,主要研究两类

    • EVM engines:Geth和Openethereum

    • WASM engines:11个,3个是区块链定制的(Eos Geth 和 Openethereum)

  • 分析了字节码内引擎对比和字节码间的引擎对比,即EVM和WASM先自己和自己比,再跨平台比较

  • 设计了一系列的benchmark

得出了一系列结论

  • 基于EVM的链对Wasm的支持不尽人意
    • Wasm的实现不稳定,客户端的编码规则不一致;支持的编程语言少
  • 对EVM来说,Geth和表现比Openethereum好
  • 智能合约在Wasm上运行效率差异显著,最大3个数量级
  • 本地支持的数据类型对Wasm合约执行影响显著,如Wasm的数据类型为32/64bit,当执行256的EVM字节码时,带来额外开销
  • 尽管Standalone WASM的效率比EVM高,但是eWASM VM比EVM慢(所有256bit数据和大多数64bit数据),可能是gas测量和EEI上下文切换带来的开销

为了研究,会开源benchmark和所有实验结果(因为匿名提交删掉了,github没搜到,但是有很多其他的开源的benchmark)

Background

Smart Contract

EVM合约字节码的执行是自循环,当程序结束或者出现error或者遇到STOP RETURN语句时终止

gas用于支付 计算 存储 带宽 的成本

EVM/WASM/eWASM 字节码

  • EVM
    • EVM仅支持256比特的数据,小于该长度的计算都必须转换成256比特的形式EVM才能处理
    • EVM不支持浮点数
  • Wasm:2017年由浏览器厂商提出,在隔离的沙箱中运行
    • 可分为解码、验证和执行三个阶段
    • 数据类型:32bit和64bit的浮点数、整数
  • eWasm:Wasm的子集
    • 通过Wasm执行引擎定义的Ethereum Environment Interface (EEI)和以太坊交互
    • 限制了浮点数(为了保证和以太坊的一致性)
    • 定义了 EVM 交叉编译器,实现对EVM字节码的后向兼容性

image-20231023192003800

Study Design

研究四个问题

  • 目前区块链客户端对Wasm的支持情况
  • EVM比较
  • Wasm比较
  • EVM和Wasm比较

image-20231023192331005

实验方法

  • 采用0.5.4的solc编译solidity生成EVM字节码

  • 利用 SOLL(最新的release是2年前的)编译soldity生成eWasm的字节码

  • 然而eWasm的字节码不能在一般的Wasm上面运行,利用其他引擎支持的语言 Rust 编写等价合约来编译成Wasm字节码

对选择的Wasm的介绍

  • Geth WASM - Hera:C++实现,需要EVMC的支持,EVMC是EVM和客户端交互的接口,支持对应的Wasm后端包括wabt BinaryenWAVM
  • Openethereum WASM - wasmi:Rust实现,虽然项目凉了,但是Wasm现在依然非常活跃
  • EOS VM:虚拟机运行是确定性的,采用软件实现浮点数。采用看门狗 timer来限制执行时间
  • 其余还有Life SSVM wagon wbt wasm3 WAMR wasmtime

benchmark

13个不同种类的测试标准

image-20231023195252543

  • 操作码层面的测试:Simple Operation测试了单一运算的效率

  • 以太坊层面的测试:Arithmetic Block Status和Hashing测试

实验结果

  • EVM对比:Openethereum和geth对比image-20231024172501663
  • WASM对比 image-20231024172615876
  • eWasm和EVM字节码对比 image-20231024172751695
  • Wasm带来的额外开销占比 image-20231024173251526

Limitation

  • benchmark的局限性

    • 目前只支持单一的操作、算术运算和哈希,不支持对KV存储的操作,因为Wasm目前不支持长期存储。
    • 没有交易 和其他合约交互的测试
  • 目前的思路是设计benchmark来近似测量操作码执行的效率,更精确的方法应该是直接测量记录操作码的运行时间

  • Wasm VM仍然在频繁更新,本论文的结果可能不能反映目前的VM的实际性能

第一篇对Wasm和EVM执行效率进行对比的论文,目前有一些对Wasm的研究和区块链系统性能测量的研究

  • Wasm字节码分析
    • 有工作[1]分析了Alexa上使用WAsm的合约,发现仅1/600的合约使用Wasm
    • 有工作发现[2]Wasm被用于PoW,可能导致cryptojacking
    • 工作[3] 提出了防御cryptojacking的方法
  • 区块链性能测量
    • BlockBench [4]测量区块链私链的性能,分析了Ethereum, Parity and Hyperledger,发现区块链系统的瓶颈在于共识协议
    • 工作[5]分析了Geth和Parity上交易的效率,发现Parity更快

参考文献


  1. 1.Marius Musch, Christian Wressnegger, Martin Johns, and Konrad Rieck. 2019.New Kid on the Web: A Study on the Prevalence of WebAssembly in the Wild. In International Conference on Detection of Intrusions and Malware, and VulnerabilityAssessment. Springer, 23–42.
  2. 2.Jan Rüth, Torsten Zimmermann, KonradWolsing, and Oliver Hohlfeld. 2018. Digginginto browser-based crypto mining. In Proceedings of the Internet MeasurementConference 2018. 70–76.
  3. 3.Weikang Bian, Wei Meng, and Mingxue Zhang. 2020. MineThrottle: Defendinga gainst WASM In-Browser Cryptojacking. In Proceedings of The Web Conference3 112–3118.
  4. 4.Tien Tuan Anh Dinh, Ji Wang, Gang Chen, Rui Liu, Beng Chin Ooi, and Kian-Lee Tan. 2017. Blockbench: A framework for analyzing private blockchains. InProceedings of the 2017 ACM International Conference on Management of Data.1085–1100.
  5. 5.Sara Rouhani and Ralph Deters. 2017. Performance analysis of ethereum transactionsin private blockchain. In 2017 8th IEEE International Conference on Software Engineering and Service Science (ICSESS). IEEE, 70–74.