Part of #87 (Full Node epic). Research track, multi-month, high risk — not scheduled yet.
Replace the filecoin-ffi FVM (TipSetState / message re-execution) with a pure-Go implementation, removing Rust dependency #2. This is what turns the F3-anchored full node into a trustless re-executing full node in pure Go on a Mac mini.
The tech
- ref-fvm = a Rust crate embedding wasmtime to run the builtin actors (compiled to WASM).
- Pure-Go path: wazero (tetratelabs) — a production-grade, CGo-free, pure-Go WASM runtime — runs the actor WASM.
Why it's the hard one
The actors need ref-fvm's full hostcall surface (IPLD state get/put, crypto syscalls, randomness, send/invoke semantics, exit/revert) and gas metering matched byte-and-gas-exact to the network. A gas mismatch of one unit = a different state root = fork off the network. Porting = re-implementing ref-fvm's host environment in Go with exact fidelity + vector matching.
Tasks (research spike first)
Part of #87 (Full Node epic). Research track, multi-month, high risk — not scheduled yet.
Replace the
filecoin-ffiFVM (TipSetState/ message re-execution) with a pure-Go implementation, removing Rust dependency #2. This is what turns the F3-anchored full node into a trustless re-executing full node in pure Go on a Mac mini.The tech
Why it's the hard one
The actors need ref-fvm's full hostcall surface (IPLD state get/put, crypto syscalls, randomness, send/invoke semantics, exit/revert) and gas metering matched byte-and-gas-exact to the network. A gas mismatch of one unit = a different state root = fork off the network. Porting = re-implementing ref-fvm's host environment in Go with exact fidelity + vector matching.
Tasks (research spike first)