5 个版本

0.2.1 2024年4月30日
0.2.0 2023年6月28日
0.1.2 2023年5月3日
0.1.1 2022年5月16日
0.1.0 2022年4月4日

#8#sharded

Download history 1694/week @ 2024-04-30 2105/week @ 2024-05-07 1784/week @ 2024-05-14 1858/week @ 2024-05-21 1585/week @ 2024-05-28 2039/week @ 2024-06-04 1737/week @ 2024-06-11 2217/week @ 2024-06-18 1840/week @ 2024-06-25 1901/week @ 2024-07-02 2406/week @ 2024-07-09 3017/week @ 2024-07-16 1666/week @ 2024-07-23 2129/week @ 2024-07-30 2351/week @ 2024-08-06 1972/week @ 2024-08-13

8,502 每月下载量
121 crate 中使用 (69 个直接使用)

MIT/Apache

13KB
308

参考 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 表示。
    • Filecoin虚拟机(FVM)的一些部分基于Forest的实现。
  • /sdk
    • SDK的引用实现,用于编写Filecoin原生演员,通过演员FVM运行时模拟器被内置演员所使用。
    • 用Rust编写的用户定义FVM演员也可以使用此SDK,尽管目前边缘处理相当粗糙。在接下来的几周内,我们预计会优化它以改善开发者体验。
    • 社区中还将出现其他SDK。我们也期待社区团队在其他WASM编译语言中开发SDK,例如Swift、Kotlin(使用Kotlin Native)以及Go(通过TinyGo编译器)。
  • /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,由许可许可证栈


演员和虚拟机是从ChainSafe/forest的提交73e8f95a108902c6bef44ee359a8478663844e5b分叉的。

依赖关系

~1.3–2.1MB
~40K SLoC