If you're a developer building decentralized applications, you have been faced with uncomfortable tradeoffs in choosing how to manage data. The two available options available have held back Web3 apps:
Option 1 has been to use a smart contract (blockchain-based) backend and a static frontend. The downside of this option is that these apps are not very feature-rich, since putting a bunch of data on a smart contract blockchain is expensive. As a result, these applications are often minimalist and have limited customization and optionality for users. Even putting content on IPFS and managing mutations through a smart contract is prohibitively slow and expensive. This path is for the decentralization idealists.
Option 2 has been to sacrifice sovereignty and spin up a traditional backend for any data that doesn't strictly need to be in a smart contract. For example, token balances and yields are on-chain while chats and settings are on a centralized server.
What if there was a way to give users full sovereign control over their data while getting access to not just the data from your application but many other compatible ones? What if you could promise users that their information would live in a decentralized network where no individual application developer or company could choose to take it down or tamper with, that they own their data in the truest sense? What if you could build your application with rich data features, and without a backend or expensive smart contracts?
Now you can.
A sovereign datastore
With DID Datastore on top of Ceramic, you can create a datastore for each of your users’ blockchain accounts. Or even let them link multiple accounts (like various wallets from different blockchains) to the same datastore. And with that datastore, you can structure, store, and update any kind of information required in your application — without a backend or smart contract. This is enabled by 3 concepts: DIDs, Data Models, and the DID Datastore itself.
DIDs are Decentralized Identifiers, an emerging technical standard that enables verifiable, decentralized, interoperable digital identities. A DID can refer to any subject (e.g., a person, organization, thing, data model, abstract entity, etc.). By using DIDs to manage datastores, data can traverse platforms and blockchains and be associated with any entity, including NFTs.
DataModels describe the data linked to the DID that will be stored in the datastore. The DataModel defines the shape (or schema) of your data, which can then be referenced by every datastore for every user that interacts with that data model. Developers can define the DataModel for their app, then give users full sovereign control over all their data records.
The DID Datastore itself is the table of datastores that a DID controls, each of which points to the relevant data model. This creates a way to structure and associate data to any Web3 identity, all without a backend or smart contract. Since the data lives on a decentralized network (Ceramic) controlled by each user (DID), data from app A is not locked into app A. App B can also read and modify the same data if granted permission to do so.
The Internet’s User Table
With each user managing their own DID Datastore, and apps free to discover and create the Data Models they require, something new and powerful emerges: a shared, distributed user table for Web3.
In this table, each row represents a user (DID) and each column is a DataModel (created by an app). Both can be discovered by any user or application and expanded infinitely.
Each user has full sovereign control over their row(s) and can bring that data with them to each app they visit. If an app wants to know what data is available and how to use it, they can reference the data model which will contain a name, description, and other metadata. The data in your columns may be public or encrypted depending on the application and use case.
Want to start building with DID Datastore? Start here: https://developers.ceramic.network/tools/glaze/did-datastore/
Want to learn more about the Internet’s user table? Watch here: https://vimeo.com/showcase/8950429/video/637531828
Curious about querying data from the Internet’s user table? Come chat with the community about indexes for DID Datastore: chat.ceramic.network