The Web2 storage service landscape is dominated by a handful of enterprise players like Amazon Web Services and Google Cloud Platform. Filecoin has enabled a new class of smaller players to participate and offer distributed and verified storage to users. However, the network can go even further--tap into individuals around the world and leverage the unused capacity on millions of personal computers.
One person may not seem like much. They probably only have 2GiB to 8GiB of free space on their laptop and are only online for a few hours a day. But consider many such people on a global scale. Collectively, they can pool together a large amount of storage, and thanks to time zones, typical offline time in one region means typical online time in another. A patchwork of these individuals can provide the foundation of a storage service with high capacity and uptime guarantees.
We designed a system to allow anyone to participate in the Filecoin network by committing their time and storage. Let's grow the community.
See video presentation!
Individuals can register to be part of the micro-node pool by sending a request to the storage portal's
/register-node endpoint. They have to provide their time availability, which should correspond to when they're typically online so that the micro-node code can run in the background while they're using their machine (e.g. 10AM - 4PM). They also have to provide their storage capacity, which is how much user data they're willing to store on their laptop (e.g. 2/4/8/16GiB).
Users can make a storage deal proposal by sending a request to the portal's
/request-storage endpoint. They have to provide metadata such as the deal duration as well as the actual data that should be stored. When the portal receives this request, it'll select nodes to participate in the deal based on a node's availability and its ranking in a reputation system. The portal will publish a new instance of the Storage Deal contract in a
PENDING state with the details of the specific deal. It'll then split up the user's data into 512MiB sectors, notify the selected nodes via Push Protocol, and send the sectors to the corresponding nodes.
The reputation system is stored on chain via the Micro-node Registry contract. A node's rating is calculated by its fulfillments divided by its commitments, that is--the number of sectors that it's successfully proved over the total number of sectors that it's committed to. More simply, this ratio can be thought of as what the node delivered versus what it promised to deliver. For new nodes that don't have any work history, they receive a default rating so that they don't start at zero. The reputation system is used to incentivize good behavior because it persists for the lifetime of the node and affects their selection for future storage deals. The system doesn't have a staking or slashing mechanism because individuals may not have sufficient FIL to put down as collateral, and it decreases some friction from the onboarding funnel.
Once the nodes have the sectors for the new storage deal, they'll run a modified version of the Lotus benchmark tool to seal the data and generate a proof of replication (poRep). They have to do this for every sector that they're given and submit it to the Storage Deal contract instance. A separate worker process, which doesn't run as part of the micro-node, will act as a proof verifier. The verifier will pull down proof submissions from the contract, verify the validity off chain with a stripped-down version of the Lotus worker, record the result (e.g. accepted/rejected) on the contract, and trigger a reward to the micro-node's address if the proof was correct. After all the poReps are submitted and verifier, the user who originally make the storage deal proposal will call
startDeal on the contract, transfer funds to it, and change the deal to an
ACTIVE state. The proof submission and verification process only happens once for poRep, but it'll happen periodically every hour for proofs of spacetime (poSts) so that the micro-nodes have to continuously prove their data commitments.
At the end of the deal, the storage portal will call
endDeal on the contract and change it to a
COMPLETED state. The contract will update the Micro-node Registry with the work log of the participating micro-nodes with their fulfillments and commitments so that their rating is updated with their most recent performance.