80个版本 (32个稳定版)

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

#1347 in 魔法豆

Download history 2611/week @ 2024-04-26 2713/week @ 2024-05-03 3532/week @ 2024-05-10 2330/week @ 2024-05-17 1659/week @ 2024-05-24 2814/week @ 2024-05-31 3041/week @ 2024-06-07 3196/week @ 2024-06-14 2929/week @ 2024-06-21 2766/week @ 2024-06-28 4069/week @ 2024-07-05 5914/week @ 2024-07-12 3166/week @ 2024-07-19 2361/week @ 2024-07-26 4988/week @ 2024-08-02 1897/week @ 2024-08-09

13,560 每月下载量
6 个crate中使用 (4个直接使用)

MIT/Apache

770KB
17K 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,通过Actors FVM运行时shim被内置actors使用。
    • 使用Rust编写的用户定义FVM actors也可以使用此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


lib.rs:

(正确的包文档即将推出;目前这是一个必须提及的项目暂存库)。

日志记录

此包使用日志外观发出日志。在消费应用程序初始化期间配置您选择的日志后端。

依赖关系

~54MB
~1M SLoC