Decentralized storage systems share storage responsibilities among many independent operators forming a single storage network.
Introduction to Decentralized Storage
Modern computing is highly centralized. Over the last decade, a few massive cloud companies have made enormous fortunes carving up traditional computer systems into compartmentalized, cloud-based offerings. The modern web reflects that centralization — when one of these providers has an outage, it’s a major internet event. (If you don’t believe us, we’d like to remind you of the Amazon Web Storage outage in 2017, Github’s extended interruption in June 2020, or Microsoft’s multiple week cloud service problems in October 2020.)
The content we host on these services is no better, stashed behind brittle links that break all too often. This has profound implications for the computer systems we build, and for the societies that increasingly rely upon them.
For a piece of data to persist forever, we need to use a persistence mechanism. For example, on Ethereum, the persistence mechanism is that the whole chain needs to be accounted for when running a node. New pieces of data get tacked onto the end of the chain, and it continues to grow – requiring every node to replicate all the embedded data.
This is known as blockchain-based persistence.
The issue with blockchain-based persistence is that the chain could get far too big to upkeep and store all the data feasibly (e.g. many sources estimate the Internet to require over 40 Zetabytes of storage capacity).
The blockchain must also have some type of incentive structure. For blockchain-based persistence, there is a payment made to the miner. When the data is added to the chain, the nodes are paid to add the data on.
Platforms with blockchain-based persistence:
Contract-based persistence has the intuition that data cannot be replicated by every node and stored forever, and instead must be upkept with contract agreements. These are agreements made with multiple nodes that have promised to hold a piece of data for a period of time. They must be refunded or renewed whenever they run out to keep the data persisted.
In most cases, instead of storing all data on-chain, the hash of where the data is located on a chain gets stored. This way, the entire chain doesn’t need to scale to keep all of the data.
Platforms with contract-based persistence:
IPFS is a distributed system for storing and accessing files, websites, applications, and data. It doesn’t have a built-in incentive scheme, but can instead be used with any of the contract-based incentive solutions above for longer-term persistence. Another way to persist data on IPFS is to work with a pinning service, which will “pin” your data for you. You can even run your own IPFS node and contribute to the network to persist your and/or other’s data for free!
- Pinata (IPFS pinning service)
- web3.storage (IPFS/Filecoin pinning service)
- Infura (IPFS pinning service)
In order to retain data, systems must have some sort of mechanism to make sure data is retained.
One of the most popular ways to make sure data is retained, is to use some type of cryptographic challenge that is issued to the nodes to make sure they still have the data. A simple one is looking at Arweave’s proof-of-access. They issue a challenge to the nodes to see if they have the data at both the most recent block and a random block in the past. If the node can’t come up with the answer, they are penalized.
Types of dStorage with a challenge mechanism:
There aren’t great tools to measure the level of decentralization of platforms, but in general, you’ll want to use tools that don’t have some form of KYC to provide evidence they are not centralized.
Decentralized tools without KYC:
- 0Chain (implementing a non-KYC edition)
- The Beacon Chain
IPFS – InterPlanetary File System is a decentralized storage and file referencing system for Ethereum.
Storj DCS – Secure, private, and S3-compatible decentralized cloud object storage for developers.
Skynet – Skynet is a decentralized PoW chain dedicated to a decentralized web.
Filecoin – Filecoin was created from the same team behind IPFS. It is an incentive layer on top of the IPFS ideals.
Arweave – Arweave is a dStorage platform for storing data.
0chain – 0Chain is a proof-of-stake dStorage platform with sharding and blobbers.
Swarm – A distributed storage platform and content distribution service for the Ethereum web3 stack.
OrbitDB – A decentralized peer to peer database on top of IPFS.
Aleph.im – Decentralized cloud project (database, file storage, computing and DID). A unique blend of offchain and onchain peer-to-peer technology. IPFS and multi-chain compatibility.
Ceramic – User-controlled IPFS database storage for data-rich and engaging applications.