All Projects → filecoin-project → ref-fvm

filecoin-project / ref-fvm

Licence: Unknown, MIT licenses found Licenses found Unknown LICENSE-APACHE MIT LICENSE-MIT
Reference implementation of the Filecoin Virtual Machine

Programming Languages

rust
11053 projects
shell
77523 projects
Makefile
30231 projects
scheme
763 projects
Gnuplot
187 projects
solidity
1140 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to ref-fvm

nebula-crawler
🌌 A libp2p DHT crawler, monitor, and measurement tool that exposes timely information about DHT networks.
Stars: ✭ 97 (-61.96%)
Mutual labels:  filecoin
filecoin-client
Golang的轻量级filecoin客户端,支持离线签名,基本满足钱包交易所充值提现逻辑
Stars: ✭ 50 (-80.39%)
Mutual labels:  filecoin
add-to-web3
⁂ Github Action to upload your website to web3.storage
Stars: ✭ 22 (-91.37%)
Mutual labels:  filecoin
digital-copyright
Stamp your code with a trackable digital copyright
Stars: ✭ 17 (-93.33%)
Mutual labels:  filecoin
filsnap
MetaMask snap for interacting with Filecoin dapps.
Stars: ✭ 60 (-76.47%)
Mutual labels:  filecoin
js-filecoin-api-client
An API client for Filecoin
Stars: ✭ 45 (-82.35%)
Mutual labels:  filecoin
estuary
A custom IPFS/Filecoin node that makes it easy to pin IPFS content and make Filecoin deals.
Stars: ✭ 195 (-23.53%)
Mutual labels:  filecoin
Venus
Filecoin Full Node Implementation in Go
Stars: ✭ 1,901 (+645.49%)
Mutual labels:  filecoin
research
distributed system;blokchain;filecoin/ipfs,...
Stars: ✭ 39 (-84.71%)
Mutual labels:  filecoin
borg
Client-server stack for Web3! Turn your Raspberry Pi to a BAS server in minutes and enjoy the freedom of decentralized Web with a superior user experience!
Stars: ✭ 25 (-90.2%)
Mutual labels:  filecoin
filecoin-sealer-recover
Filecoin sector recover
Stars: ✭ 51 (-80%)
Mutual labels:  filecoin
pop
Run a point-of-presence within Myel, the community powered content delivery network.
Stars: ✭ 28 (-89.02%)
Mutual labels:  filecoin
cpp-filecoin
C++17 implementation of Filecoin
Stars: ✭ 116 (-54.51%)
Mutual labels:  filecoin
kotal
Blockchain Kubernetes Operator
Stars: ✭ 137 (-46.27%)
Mutual labels:  filecoin
nft-website
NFT School: Community education platform for developers in the non-fungible token space.
Stars: ✭ 260 (+1.96%)
Mutual labels:  filecoin
bidbot
A Filecoin Network sidecar for storage providers to bid in storage deal auctions.
Stars: ✭ 31 (-87.84%)
Mutual labels:  filecoin
java-filecoin-api-client
An API client for Filecoin implemented in Java
Stars: ✭ 38 (-85.1%)
Mutual labels:  filecoin
filecoin-docs
Filecoin Docs
Stars: ✭ 183 (-28.24%)
Mutual labels:  filecoin
nft.storage
😋 Free decentralized storage and bandwidth for NFTs on IPFS and Filecoin.
Stars: ✭ 309 (+21.18%)
Mutual labels:  filecoin
lotus-ops
Filecoin cluster deploy ansible playbook and shell scripts.
Stars: ✭ 33 (-87.06%)
Mutual labels:  filecoin

Reference Filecoin VM implementation (v2; dev)

Continuous integration

This 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.

Build requirements

  • The current MSRV (Minimum Supported Rust Version) is 1.58.1 (stable). A working version is tracked in rust-toolchain (this is picked up by rustup automatically).
  • Install rustup.

Build instructions

$ git clone https://github.com/filecoin-project/ref-fvm.git
$ cd fvm
$ rustup target add wasm32-unknown-unknown
$ make

Code structure

Here's what you'll find in each directory:

  • /fvm
    • The core of the Filecoin Virtual Machine. The key concepts are:
      • 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.
      • Invocation container (conceptual layer, not explicitly appearing in code): the WASM instance + sandbox under which a given actor in the call stack runs.
      • Kernel: the environment attached to an invocation container for external interactions.
    • There are two API boundaries in the system:
      1. the boundary between the actor code and the Kernel, which is traversed by invoking Syscalls.
      2. the boundary between the FVM and the host node, represented by Externs.
    • Some parts of the FVM are based on the Forest implementation.
  • /sdk
    • Reference SDK implementation to write Filecoin native actors, used by the canonical built-in actors through the Actors FVM Runtime shim.
    • User-defined FVM actors written in Rust can also use this SDK, although it is currently quite rough around the edges. In the next weeks, we expect to sweeten it for improved developer experience.
    • Alternative SDKs will emerge in the community. We also expect community teams to develop SDKs in other WASM-compilable languages such as Swift, Kotlin (using Kotlin Native), and even Go (via the TinyGo compiler).
  • /shared
    • A crate of core types and primitives shared between the FVM and the SDK.
  • /ipld
    • IPLD libraries. Some of which are based on, and adapted from, the Forest implementation.
  • /testing/conformance
    • Contains the test vector runner, as well as benchmarking utilities on top of it.
    • The conformance test runner feeds the test vector corpus located at https://github.com/filecoin-project/fvm-test-vectors into ref-fvm, in order to validate spec conformance.
    • The benchmarking utilities use the criterion Rust library to measure the performance and overhead of ref-fvm across various facets.
    • See the instructions about how to run the tests and the benchmarks.
    • Disclaimers
      • Benchmarks are currently very slow to run, setup and teardown. This is due to using default WASM cache, and will be fixed soon.

Maturity roadmap

v1: FVM running built-in actors (Milestone 1 of the FVM development roadmap)

  • Alpha:
    • Declared when: all test vectors passing, integrated into Lotus via FFI.
    • Focus: theoretical correctness.
  • Beta:
    • Declared when: all the above + syncing mainnet consistently, keeping up with chain consistently, i.e. when Phase 0 from the FVM milestone roadmap is reached.
    • Focus: production-readiness, performance, live consensus correctness.
  • RC:
    • Declared when: all the above + integrated into a second client (likely Forest), successfully syncing mainnet on all.
    • Focus: pre-mainnet preparations.
  • Final:

v2: Fully-programmable FVM (Milestone 2 of the FVM development roadmap)

  • Alpha:
    • Declared when: all functionality implemented, 70%+ test coverage, integrated into Lotus via FFI.
    • Focus: feature completeness.
  • Beta:
    • Declared when: testnets deployed (user and automatic), running successfully for 1 week.
    • Focus: testing and hardening.
  • RC:
    • Declared when: code audited; network-upgrade releases ready for all Filecoin clients.
    • Focus: pre-mainnet preparations.
  • Final:

License

Dual-licensed: MIT, Apache Software License v2, by way of the Permissive License Stack.


actors and vm forked from ChainSafe/forest commit: 73e8f95a108902c6bef44ee359a8478663844e5b

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].