#evm #ethereum #classic #patch #sputnik-vm #evm-network #deprecated

无std evm-network-classic

SputnikVM的Ethereum Classic补丁。已弃用,将在未来版本中删除:请使用evm-network。

4个版本

0.11.0 2019年5月7日
0.11.0-beta.32019年4月29日
0.11.0-beta.22019年4月28日
0.11.0-beta.02019年1月22日

#23 in #sputnik-vm


用于 evm-stateful

Apache-2.0 和可能 GPL-3.0

35KB
625

SputnikVM:Rust以太坊虚拟机实现

Build Status License

名称 描述 Crates.io 文档
evm 以太坊虚拟机的核心库 crates.io Documentation
evm-stateful Merkle Trie状态包装器,用于SputnikVM crates.io Documentation

特性

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

支持的网络

支持的网络

网络 Crates.io 文档
任何网络 crates.io Documentation
以太坊经典 crates.io Documentation
以太坊 crates.io Documentation
Ellaism crates.io Documentation
Ubiq crates.io Documentation
Expanse crates.io Documentation
Musicoin crates.io Documentation

预编译合约

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

名称 描述 Crates.io 文档
evm-precompiled-bn128 bn128 预编译合约 crates.io Documentation
evm-precompiled-modexp modexp 预编译合约 crates.io Documentation
  • ethereum-rs - 以太坊的通用特性和结构。
  • etclient - 使用 Rust 编写的最小化以太坊客户端。
  • SputnikVM FFI - SputnikVM 的 C 和 Go FFI 绑定
  • SputnikVM Dev - 用于智能合约开发的 SputnikVM 实例,提供测试环境和 JSON RPC API 模拟
  • SputnikVM in Browser - 将 SputnikVM 编译成 WebAssembly 的实验版本,因此可以在 Node.js 浏览器中运行
  • SputnikVM for embedded devices - 在嵌入式设备上运行完整功能的 EVM 的实验项目

依赖项

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

文档

从源码构建

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

构建

要开始使用 SputnikVM,您需要安装rustup,然后您可以执行

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

测试

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

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

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

$ cargo test --all

贡献

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

许可证

Apache 2.0

依赖项

~6MB
~53K SLoC