Reference implementation of the Filecoin Virtual Machine
See the codeThis repository contains the reference implementation of the Filecoin VM (specs). It is written in Rust, and intended to be integrated via FFI into non-Rust clients (e.g. Lotus, Fuhon), or directly into Rust clients (e.g. Forest). FFI bindings for Go are provided in-repo, and developers are encouraged to contribute bindings for other languages.
See the Project Website for details.
$ git clone https://github.com/filecoin-project/ref-fvm.git
$ cd ref-fvm
$ make
Here's what you'll find in each directory:
/fvm
Machine: an instantiation of the machine, anchored at a specific state root and epoch, ready to intake messages to be applied.Executor: an object to execute messages on a Machine.CallManager: tracks and manages the call stack for a given message.Kernel: the environment attached to an invocation container for external interactions.Syscalls.Externs./sdk
/shared
/ipld
/testing/conformance
criterion Rust library to measure the performance and overhead of ref-fvm across various facets.At least of 202409, ref-fvm follows this versioning scheme:
Below is the mapping between ref-fvm versions and the network upgrade versions they support:
| FVM Version | Supported Network Version Range | Source |
|---|---|---|
| v2 | 15-17 | https://github.com/filecoin-project/ref-fvm/blob/release/v2/fvm/src/machine/default.rs#L64 |
| v3 | 18-20 | https://github.com/filecoin-project/ref-fvm/blob/release/v3/fvm/src/machine/default.rs#L63 |
| v4 | 21+ | https://github.com/filecoin-project/ref-fvm/blob/master/fvm/src/machine/default.rs#L55 |
These are relevant issues/discussions about changing FVM versioning:
Dual-licensed: MIT, Apache Software License v2, by way of the Permissive License Stack.
actors and vm forked from ChainSafe/forest
commit: 73e8f95a108902c6bef44ee359a8478663844e5b
Rust
94.3%
Solidity
4.6%
Reference implementation of the Filecoin Virtual Machine
See the codeThis repository contains the reference implementation of the Filecoin VM (specs). It is written in Rust, and intended to be integrated via FFI into non-Rust clients (e.g. Lotus, Fuhon), or directly into Rust clients (e.g. Forest). FFI bindings for Go are provided in-repo, and developers are encouraged to contribute bindings for other languages.
See the Project Website for details.
$ git clone https://github.com/filecoin-project/ref-fvm.git
$ cd ref-fvm
$ make
Here's what you'll find in each directory:
/fvm
Machine: an instantiation of the machine, anchored at a specific state root and epoch, ready to intake messages to be applied.Executor: an object to execute messages on a Machine.CallManager: tracks and manages the call stack for a given message.Kernel: the environment attached to an invocation container for external interactions.Syscalls.Externs./sdk
/shared
/ipld
/testing/conformance
criterion Rust library to measure the performance and overhead of ref-fvm across various facets.At least of 202409, ref-fvm follows this versioning scheme:
Below is the mapping between ref-fvm versions and the network upgrade versions they support:
| FVM Version | Supported Network Version Range | Source |
|---|---|---|
| v2 | 15-17 | https://github.com/filecoin-project/ref-fvm/blob/release/v2/fvm/src/machine/default.rs#L64 |
| v3 | 18-20 | https://github.com/filecoin-project/ref-fvm/blob/release/v3/fvm/src/machine/default.rs#L63 |
| v4 | 21+ | https://github.com/filecoin-project/ref-fvm/blob/master/fvm/src/machine/default.rs#L55 |
These are relevant issues/discussions about changing FVM versioning:
Dual-licensed: MIT, Apache Software License v2, by way of the Permissive License Stack.
actors and vm forked from ChainSafe/forest
commit: 73e8f95a108902c6bef44ee359a8478663844e5b
Rust
94.3%
Solidity
4.6%