Parties
- Clients
- They are the data owners, they want to store data with Filecoin providers
They want to retrieve data (out of scope here?)- Providers
- They have the hardware for storage
- Dealers (new!)
- Nodes that acts as intermediaries between providers and clients
- Storage Market Actor (?)
- Data Preparations Nodes (?)
Protocols
Data Client Contract MVP
This is a contract that make deals with Filecoin storage miners (ie, is a proxy for clients).
addCID
: a way to add cids to its authorized set.- An authorization policy (eg, one provider per cid)
- A mechanism of rewarding storage of cids on its wishlist (MVP doesn't have a place for this in its code and relies on the filecoin builtin market for payments).
Perpetual Storage
It is possible to put funds in a contract that takes care of storing some data for an undetermined period of time (i.e. up until funding is available).
Functions:
depositTo(amount)
: This function adds tokens to the internal balance of the perpetual storage contract.activatePerpetualStorage(file_id)
:- Call
createDealProposal(file_id, ...) ->deal_id
from Bounty contract; and then start listening to the logs (onchain events), - IfÂ
dealAccepted(deal_id)
 event, then get theÂdeal_id_start_epoch
 and go to step 2, - If the deal notice goes in timeout, go back to step 1;
- At each epoch after activation, do the following
- (Repair) IfÂ
dealTerminated(deal_id)
 event is on chain: check internal balance, if there is enough tokens then invokesÂcreateDealProposal
from Bounty contract again; - (Renew) IfÂ
current_epoch = deal_id_start_epoch + deal_duration
: check internal balance, if there is enough tokens then invokesÂcreateDealProposal
from Bounty contract again. - (add a mechanism for provider selection?)
- first come first claim ?
- (selection based on a power threshold ?)
Protocol for pooling storage resources (âPool Contractâ?)
Storage Providers pool storage capacity by signing up. Clients make deals with the smart contract instead of directly with a storage providers. Whenever a deal is accepted by the storage pool, the SP participants must subscribe to the deal. The smart contract governances is customizable parameters.
- (SP) Members governance : how do you become a member?
- Writers governance (who can store data): who is allowed to decide who to store with
- SLA governance (rules, eg if a provider is in a poll but do not store, slash the deposit?)
Data Persistence (DP)
Storing state data (we suggest to do it using the pool contract).
Data availability (DA)
Having a way to prove that (transactions?) data is distributed and stored.
Extra (related stuff)
Crowdfunding
Bounty and Perpetual contracts can accept funding from multiple clients.
Repair/Renewal Contracts
Clients use funds to assure storage for a given period of time. We have a contract which can check storage persistence (aka windowpost existence/validity) and eventually call the bounty contract to re-activate storage deals.