#evm #virtual-machine #sputnik-vm #patch #ethereum #musicoin #evm-network

no-std evm-network-musicoin

为SputnikVM提供的Musicoin补丁。已弃用,将在未来的版本中删除:请使用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日

#21 in #sputnik-vm

Apache-2.0 和可能 GPL-3.0

25KB
385

SputnikVM: Rust Ethereum 虚拟机实现

Build Status License

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

特性

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

支持的网络

支持的网络

网络 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预编译合约,请拉取以下crates。

名称 描述 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:这使用以太坊 测试 的一部分。这些测试目前对系统操作操作码的覆盖范围不好。此外,一些测试是错误的,因此已禁用。
  • regtests:在以太坊 Classic 主网上从创世块到第 400 万个区块进行完整的回归测试。一些之前失败的测试也集成到 Rust 的测试系统中。

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

$ cargo test --all

贡献

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

许可证

Apache 2.0

依赖项

~6MB
~54K SLoC