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
8,502 每月下载量
在 121 个 crate 中使用 (69 个直接使用)
13KB
308 行
参考 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 实例 + 沙盒)。
Kernel
:附加到调用容器的环境,用于外部交互。
- 系统中有两个 API 边界
- 演员代码与 Kernel 之间的边界,通过调用
Syscalls
进行遍历。 - FVM 与主机节点之间的边界,由
Externs
表示。
- 演员代码与 Kernel 之间的边界,通过调用
- Filecoin虚拟机(FVM)的一些部分基于Forest的实现。
- Filecoin 虚拟机的核心。关键概念包括
/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缓存,并将很快得到修复。
许可证
双许可证:通过MIT、Apache软件许可证v2,由许可许可证栈。
演员和虚拟机是从ChainSafe/forest的提交73e8f95a108902c6bef44ee359a8478663844e5b
分叉的。
依赖关系
~1.3–2.1MB
~40K SLoC