9 个版本 (破坏性)

0.7.1 2023 年 9 月 6 日
0.7.0 2023 年 6 月 28 日
0.6.0 2022 年 10 月 12 日
0.5.0 2022 年 8 月 5 日
0.1.0 2022 年 3 月 2 日

#58模拟器

Download history 1417/week @ 2024-03-13 815/week @ 2024-03-20 579/week @ 2024-03-27 689/week @ 2024-04-03 446/week @ 2024-04-10 220/week @ 2024-04-17 148/week @ 2024-04-24 249/week @ 2024-05-01 277/week @ 2024-05-08 274/week @ 2024-05-15 441/week @ 2024-05-22 337/week @ 2024-05-29 534/week @ 2024-06-05 538/week @ 2024-06-12 465/week @ 2024-06-19 220/week @ 2024-06-26

1,831 每月下载量
用于 5 个包 (直接)

MIT/Apache

56KB
1.5K SLoC

参考 Filecoin 虚拟机实现(v4;开发版)

Continuous integration

此存储库包含 Filecoin 虚拟机的参考实现(规范)。它用 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. 演员代码和内核之间的边界,通过调用 Syscalls 跨越。
      2. FVM 和主机节点之间的边界,由 Externs 表示。
    • FVM 的某些部分基于 Forest 实现。
  • /sdk
    • 参考SDK实现以编写Filecoin原生演员,由标准内置演员通过Actors 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中,以验证规范一致性。
    • 基准测试工具使用Rust库criterion来衡量ref-fvm在各种方面的性能和开销。
    • 有关如何运行测试和基准测试的说明,请参阅说明
    • 免责声明
      • 基准测试的运行、设置和拆除目前非常缓慢,这是由于使用了默认的WASM缓存,将会很快修复。

许可证

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


actors和vm分叉自ChainSafe/forest提交:73e8f95a108902c6bef44ee359a8478663844e5b

依赖项

~2.5–3.5MB
~68K SLoC