#预编译 #evm #sputnik-vm #合约 #以太坊 #modexp #分叉

no-std evm-precompiled-modexp

SputnikVM 的 modexp 预编译合约

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 日

#modexp 中排名第 4

Download history 17/week @ 2024-03-14 12/week @ 2024-03-21 30/week @ 2024-03-28 20/week @ 2024-04-04 14/week @ 2024-04-11 13/week @ 2024-04-18 15/week @ 2024-04-25 12/week @ 2024-05-02 19/week @ 2024-05-09 18/week @ 2024-05-16 12/week @ 2024-05-23 13/week @ 2024-05-30 11/week @ 2024-06-06 11/week @ 2024-06-13 18/week @ 2024-06-20 8/week @ 2024-06-27

每月下载量 51
用于 7 个包(6 个直接使用)

Apache-2.0 和可能 GPL-3.0

10KB
155

SputnikVM: Rust Ethereum 虚拟机实现

Build Status License

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

功能

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

支持的网络

支持的网络

网络 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 - Ethereum的通用特性和结构。
  • etclient - 使用Rust编写的最小化Ethereum客户端。
  • 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并确保其执行与其他Ethereum虚拟机实现一致

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

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

$ cargo test --all

贡献

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

许可证

Apache 2.0

依赖项

~3.5MB
~50K SLoC