In 2022, there are different options on the table to build a decentralized social protocol / network or decentralized social graph. In this post, I will explain what those different options are and why we decided to use Ceramic to build Orbis Protocol.
The main three options on the table are:
- Use smart contracts with a decentralized data storage network
- Create your own blockchain or network dedicated to your social protocol
- Use an advanced data network like Ceramic
1. Using smart contracts with a decentralized data storage network
This is the option that we initially explored to build the very first proof of concept for Orbis and it’s the option picked by Lens Protocol for example. In this option, you use a set of smart contracts to store the posts, reactions, followers and profiles and store the content of the posts and profiles on a decentralized data storage system such as Arweave or IPFS.
Important: In this option, posts themselves aren’t stored on the blockchain itself. Only the hash / url of the content is stored on-chain.
There are some advantages using an architecture like this but also some big drawbacks.
Advantages of the smart contract approach
The main advantage is that using solidity and smart contracts is a well-known environment for teams already used to DeFi or NFT projects. This allows some quick composability and integrations with other apps.
A second big advantage is that there are many solutions available to index and query blockchain data, tools like The Graph for example. So as soon as your smart contracts are deployed and used, anyone could create a subgraph to query the content being shared on your decentralized social network. This then makes it easier to integrate the content in an application.
A third advantage (which also introduces our first drawback) is that with new chains like Polygon or Layer 2s like Optimism or Arbitrum transaction fees can be fairly cheap. This is an advantage because with this approach, all posts require a transaction via the smart contract.
Drawbacks of the smart contract approach
However, even with cheap fees, the smart contract approach means that every transaction in a social experience comes with a cost. For us, this was a major first drawback. We believe that a social networking experience can’t come with end-users transaction fees. Instead, it must be absolutely free to use for everyone.
A second drawback is related to the friction of having to sign a transaction every time you perform an action on this type of social network. Every action such as following someone, sharing something or reacting to a post requires a signature. Web 2 platforms have been excellent at removing any type of friction from their applications. Web3 platforms must do the same to succeed.
Another disadvantage is that expanding to other chains is hard for a social network built fully on-chain. It’s easy to duplicate and deploy the smart contracts on another chain but they are still going to be two separate experiences. Maybe some apps will find ways so that someone who created their account on Polygon can follow an Optimism user, but it’s not going to be easy and will probably rely on centralized bridges. It will also be even harder to have this cross-chain experience for non EVM chains. For example, can a Polygon user interact with a Solana user on this type of decentralized social network?
Overall, I strongly believe that traditional blockchains are amazing at solving the double-spending problem, to transfer an asset from point A to point B and to allow full ownership of your financial assets. However they aren’t a good architecture to build a decentralized social network.
2. Building everything from scratch
To avoid the drawbacks listed above, one could be tempted to build their own blockchain or decentralized architecture dedicated to the social network. This is what DeSo or Farcaster decided to do, for example. I’ve never considered this an option but I guess the main advantage would be the flexibility it offers. If you build from scratch you can decide on the rules and parameters of your blockchain or network to fit your needs perfectly.
One other advantage would be the ability to capture value at the network level. It’s clear that building or forking a blockchain or decentralized network can be a lucrative business (at least in the short-term). #Disadvantages of building your own blockchain or network
The main disadvantage is, in my opinion, the intensive and duplicated technical work and maintenance required. As importantly, by building your custom blockchain or network you lose out on the composability gained by building on top of an existing public decentralized infrastructure.
Another disadvantage could be the lack of initial decentralization. In addition to building both a blockchain and a social network, you also need to convince node operators to run your new blockchain to make it decentralized.
3. Use an advanced data network like Ceramic
Finally, let’s talk about Ceramic. I’m going to be biased here because this is the technical architecture we chose for Orbis. I strongly believe that this is the best choice for data-intensive web3 applications.
Ceramic is a decentralized data network built on top of IPFS. With Ceramic users can create their decentralized identity or
DID using multiple types of providers. A provider can be an Ethereum wallet, a Solana wallet or even a Cosmos wallet. This means that someone joining Orbis with their Solana wallet can talk with another Orbis user who joined with their Ethereum wallet.
Once a user creates their Ceramic
DID, they are able to write Ceramic streams. Creating a new stream is similar to creating and signing a transaction on a blockchain but instead of transferring an asset, you share data to the network. On Orbis, each post, reaction, profile details, or follow action, is a Ceramic stream. Streams are public JSON objects that are replicated across multiple Ceramic nodes. They may follow a specific schema to be identified easily in the network and they can be used by multiple applications. I will share more details about the Ceramic schemas in another post.
The advantages of using Ceramic for a social protocol
The first advantage is definitely the ability to join Ceramic with multiple providers. It is a neutral platform on which to build decentralized data applications.
Because Ceramic is dedicated to data and not to financial assets, it doesn’t need the same security model as traditional blockchains. There aren’t any fees or wallet popups when users write content to Ceramic. This frictionless user experience is the third big advantage of Ceramic.
Ceramic’s alternative security model also allows very fast write times. A Ceramic stream is created almost immediately which results in a very fast user experience similar to what web2 can offer.
The disadvantages of using Ceramic
The main disadvantage of Ceramic is that its architecture, and decentralization are different from those of traditional blockchains. End-users probably won’t be concerned about these differences, but for technical people there are new concepts to learn. This can create a small barrier to entry both for developers and early adopters.
Another current disadvantage for Ceramic (which is only temporary) is that there isn’t any way to publicly query and index Ceramic content. For example, Ceramic needs what The Graph did for blockchains; the ability to query blockchain data using a simple GraphQL query. No one has done this for Ceramic as yet.
This lack of a simple query solution means that apps building on top of Ceramic must run their own indexing architecture in a centralized way. However multiple teams are working on solving this problem, including Ceramic with their own ComposeDB product.
Finally, as a consequence of all the advantages listed previously, Ceramic is not decentralized in the same way as traditional blockchains. The Ceramic architecture brings huge benefits but it might generate some centralization issues if nodes aren’t incentivized to host other nodes' content.
With traditional blockchains, every node hosts the same data and must constantly agree on the state of the network. With Ceramic this is different. Each node hosts different streams according to which apps are connecting to the node and the data the nodes decide to host. For example, we could have many nodes indexing the data from Orbis in a permission-less way, but if we have only the Orbis node doing this it creates some centralization. Having a set of incentives to encourage nodes to host data from other applications would be useful to push this architecture towards decentralization.
I believe that decentralized social apps and protocols built on traditional blockchains will benefit from an initial network effect. They leverage an architecture that their audience and developers are used to. Also, because querying or indexing the blockchain is available using a simple subgraph, such solutions benefit from immediate composability.
However, in the long run, building on top of Ceramic is, in my opinion, a far better decision. It provides higher scalability, and a neutral cross-chain decentralized social experience. This is the option if, like Orbis, you’re looking to achieve the greatest adoption outside the crypto space.
Note: This article was initially shared on Orbis Testnet in May 2022