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 #




SectionWeightStateTheory AuditCompliance Tests
1 Introduction0.2Incomplete0N/A
1.1 Architecture Diagrams0.2Incomplete0N/A
1.2 Key Concepts0.2Incomplete0N/A
1.3 Filecoin VM0.2Incomplete0N/A
1.4 System Decomposition0.2Incomplete0N/A
1.4.1 What are Systems?0.2Incomplete0N/A
1.4.2 Implementing Systems0.2Incomplete0N/A
2 Systems1WIP00
2.1 Filecoin Nodes1Incomplete00
2.1.1 Node Types1Incomplete00 Node Interface1Incomplete00 Examples1Incomplete00 Chain Verifier Node1Incomplete00 Client Node1Incomplete00 Storage Miner Node1Incomplete00 Retrieval Miner Node1Incomplete00 Relayer Node1Incomplete00
2.1.2 Repository1Incomplete00 Config1Incomplete00 Key Store1Incomplete00 IPLD Store1Incomplete00
2.1.3 Network Interface1Incomplete00
2.1.4 Clock1Stable00
2.2 Files & Data1.5WIP00
2.2.1 File1Stable00 FileStore1Stable00
2.2.2 Piece1.5Incomplete00 PieceStore1.5Incomplete00
2.2.3 Data Transfer1Stable00
2.2.4 Formats and Serialization1Incorrect00
2.3 Virtual Machine2WIP00
2.3.1 Actor2Incomplete00
2.3.2 State Tree1.5Incomplete00
2.3.3 Indices1Incomplete00
2.3.4 Message1.5Incomplete00
2.3.5 Runtime1Incomplete00 Gas Costs1Incomplete00
2.3.6 System Actors2Incomplete00 RewardActor2Incomplete00 InitActor2Incomplete00 CronActor2Incomplete00 AccountActor2Incomplete00
2.3.7 Interpreter1Incomplete00
2.4 Blockchain2WIP00
2.4.1 Blocks1.5Incorrect00 Block1.5Incorrect00 Tipset1.5Incorrect00 Chain1.5Incorrect00 Chain Manager1.5Incorrect00 Block Producer1.5Incorrect00
2.4.2 Message Pool2Incorrect00 Message Syncer2Incorrect00 Message Storage2Incorrect00
2.4.3 ChainSync2Incomplete00
2.4.4 Storage Power Consensus2Incorrect00 Storage Power Actor2Incorrect00
2.5 Token1Incorrect00
2.5.1 Wallet1Incorrect00
2.5.2 Payment Channels1Incorrect00 Payment Channel Actor1Incorrect00
2.5.3 Multisig Wallet1Incorrect00 Multisig Actor1Incorrect00
2.6 Storage Mining2WIP00
2.6.1 Storage Miner2Incomplete00 Storage Miner Actor2Incomplete00 Storage Mining Cycle2Incomplete00
2.6.2 Sector2Incomplete00 Sector Lifecycle2Incomplete00 Sector PoSting2Incomplete00 Sector Sealing2Incomplete00 Sector Set2Incomplete00
2.6.3 Sector Index1WIP00 Sector Builder1WIP00 Sector Store1WIP00
2.6.4 Storage Proving1Incomplete00 Sector Poster1Incomplete00 Sector Sealer1Incomplete00
2.7 Market2Incomplete00
2.7.1 Storage Market2Incomplete10 Storage Deal2Incomplete10 Deal Flow2Incomplete10 Deal States2Incomplete10 Faults2Incomplete10 Storage Market Actor2Incomplete10 Storage Provider2Incomplete10 Storage Client2Incomplete10
2.7.2 Retrieval Market2Incomplete00 Retrieval Peer Resolver2Incomplete00 Retrieval Protocols2Incomplete00 Retrieval Client2Incomplete00 Retrieval Provider (Miner)2Incomplete00
3 Libraries1.5WIP00
3.1 FIL Crypto1.5WIP00
3.1.1 FIL Proofs1.5WIP00
3.2 FCS1Incomplete00
3.3 IPLD1Incomplete00
3.3.1 CID1Incomplete00
3.3.2 Data Model1Incomplete00
3.3.3 Selectors1Incomplete00
3.4 libp2p1Incomplete00
3.4.1 DHT1Incomplete00
3.4.2 FIL Libp2p Nodes1Incomplete00
3.4.3 Gossipsub1Incomplete00
3.5 IPFS1Incomplete00
3.5.1 BitSwap1Incomplete00
3.5.2 GraphSync1Incomplete00
3.5.3 UnixFS1Incomplete00
3.6 Multiformats1Incomplete00
4 Algorithms2WIP00
4.1 Expected Consensus2Incomplete10
4.2 Stacked DRG PoRep2Stable10
4.2.1 Notation, Constants, and Types2Stable10
4.3 Proof-of-Replication0N/AN/A
4.3.1 Stacked DRG PoRep0N/AN/A
4.3.2 PoRep Commitments0N/AN/A Stacked DRG Commitments0N/AN/A
4.3.3 Stacked DRG - Offline PoRep Circuit Spec0N/AN/A
4.4 Proof-of-Spacetime2Incorrect00
4.4.1 Election PoSt2Incorrect00
4.4.2 PoSt Parameters2Incorrect0N/A
4.5 Payment Channels1Incorrect00
4.6 BlockSync1WIP00
4.7 GossipSub1.5Incomplete00
4.8 Cryptographic Primitives2Incorrect00
4.8.1 Signatures2Incorrect00
4.8.2 Verifiable Random Function2Incorrect00
4.8.3 Randomness2Incorrect00
4.9 Cryptoecon2Incorrect00
5 Listings0.2Incomplete0N/A
5.1 Filecoin VM Actors0.2Incomplete0N/A
5.2 Reserved Ranges0.2Incomplete0N/A
5.3 Data Structures0.2Incomplete0N/A
5.4 Components0.2Incomplete0N/A
5.5 Libp2p Protocols0.2Incomplete0N/A
5.5.1 Data Transfer Protocol0.2Incomplete0N/A
6 Glossary0.2Incomplete0N/A
7 Appendix0.2Incomplete0N/A
7.1 Sharded IPLD Array0.2Incomplete0N/A
7.2 Address0.2Incomplete0N/A
7.3 Filecoin Parameters0.2Incomplete0N/A

Implementations Status #

ImplementationTest CoverageCompliance TestsAuditCI
Filecoin (go-filecoin)48%00
Fuhon (cpp-filecoin)35%00