#虚拟机 #sputnik-vm #以太坊 #修补 #区块链 #扩展 #evm

不依赖std sputnikvm-network-expanse

SputnikVM的扩展修补程序

3个不稳定版本

使用旧的Rust 2015

0.11.0-beta.02018年11月13日
0.10.1 2018年9月19日
0.10.0 2018年2月12日

#6 in #sputnik-vm

每月 28次下载

Apache-2.0

245KB
5K SLoC

SputnikVM:区块链虚拟机

Build Status License

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

SputnikVM是Ethereum虚拟机的一个实现。它旨在成为不同基于Ethereum的区块链的高效、可插入的虚拟机。

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

特性

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

支持的网络

网络 Crates.io 文档
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 文档
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:这使用以太坊测试的一部分。这些测试目前对系统操作指令的覆盖率不好。此外,一些测试是不正确的,因此它们被禁用。
  • regtests:从创世块到第 400 万个区块对以太坊经典主网进行完整的回归测试。一些之前失败的测试也被整合到 Rust 的测试系统中。有关如何重现回归测试的信息,请参阅wiki

要了解更多关于从源代码构建SputnikVM的信息,请阅读构建和测试页面

许可证

Apache 2.0

依赖项

~6MB
~49K SLoC