Introduction #
Filecoin is a distributed storage network based on a blockchain mechanism. Filecoin miners can elect to provide storage capacity for the network, and thereby earn units of the Filecoin cryptocurrency (FIL) by periodically producing cryptographic proofs that certify that they are providing the capacity specified. In addition, Filecoin enables parties to exchange FIL currency through transactions recorded in a shared ledger on the Filecoin blockchain. Rather than using Nakamoto-style proof of work to maintain consensus on the chain, however, Filecoin uses proof of storage itself: a miner’s power in the consensus protocol is proportional to the amount of storage it provides.
The Filecoin blockchain not only maintains the ledger for FIL transactions and accounts, but also implements the Filecoin VM, a replicated state machine which executes a variety of cryptographic contracts and market mechanisms among participants on the network. These contracts include storage deals, in which clients pay FIL currency to miners in exchange for storing the specific file data that the clients request. Via the distributed implementation of the Filecoin VM, storage deals and other contract mechanisms recorded on the chain continue to be processed over time, without requiring further interaction from the original parties (such as the clients who requested the data storage).
Spec Status Overview #
Progress
Consequence
Section | Weight | State | Theory Audit | Compliance Tests |
---|---|---|---|---|
1 Introduction | 0.2 | Incomplete | 0 | N/A |
1.1 Architecture Diagrams | 0.2 | Incomplete | 0 | N/A |
1.2 Key Concepts | 0.2 | Incomplete | 0 | N/A |
1.3 Filecoin VM | 0.2 | Incomplete | 0 | N/A |
1.4 System Decomposition | 0.2 | Incomplete | 0 | N/A |
1.4.1 What are Systems? | 0.2 | Incomplete | 0 | N/A |
1.4.2 Implementing Systems | 0.2 | Incomplete | 0 | N/A |
2 Systems | 1 | WIP | 0 | 0 |
2.1 Filecoin Nodes | 1 | Incomplete | 0 | 0 |
2.1.1 Node Types | 1 | Incomplete | 0 | 0 |
2.1.1.1 Node Interface | 1 | Incomplete | 0 | 0 |
2.1.1.2 Examples | 1 | Incomplete | 0 | 0 |
2.1.1.3 Chain Verifier Node | 1 | Incomplete | 0 | 0 |
2.1.1.4 Client Node | 1 | Incomplete | 0 | 0 |
2.1.1.5 Storage Miner Node | 1 | Incomplete | 0 | 0 |
2.1.1.6 Retrieval Miner Node | 1 | Incomplete | 0 | 0 |
2.1.1.7 Relayer Node | 1 | Incomplete | 0 | 0 |
2.1.2 Repository | 1 | Incomplete | 0 | 0 |
2.1.2.1 Config | 1 | Incomplete | 0 | 0 |
2.1.2.2 Key Store | 1 | Incomplete | 0 | 0 |
2.1.2.3 IPLD Store | 1 | Incomplete | 0 | 0 |
2.1.3 Network Interface | 1 | Incomplete | 0 | 0 |
2.1.4 Clock | 1 | Stable | 0 | 0 |
2.2 Files & Data | 1.5 | WIP | 0 | 0 |
2.2.1 File | 1 | Stable | 0 | 0 |
2.2.1.1 FileStore | 1 | Stable | 0 | 0 |
2.2.2 Piece | 1.5 | Incomplete | 0 | 0 |
2.2.2.1 PieceStore | 1.5 | Incomplete | 0 | 0 |
2.2.3 Data Transfer | 1 | Stable | 0 | 0 |
2.2.4 Formats and Serialization | 1 | Incorrect | 0 | 0 |
2.3 Virtual Machine | 2 | WIP | 0 | 0 |
2.3.1 Actor | 2 | Incomplete | 0 | 0 |
2.3.2 State Tree | 1.5 | Incomplete | 0 | 0 |
2.3.3 Indices | 1 | Incomplete | 0 | 0 |
2.3.4 Message | 1.5 | Incomplete | 0 | 0 |
2.3.5 Runtime | 1 | Incomplete | 0 | 0 |
2.3.5.1 Gas Costs | 1 | Incomplete | 0 | 0 |
2.3.6 System Actors | 2 | Incomplete | 0 | 0 |
2.3.6.1 RewardActor | 2 | Incomplete | 0 | 0 |
2.3.6.2 InitActor | 2 | Incomplete | 0 | 0 |
2.3.6.3 CronActor | 2 | Incomplete | 0 | 0 |
2.3.6.4 AccountActor | 2 | Incomplete | 0 | 0 |
2.3.7 Interpreter | 1 | Incomplete | 0 | 0 |
2.4 Blockchain | 2 | WIP | 0 | 0 |
2.4.1 Blocks | 1.5 | Incorrect | 0 | 0 |
2.4.1.1 Block | 1.5 | Incorrect | 0 | 0 |
2.4.1.2 Tipset | 1.5 | Incorrect | 0 | 0 |
2.4.1.3 Chain | 1.5 | Incorrect | 0 | 0 |
2.4.1.4 Chain Manager | 1.5 | Incorrect | 0 | 0 |
2.4.1.5 Block Producer | 1.5 | Incorrect | 0 | 0 |
2.4.2 Message Pool | 2 | Incorrect | 0 | 0 |
2.4.2.1 Message Syncer | 2 | Incorrect | 0 | 0 |
2.4.2.2 Message Storage | 2 | Incorrect | 0 | 0 |
2.4.3 ChainSync | 2 | Incomplete | 0 | 0 |
2.4.4 Storage Power Consensus | 2 | Incorrect | 0 | 0 |
2.4.4.1 Storage Power Actor | 2 | Incorrect | 0 | 0 |
2.5 Token | 1 | Incorrect | 0 | 0 |
2.5.1 Wallet | 1 | Incorrect | 0 | 0 |
2.5.2 Payment Channels | 1 | Incorrect | 0 | 0 |
2.5.2.1 Payment Channel Actor | 1 | Incorrect | 0 | 0 |
2.5.3 Multisig Wallet | 1 | Incorrect | 0 | 0 |
2.5.3.1 Multisig Actor | 1 | Incorrect | 0 | 0 |
2.6 Storage Mining | 2 | WIP | 0 | 0 |
2.6.1 Storage Miner | 2 | Incomplete | 0 | 0 |
2.6.1.1 Storage Miner Actor | 2 | Incomplete | 0 | 0 |
2.6.1.2 Storage Mining Cycle | 2 | Incomplete | 0 | 0 |
2.6.2 Sector | 2 | Incomplete | 0 | 0 |
2.6.2.1 Sector Lifecycle | 2 | Incomplete | 0 | 0 |
2.6.2.2 Sector PoSting | 2 | Incomplete | 0 | 0 |
2.6.2.3 Sector Sealing | 2 | Incomplete | 0 | 0 |
2.6.2.4 Sector Set | 2 | Incomplete | 0 | 0 |
2.6.3 Sector Index | 1 | WIP | 0 | 0 |
2.6.3.1 Sector Builder | 1 | WIP | 0 | 0 |
2.6.3.2 Sector Store | 1 | WIP | 0 | 0 |
2.6.4 Storage Proving | 1 | Incomplete | 0 | 0 |
2.6.4.1 Sector Poster | 1 | Incomplete | 0 | 0 |
2.6.4.2 Sector Sealer | 1 | Incomplete | 0 | 0 |
2.7 Market | 2 | Incomplete | 0 | 0 |
2.7.1 Storage Market | 2 | Incomplete | 1 | 0 |
2.7.1.1 Storage Deal | 2 | Incomplete | 1 | 0 |
2.7.1.1.1 Deal Flow | 2 | Incomplete | 1 | 0 |
2.7.1.1.2 Deal States | 2 | Incomplete | 1 | 0 |
2.7.1.1.3 Faults | 2 | Incomplete | 1 | 0 |
2.7.1.2 Storage Market Actor | 2 | Incomplete | 1 | 0 |
2.7.1.3 Storage Provider | 2 | Incomplete | 1 | 0 |
2.7.1.4 Storage Client | 2 | Incomplete | 1 | 0 |
2.7.2 Retrieval Market | 2 | Incomplete | 0 | 0 |
2.7.2.1 Retrieval Peer Resolver | 2 | Incomplete | 0 | 0 |
2.7.2.2 Retrieval Protocols | 2 | Incomplete | 0 | 0 |
2.7.2.3 Retrieval Client | 2 | Incomplete | 0 | 0 |
2.7.2.4 Retrieval Provider (Miner) | 2 | Incomplete | 0 | 0 |
3 Libraries | 1.5 | WIP | 0 | 0 |
3.1 FIL Crypto | 1.5 | WIP | 0 | 0 |
3.1.1 FIL Proofs | 1.5 | WIP | 0 | 0 |
3.2 FCS | 1 | Incomplete | 0 | 0 |
3.3 IPLD | 1 | Incomplete | 0 | 0 |
3.3.1 CID | 1 | Incomplete | 0 | 0 |
3.3.2 Data Model | 1 | Incomplete | 0 | 0 |
3.3.3 Selectors | 1 | Incomplete | 0 | 0 |
3.4 libp2p | 1 | Incomplete | 0 | 0 |
3.4.1 DHT | 1 | Incomplete | 0 | 0 |
3.4.2 FIL Libp2p Nodes | 1 | Incomplete | 0 | 0 |
3.4.3 Gossipsub | 1 | Incomplete | 0 | 0 |
3.5 IPFS | 1 | Incomplete | 0 | 0 |
3.5.1 BitSwap | 1 | Incomplete | 0 | 0 |
3.5.2 GraphSync | 1 | Incomplete | 0 | 0 |
3.5.3 UnixFS | 1 | Incomplete | 0 | 0 |
3.6 Multiformats | 1 | Incomplete | 0 | 0 |
4 Algorithms | 2 | WIP | 0 | 0 |
4.1 Expected Consensus | 2 | Incomplete | 1 | 0 |
4.2 Stacked DRG PoRep | 2 | Stable | 1 | 0 |
4.2.1 Notation, Constants, and Types | 2 | Stable | 1 | 0 |
4.3 Proof-of-Replication | 0 | N/A | N/A | |
4.3.1 Stacked DRG PoRep | 0 | N/A | N/A | |
4.3.2 PoRep Commitments | 0 | N/A | N/A | |
4.3.2.1 Stacked DRG Commitments | 0 | N/A | N/A | |
4.3.3 Stacked DRG - Offline PoRep Circuit Spec | 0 | N/A | N/A | |
4.4 Proof-of-Spacetime | 2 | Incorrect | 0 | 0 |
4.4.1 Election PoSt | 2 | Incorrect | 0 | 0 |
4.4.2 PoSt Parameters | 2 | Incorrect | 0 | N/A |
4.5 Payment Channels | 1 | Incorrect | 0 | 0 |
4.6 BlockSync | 1 | WIP | 0 | 0 |
4.7 GossipSub | 1.5 | Incomplete | 0 | 0 |
4.8 Cryptographic Primitives | 2 | Incorrect | 0 | 0 |
4.8.1 Signatures | 2 | Incorrect | 0 | 0 |
4.8.2 Verifiable Random Function | 2 | Incorrect | 0 | 0 |
4.8.3 Randomness | 2 | Incorrect | 0 | 0 |
4.9 Cryptoecon | 2 | Incorrect | 0 | 0 |
5 Listings | 0.2 | Incomplete | 0 | N/A |
5.1 Filecoin VM Actors | 0.2 | Incomplete | 0 | N/A |
5.2 Reserved Ranges | 0.2 | Incomplete | 0 | N/A |
5.3 Data Structures | 0.2 | Incomplete | 0 | N/A |
5.4 Components | 0.2 | Incomplete | 0 | N/A |
5.5 Libp2p Protocols | 0.2 | Incomplete | 0 | N/A |
5.5.1 Data Transfer Protocol | 0.2 | Incomplete | 0 | N/A |
6 Glossary | 0.2 | Incomplete | 0 | N/A |
7 Appendix | 0.2 | Incomplete | 0 | N/A |
7.1 Sharded IPLD Array | 0.2 | Incomplete | 0 | N/A |
7.2 Address | 0.2 | Incomplete | 0 | N/A |
7.3 Filecoin Parameters | 0.2 | Incomplete | 0 | N/A |
Implementations Status #
Implementation | Test Coverage | Compliance Tests | Audit | CI |
---|---|---|---|---|
Lotus | 31% | 0 | 0 | |
Filecoin (go-filecoin) | 48% | 0 | 0 | |
Forest | N/A | 0 | 0 | |
Fuhon (cpp-filecoin) | 35% | 0 | 0 |