65 个版本 (23 个稳定版)

4.3.2 2024年8月16日
4.3.1 2024年6月26日
4.2.0 2024年4月30日
4.1.2 2024年1月31日
0.3.1 2022年3月29日

#132异步

Download history 4411/week @ 2024-05-03 4521/week @ 2024-05-10 3611/week @ 2024-05-17 2684/week @ 2024-05-24 3619/week @ 2024-05-31 3868/week @ 2024-06-07 4224/week @ 2024-06-14 4205/week @ 2024-06-21 3447/week @ 2024-06-28 4746/week @ 2024-07-05 7060/week @ 2024-07-12 4137/week @ 2024-07-19 2986/week @ 2024-07-26 5788/week @ 2024-08-02 3102/week @ 2024-08-09 4191/week @ 2024-08-16

每月17,059次下载
用于 113 个 Crates(110 个直接使用)

MIT/Apache

190KB
4.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 实例 + 沙箱)。
      • Kernel:附加到调用容器的环境,用于外部交互。
    • 系统中存在两个 API 边界
      1. 演员代码和 Kernel 之间的边界,通过调用 Syscalls 进行遍历。
      2. FVM 和主机节点之间的边界,由 Externs 表示。
    • FVM 的某些部分基于 Forest 实现。
  • /sdk
    • 参考SDK实现用于编写Filecoin原生演员,由Actors FVM运行时模拟器通过内置演员使用。
    • 使用Rust编写的用户定义FVM演员也可以使用此SDK,尽管目前它的边缘相当粗糙。在未来几周内,我们预计将优化它以提高开发者体验。
    • 社区中还将出现其他SDK。我们还预计社区团队将开发其他WASM可编译语言(如Swift、Kotlin(使用Kotlin Native)甚至Go(通过TinyGo编译器))的SDK。
  • /shared
    • 存储在FVM和SDK之间的核心类型和原语。
  • /ipld
    • IPLD库。其中一些基于并从Forest实现改编。
  • /testing/conformance
    • 包含测试向量运行程序,以及在其之上运行的基准测试工具。
    • 一致性测试运行程序将位于https://github.com/filecoin-project/fvm-test-vectors的测试向量语料库输入ref-fvm,以验证规范一致性。
    • 基准测试工具使用Rust库criterion来测量ref-fvm在各个方面的性能和开销。
    • 有关如何运行测试和基准测试的说明,请参阅说明
    • 免责声明
      • 基准测试目前运行、设置和拆卸速度非常慢。这是由于使用了默认的WASM缓存,并将很快得到修复。

许可证

双重许可:通过MITApache软件许可协议v2,通过许可许可证堆栈


actors和vm来自ChainSafe/forest的提交:73e8f95a108902c6bef44ee359a8478663844e5b

依赖关系

~3–16MB
~217K SLoC