- They are the data owners, they want to store data with Filecoin providers
They want to retrieve data (out of scope here?)
- They have the hardware for storage
- Dealers (new!)
- Nodes that acts as intermediaries between providers and clients
- Storage Market Actor (?)
- Data Preparations Nodes (?)
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).
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).
depositTo(amount): This function adds tokens to the internal balance of the perpetual storage contract.
createDealProposal(file_id, ...) ->deal_idfrom Bounty contract; and then start listening to the logs (onchain events),
dealAccepted(deal_id)event, then get the
deal_id_start_epochand go to step 2,
- If the deal notice goes in timeout, go back to step 1;
- (Repair) If
dealTerminated(deal_id)event is on chain: check internal balance, if there is enough tokens then invokes
createDealProposalfrom Bounty contract again;
- (Renew) If
current_epoch = deal_id_start_epoch + deal_duration: check internal balance, if there is enough tokens then invokes
createDealProposalfrom Bounty contract again.
- 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)
Bounty and Perpetual contracts can accept funding from multiple clients.
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.