#虚拟机 #以太坊 #区块链 #预编译 #evm #不同 #无std

无std sputnikvm

SputnikVM - 一种便携式区块链虚拟机

32个版本

使用旧的Rust 2015

0.11.0-beta.02018年11月13日
0.10.1 2018年2月22日
0.9.5 2018年1月3日
0.9.4 2017年12月26日
0.5.0 2017年7月15日

#10 in #预编译

Download history 119/week @ 2024-03-29 87/week @ 2024-04-05 253/week @ 2024-04-12 181/week @ 2024-04-19 134/week @ 2024-04-26 153/week @ 2024-05-03 146/week @ 2024-05-10 117/week @ 2024-05-17 65/week @ 2024-05-24 41/week @ 2024-05-31 23/week @ 2024-06-07 46/week @ 2024-06-14 102/week @ 2024-06-21 53/week @ 2024-06-28 11/week @ 2024-07-05 28/week @ 2024-07-12

203 每月下载量
用于 13 crates

Apache-2.0

215KB
4.5K SLoC

SputnikVM:区块链虚拟机

Build Status License

名称 描述 Crates.io 文档
sputnikvm 以太坊虚拟机的核心库 crates.io Documentation
sputnikvm-stateful SputnikVM的默克尔树状态包装器 crates.io Documentation

SputnikVM是Ethereum虚拟机的一种实现。它的目标是成为一个高效、可插拔的虚拟机,适用于不同的基于Ethereum的区块链。

我们鼓励所有类似Ethereum的区块链采用SputnikVM,并利用SputnikVM的RFC治理项目来管理每个区块链虚拟机的参数。这样我们可以从社区的经验中学习,并从其他提议的RFC中吸取教训。

功能

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

支持的网络

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

预编译合约

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

名称 描述 Crates.io 文档
sputnikvm-precompiled-bn128 bn128预编译合约 crates.io Documentation
sputnikvm-precompiled-modexp modexp预编译合约 crates.io Documentation
  • SputnikVM Dev - 用于智能合约开发的 SputnikVM 实例,提供测试环境和 JSON RPC API 的模拟
  • SputnikVM in Browser - 将 SputnikVM 编译成 WebAssembly 的实验版本,因此可以在 Node.js 浏览器中启动
  • SputnikVM for embedded devices - 在嵌入式设备上运行完整功能 EVM 的实验项目

依赖项

确保您至少有 rustc 1.26.2 (594fb253c 2018-06-01)。不支持 Rust 1.25.0 及之前版本。

文档

从源代码构建

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

构建

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

$ git clone [email protected]:ETCDEVTeam/sputnikvm.git
$ cd sputnikvm
$ cargo build --release --all

测试

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

  • jsontests:这部分使用以太坊的 tests。这些测试目前对系统操作码的覆盖不好。此外,一些测试是错误的,因此已禁用。
  • regtests:在以太坊经典主网上从创世块到第 400 万个区块进行完整的回归测试。一些之前失败的测试也被集成到 Rust 的测试系统中。有关如何重现回归测试的详细信息,请参阅 wiki

有关从源代码构建 SputnikVM 的更多信息,请阅读 wiki 页面 Building and Testing

许可证

Apache 2.0

依赖项

~1.6–2.2MB
~26K SLoC