#virtual-machine #sputnik-vm #pre-compiled #contracts #blockchain #ethereum #bn128

no-std sputnikvm-precompiled-bn128

SputnikVM 的 bn128 预编译合约

3 个不稳定版本

使用旧的 Rust 2015

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

#4 in #sputnik-vm

Download history 84/week @ 2024-04-07 227/week @ 2024-04-14 165/week @ 2024-04-21 64/week @ 2024-04-28 159/week @ 2024-05-05 100/week @ 2024-05-12 101/week @ 2024-05-19 27/week @ 2024-05-26 21/week @ 2024-06-02 10/week @ 2024-06-09 32/week @ 2024-06-16 70/week @ 2024-06-23 49/week @ 2024-06-30 51/week @ 2024-07-14 88/week @ 2024-07-21

188 每月下载次数
用于 5 crates

Apache-2.0

225KB
4.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 治理项目,该项目治理每个区块链 VM 的参数。这样我们可以从社区的经验中学习,并从其他提出的 RFC 中汲取教训。

特性

  • 独立 - 可以作为一个独立进程启动,也可以集成到其他应用程序中
  • 通用 - 支持不同的 Ethereum 链,如 ETC、ETH 或私有链
  • 无状态 - 仅一个连接到独立状态存储的执行环境
  • 快速 - 主要关注性能
  • 适用于物联网 - 设计用于支持嵌入式设备中使用的硬件
  • 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

预编译合约

核心库嵌入初始四个预编译合约。要使用 Byzantium 硬分叉引入的 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 的更多信息,请阅读构建和测试wiki 页面

许可证

Apache 2.0

依赖项

~5.5MB
~38K SLoC