62个版本 (17个稳定版本)

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.0 2022年3月29日

#529 in 神奇豆

Download history 1898/week @ 2024-05-01 1386/week @ 2024-05-08 1289/week @ 2024-05-15 1234/week @ 2024-05-22 1063/week @ 2024-05-29 1687/week @ 2024-06-05 1479/week @ 2024-06-12 1749/week @ 2024-06-19 1197/week @ 2024-06-26 1286/week @ 2024-07-03 1947/week @ 2024-07-10 2031/week @ 2024-07-17 896/week @ 2024-07-24 1197/week @ 2024-07-31 1037/week @ 2024-08-07 1149/week @ 2024-08-14

每月下载量4,543
45 个crate中使用 (10个直接使用)

MIT/Apache

275KB
5.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运行时shim被规范内置演员使用。
    • 用Rust编写的用户定义的FVM演员也可以使用此SDK,尽管目前边缘相当粗糙。在未来几周内,我们预计将使其更加甜蜜,以改善开发者体验。
    • 社区中还将出现其他SDK。我们也预计社区团队将使用Swift、Kotlin(使用Kotlin Native)甚至Go(通过TinyGo编译器)等其他WASM可编译语言开发SDK。
  • /shared
    • 共享FVM和SDK之间的核心类型和原语crate。
  • /ipld
    • IPLD库。其中一些基于并从Forest实现中改编。
  • /testing/conformance
    • 包含测试向量运行程序,以及其上的基准测试工具。
    • 一致性测试运行程序将位于https://github.com/filecoin-project/fvm-test-vectors的测试向量语料库输入到ref-fvm中,以验证规范一致性。
    • 基准测试工具使用criterion Rust库来衡量ref-fvm在不同方面的性能和开销。
    • 有关如何运行测试和基准测试的说明,请参阅说明
    • 免责声明
      • 基准测试目前运行速度非常慢,设置和拆卸。这是由于使用了默认WASM缓存,并将很快得到修复。

许可证

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


actors和vm从ChainSafe/forest提交分支:73e8f95a108902c6bef44ee359a8478663844e5b

依赖项

~2.3–3.5MB
~66K SLoC