This proof-of-storage is based on a simple asymmetric signature function signature(segment), and a symmetric key one-way function (not a hash function, rather one that produces a ciphertext with the same file size as the preimage. )
The proof-of-storage is based on that every server stores a unique encrypted version of the file, without access to symmetric key. The file is encrypted with a symmetric key one-way function.
The client can choose exactly how many copies of the file they want to store, by paying for exactly n number of encrypted versions of the file (only client has access to symmetric keys. )
Periodically, for example each month, the client publishes private keys that servers use to generate “proof-of-storage”, signatures of the file they host. The signature (proof-of-storage) uploaded to the smart contract decrypts the segment of the encrypted file that was used to generate signature (new segment each month incentivizes server to store whole encrypted file), and validates the proof-of-storage if proofOfStorage == signature(segment). The signature is also used to select the next segment.
A commit-reveal scheme is used to prevent stealing of proof-of-storage signatures.
Economic incentives
The client deposits a payment to the smart contract. The server also deposits a sum equal to the payment. The server also commits signature(segment), with a private key they choose. This prevents the client from claiming the reward (only they and the server have knowledge to claim reward. ) Removes uncertainty. The server uploads that private key together with their proof-of-storage, and both are validated. If verified, payment is automatic.
Idea to measure global storage capacity and generate proof-of-capacity
In simultaneous global events, exactly at the same time, for 30 minutes or so, a global event on Earth to measure proof-of-capacity. Based on the total capacity each entity generates, rewarded with BIT tokens. These are used to distribute storage, higher probability of being selected as host based on share of BIT (prevents a single entity from storing a million copies of same file. )
A bit like proof-of-work except does not go on all the time, only a brief time period to measure relative proof-of-capacity.