The Filecoin Virtual Machine (FVM) is a runtime environment for smart contracts (also called actors) on the Filecoin network. FVM brings user programmability to Filecoin, unleashing the enormous potential of an open data economy.
If you are looking for ideas on what to build, we have worked with both internal and external teams to learn what they are excited to see on FVM.
The FVM unlocks boundless possibilities, ranging from dataDAOs, to perpetual storage, to financial services for storage providers (e.g. collateral lending, liquid staking, insurance protocols), to decentralized compute and Layer 2 networks (such as reputation systems, and incentive-aligned content delivery networks, and more.
Bring your project to FVM and build alongside a large cohort of builders, with supporting business and technical resources, to deploy the first batch of value-generating applications to the Filecoin mainnet!
/// A Filecoin actor brokering decentralized compute jobs./// For illustration purposes only.#[fvm_actor(state=ComputeState, dispatch="method_num")]impl ComputeActor {/// Creates a job with an input DAG, WASM compute logic,/// data affinity, geographical bounds, and timeout.pub fn create_job(req: CreateJobReq, st: ComputeState)-> CreateJobRes { ... }/// Allows a compute node to claim a job by proving it/// satisfies the requirements and staking collateral.pub fn claim_job(req: ClaimJobReq, st: ComputeState)-> ClaimJobRes { ... }/// Proves that a compute node finished running a job,/// posts the result, and claims the reward.pub fn prove_done(req: ProveDoneReq, st: ComputeState)-> ProveDoneRes { ... }}
The FVM is a WASM-based polyglot execution environment for IPLD data. It is designed to support native Filecoin actors written in languages that compile to WASM, as well as smart contracts written for foreign runtimes including the Ethereum Virtual Machine (EVM), Secure EcmaScript (SES), and eBPF.
The initial version of the FVM is relatively simple and deliberately conservative in features. This enables developers onboard quickly, and serves as a rock-solid foundation for many innovations to come.
Examples of future ideas include: async programming via continuations/futures, capability-orientation, time-locked transactions (using external beacons), parallel execution, native primitives for cross-chain interoperability, computation correctness proofs, and more.
The reference FVM and SDK are written in Rust. If you'd like to contribute, explore ideas, or build alternative implementations in other languages, please reach out.
The reference FVM implementation has been integrated into a fork of Lotus (the Filecoin reference client). A fleet of canary nodes have been launched on mainnet, running WASM-compiled built-in actors on the FVM.
Mainnet will atomically switch from the current legacy VMs to the WASM-based reference FVM. A new gas model will be activated that accounts for actual WASM execution costs. Only Rust built-in actors will be supported at this time.
The Filecoin network will become user-programmable for the first time. Developers will be able to deploy smart contracts written in Solidity, and compiled to EVM. Smart contracts will be able to access Filecoin functionality by invoking built-in actors. Existing Ethereum tooling will be compatible with Filecoin.
The Filecoin EVM runtime is deployed on Filecoin mainnet via the Filecoin nv18 Hygge upgrade.
Foundational FVM changes that will improve overall safety and security to unblock FVM WASM runtimes and WASM actors on mainnet
FVM will become less coupled with Filecoin. This will be a first step to make it configurable as a generic runtime.
Developers will be able to deploy custom smart contracts written in Rust, AssemblyScript, or Go, and compiled to WASM bytecode. SDKs, tutorials, and other developer materials will be generally available. This milestone requires a network upgrade.
A series of additional incremental protocol upgrades (besides nv17) to move system functionality from privileged space to user space. The result will be a lighter and less opinionated base Filecoin protocol, where storage markets, deal-making, incentives, etc. are extensible, modular, and highly customizable through user-deployed actors. Enhanced programming features such as user-provided cron, async call patterns, and more will start to be developed at this stage.
100 days ago, on March 14, 2023, the Filecoin network introduced the first programmable runtime on the Filecoin Virtual Machine and became programmable.
Jun 22, 2023In this blog post, you’ll find an overview of developer tools that will help you get started on your journey building with FVM.
Apr 13, 2023The launch of FVM on March 14, 2023 revolutionized the existing Filecoin ecosystem, unleashing the full potential of the open data economy. Below is a highlight of the projects that are building cross-chain interoperability on top of the Filecoin Virtual Machine.
Mar 23, 2023Now that the Filecoin Virtual Machine (FVM) is officially live on Filecoin mainnet, the community is excited to announce a refreshed Filecoin bug bounty program, featuring increased rewards up to 500k USD for critical issues and inclusion of programmability features in scope.
Mar 17, 2023The launch of FVM on March 14, 2023 will revolutionize the existing Filecoin ecosystem, unleashing the full potential of the open data economy. Below is a highlight the projects that are building DeFi lending protocols on top of the Filecoin Virtual Machine.
Mar 16, 2023Today, the Filecoin community is proud to announce the successful launch of the Filecoin Virtual Machine (FVM). As of epoch 2,683,348 (or 3.14PM UTC on March 14), the Filecoin blockchain now supports smart contracts and user programmability via the Filecoin Virtual Machine, unlocking the enormous potential of an open data economy.
Mar 14, 2023