1 个不稳定版本

0.11.0 2019年7月1日

#17 in #预编译

Download history 30/week @ 2024-04-05 23/week @ 2024-04-12 24/week @ 2024-04-19 30/week @ 2024-04-26 27/week @ 2024-05-03 29/week @ 2024-05-10 27/week @ 2024-05-17 23/week @ 2024-05-24 21/week @ 2024-05-31 18/week @ 2024-06-07 20/week @ 2024-06-14 24/week @ 2024-06-21 10/week @ 2024-06-28 7/week @ 2024-07-05 25/week @ 2024-07-12 18/week @ 2024-07-19

62 每月下载次数
用于 10 crates

Apache-2.0 和可能 GPL-3.0

235KB
5.5K SLoC

EthereumVM: Rust Ethereum 虚拟机实现

Build Status License

名称 描述 Crates.io 文档
ethereumvm Ethereum 虚拟机核心库 crates.io Documentation
ethereumvm-stateful Merkle Trie 状态包装器,用于 EthereumVM crates.io Documentation

特性

  • 独立 - 可以作为独立进程启动或集成到其他应用中
  • 通用 - 支持不同的 Ethereum 链,如 ETC、ETH 或私有链
  • 无状态 - 仅提供一个连接到独立状态存储的执行环境
  • 快速 - 主要关注性能
  • IoT 兼容 - 设计用于支持嵌入式设备中使用的硬件
  • 用 Rust 编写,可以作为二进制文件、Cargo crate 或共享库使用

支持的网络

支持的网络

网络 Crates.io 文档
任何网络 crates.io Documentation
Ethereum Classic crates.io Documentation
Ethereum crates.io Documentation
Ellaism crates.io Documentation
Ubiq crates.io Documentation
Expanse crates.io Documentation
Musicoin crates.io Documentation

预编译合约

核心库中预置了四个预编译合约。要使用拜占庭硬分叉引入的 bn128 和 modexp 预编译合约,请拉取以下 crate。

名称 描述 Crates.io 文档
ethereumvm-precompiled-bn128 bn128 预编译合约 crates.io Documentation
ethereumvm-precompiled-modexp modexp 预编译合约 crates.io Documentation

依赖项

请确保您至少有rustc 1.33.0 (2aa4c46cf 2019-02-28)。Rust 1.32.0和之前的版本不受支持。

文档

从源代码构建

EthereumVM是用Rust编写的。如果您不熟悉Rust,请参阅入门指南

构建

要开始使用EthereumVM,您需要安装rustup,然后您可以执行以下操作

$ git clone [email protected]:ethereumproject/evm-rs.git ethereumvm
$ cd ethereumvm
$ cargo build --release --all

测试

我们目前使用两种方式来测试EthereumVM并确保其执行与其他Ethereum虚拟机实现保持一致

  • jsontests:这使用了Ethereum的部分测试。这些测试目前对系统操作操作码的覆盖率不好。此外,一些测试是错误的,因此它们已被禁用。
  • regtests:在以太坊经典主网上从创世块到第400万块进行完整的回归测试。一些之前失败的测试也已集成到Rust的测试系统中。

要运行所有测试,请在克隆的仓库中执行以下命令

$ cargo test --all

贡献

格式化策略在GUIDE.md中描述,推荐的自动格式化技术可在FORMATTING.md中找到

许可

Apache 2.0

依赖项

~1.8–2.5MB
~31K SLoC