#sputnik-vm #patch #ethereum #blockchain #ubiq #evm

no-std sputnikvm-network-ubiq

SputnikVM 的 Ubiq 补丁

3 个不稳定版本

使用旧的 Rust 2015

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

#sputnik-vm 中排名 10

每月下载 28

Apache-2.0

240KB
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 或私有链
  • 无状态 - 只是一个连接到独立状态存储的执行环境
  • 快速 - 主要关注性能
  • 适用于 IoT - 设计用于支持嵌入式设备中使用的硬件
  • FFI、Protobuf 和 JSON 接口
  • 使用 Rust 编写,可以作为二进制文件、cargo crate 或共享库使用

支持的网络

网络 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

依赖项

请确保您至少有 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:在以太坊经典主网上从创世区块到第 4,000,000 个区块进行了完整的回归测试。一些之前失败的测试也集成到了 Rust 的测试系统中。有关如何重现回归测试的信息,请参阅wiki

有关从源码构建 SputnikVM 的更多信息,请阅读构建和测试wiki页面。

许可证

Apache 2.0

依赖项

~6MB
~48K SLoC