The farmer provides proof of storage by hashing a given challenge with the shard data. The correctness of the audit/heartbeat response can be verified via a Merkle tree, which is given by the renter on shard transfer and the root stored in the contract.
TODO describe
TODO describe
TODO describe
TODO describe
Merkle leaf = hash(hash(challenge + data)) Padded leaf = hash("")