Technically, instead of "proof of work", we could have "proof of storage". The only problem with this is, we need it to be easy to verify. Proof of work is easy to verify because you have to do TONS of hashes to find one that's under the target, but you only have to do one hash to check if it is under the target. With proof of storage, it is impossible (AFAIK) to verify that someone has some data unless you have the same data, byte for byte. You might say, "but we could just store a hash of the data and ask them for that!" but then THEY could just store a hash of the data, and give it to you.
~geezacoin lol