#sputnik-vm #blockchain #patch #gallactic

no-std 卫星VM网络-银河

为卫星VM提供的银河补丁

2个不稳定版本

使用旧Rust 2015

0.10.1 2018年10月24日
0.1.0 2018年10月24日

#16 in #sputnik-vm

Apache-2.0 和可能 GPL-3.0

7KB
72

卫星VM:区块链虚拟机

Build Status License

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

卫星VM是以太坊虚拟机的一个实现。它旨在成为不同以太坊区块链的高效、可插拔虚拟机。

我们鼓励所有类似以太坊的区块链采用卫星VM,并利用卫星VM的RFC治理项目来管理每个区块链VM的参数。这样,我们可以从社区的经验中汲取营养,并从其他提出的RFC中学习。

特性

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

支持的网络

网络 Crates.io 文档
以太坊经典 crates.io Documentation
以太坊 crates.io Documentation
艾拉币 crates.io Documentation
Ubiq crates.io Documentation
扩展币 crates.io Documentation
音乐币 crates.io Documentation

预编译合约

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

名称 描述 Crates.io 文档
卫星VM-precompiled-bn128 bn128预编译合约 crates.io Documentation
卫星VM-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:在以太坊经典主网上从创世区块到第400万个区块进行了完整的回归测试。一些之前失败的测试也集成到Rust的测试系统中。有关如何重现回归测试的详细信息,请参阅wiki

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

许可证

Apache 2.0

依赖关系

~9MB
~90K SLoC