11 个不稳定版本

0.6.2 2023 年 9 月 28 日
0.6.1 2023 年 7 月 11 日
0.6.0 2023 年 6 月 28 日
0.5.1 2023 年 1 月 14 日
0.3.0 2022 年 3 月 29 日

#1664神奇豆子

Download history 3224/week @ 2024-03-14 2316/week @ 2024-03-21 1943/week @ 2024-03-28 2830/week @ 2024-04-04 2871/week @ 2024-04-11 2317/week @ 2024-04-18 1202/week @ 2024-04-25 1600/week @ 2024-05-02 1613/week @ 2024-05-09 1559/week @ 2024-05-16 1330/week @ 2024-05-23 1337/week @ 2024-05-30 1757/week @ 2024-06-06 1615/week @ 2024-06-13 1843/week @ 2024-06-20 908/week @ 2024-06-27

6,502 每月下载量
用于 80 个 crate (17 个直接使用)

MIT/Apache

110KB
2.5K SLoC

参考 Filecoin VM 实现 (v4; 开发版)

Continuous integration

此仓库包含 Filecoin VM 的参考实现(规范)。它使用 Rust 编写,旨在通过 FFI 集成到非 Rust 客户端(例如 Lotus、Fuhon)或直接集成到 Rust 客户端(例如 Forest)。仓库内提供了 Go 的 FFI 绑定,并鼓励开发者为其他语言贡献绑定。

有关详细信息,请参阅 项目网站

构建要求

构建说明

$ git clone https://github.com/filecoin-project/ref-fvm.git
$ cd ref-fvm
$ make

代码结构

以下是每个目录中包含的内容

  • /fvm
    • Filecoin 虚拟机的核心。关键概念包括
      • Machine:机器的实例化,锚定在特定的状态根和纪元,准备接收要应用的消息。
      • Executor:在 Machine 上执行消息的对象。
      • CallManager:跟踪和管理给定消息的调用栈。
      • 调用容器(概念层,代码中未明确出现):在调用栈中运行的特定演员的 WASM 实例 + 沙盒。
      • 内核:与调用容器外部交互相关联的环境。
    • 系统中存在两个API边界
      1. 演员代码和内核之间的边界,通过调用系统调用进行遍历。
      2. FVM和主机节点之间的边界,由Externs表示。
    • FVM的一些部分基于Forest实现。
  • /sdk
    • 参考SDK实现,用于编写Filecoin原生演员,通过演员FVM运行时模拟器由标准内置演员使用。
    • 用Rust编写的用户定义FVM演员也可以使用此SDK,尽管目前它的边缘相当粗糙。在未来几周内,我们预计会使其更加完善,以改善开发者的体验。
    • 社区中还将出现其他SDK。我们还预计社区团队将在Swift、Kotlin(使用Kotlin Native)甚至Go(通过TinyGo编译器)等WASM可编译的语言中开发SDK。
  • /shared
    • 共享在FVM和SDK之间的核心类型和原语。
  • /ipld
    • IPLD库。其中一些基于并改编自Forest实现。
  • /testing/conformance
    • 包含测试向量运行程序,以及在其之上的基准测试工具。
    • 一致性测试运行程序将位于https://github.com/filecoin-project/fvm-test-vectors的测试向量语料库输入到ref-fvm中,以验证规范一致性。
    • 基准测试工具使用criterion Rust库来衡量ref-fvm在各个方面的性能和开销。
    • 有关如何运行测试和基准测试的说明,请参阅说明
    • 免责声明
      • 基准测试的运行、设置和拆除目前非常慢,这是由于使用了默认的WASM缓存,并将很快得到修复。

许可证

双重许可:通过MITApache软件许可证v2,由宽松许可证堆栈授权。


ChainSafe/forest分叉的演员和vm:73e8f95a108902c6bef44ee359a8478663844e5b


lib.rs:

用于作为rust IPLD数据结构的AMT crate

数据结构参考:https://github.com/ipld/specs/blob/51fab05b4fe4930d3d851d50cc1e5f1a02092deb/data-structures/vector.md

依赖关系

~4MB
~79K SLoC