10 个不稳定版本 (3 个重大更改)
0.4.0 | 2023年6月28日 |
---|---|
0.3.3 | 2023年1月19日 |
0.3.2 | 2022年12月18日 |
0.3.0 | 2022年10月12日 |
0.2.2 | 2022年6月14日 |
#2932 在 魔法豆
7,796 每月下载量
在 120 个 crate 中使用 (110 个直接使用)
44KB
1K SLoC
Filecoin VM 实现(v4;开发版)参考
此仓库包含 Filecoin VM(规范)的参考实现。它用 Rust 编写,旨在通过 FFI 集成到非 Rust 客户端(例如 Lotus、Fuhon),或直接集成到 Rust 客户端(例如 Forest)。仓库内提供了 Go 的 FFI 绑定,并鼓励开发者为其他语言贡献绑定。
有关详细信息,请参阅 项目网站。
构建要求
- 安装 rustup。
构建说明
$ git clone https://github.com/filecoin-project/ref-fvm.git
$ cd ref-fvm
$ make
代码结构
以下是每个目录中的内容
/fvm
- Filecoin 虚拟机的核心。关键概念包括
Machine
:机器的实例化,锚定在特定的状态根和纪元上,准备接收要应用的消息。Executor
:在Machine
上执行消息的对象。CallManager
:跟踪和管理给定消息的调用栈。- 调用容器(概念层,代码中不明确出现):在调用栈中运行的特定演员的WASM实例及其沙箱。
内核
:与调用容器相关联的环境,用于外部交互。
- 系统中存在两个API边界
- 演员代码与内核之间的边界,通过调用
Syscalls
穿越。 - FVM与主机节点之间的边界,由
Externs
表示。
- 演员代码与内核之间的边界,通过调用
- FVM的一些部分基于Forest实现。
- Filecoin 虚拟机的核心。关键概念包括
/sdk
- 参考SDK实现,用于编写Filecoin本地演员,通过Actors 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缓存,并将很快得到修复。
许可证
双许可:MIT,Apache软件许可协议v2,通过许可许可栈。
actors和vm是从ChainSafe/forest的提交73e8f95a108902c6bef44ee359a8478663844e5b
分叉的。
依赖项
~2–2.7MB
~53K SLoC