Commonwealth’s Approach to Decentralization
Today, Commonwealth sits at the heart of community governance. The need we solve today is providing one place where all community members can participate in governance. This is a real pain point, as it's tough to find everything else since things happen across a variety of different communication channels, both on and off-chain.
Basically, we are solving for two things: an amazing product experience and decentralization. While the product experience of being able to see all your communities in one place is great at face value, it makes us "less decentralized". So we have to and want to answer the two questions.
Recently, we've prioritized communicating what the product experience looks like in the short term, without discussing what the latter means. This post explains our current thoughts and efforts towards decentralization. We recognize that our communities have decentralized governance.
We want to build our product to be in line with web3 values, and we don’t want to compromise on the product experience
If we don't decentralize, we're cognizant that we'll fall into the same pattern of being a "walled garden" like Twitter or some other huge feed. We think that if we're able to follow this path, we hope we'll be able to have both.
Here is the TL;DR:
If there's nothing else that you read, here's the takeaway:
Whether you are on Cosmos, Ethereum, or any soon-to-be-supported network, users and communities will be able to self-host in a decentralized, interoperable manner, no later than the end of the year.
Instead of "self-hosting" a Web2 forum, this means users will be able to see and access their set of communities across whatever UI and UX that devs offer. We think this lets users have an amazing product experience and decentralization. By self hosting, we mean launch the full client (I.e UI / UX), set of backend services (business logic), as well as access the social graph (database).
- Communities will be able to self-host on their custom domain.
- Users will be able to see and post from a desktop or other web app.
Across both of these, they can have the same consistent experience. Instead of having 50 sign-ins, users can use one address, one notification system, and more.
The remainder of this post will be somewhat technical, reader beware. And we’ll have follow up posts detailing the current architecture around session keys, signing, and more.
Decentralization and How It Relates to Us
First, a small detour on what decentralization means and how we think about these things. For all intents and purposes, decentralization is a catch-all term. Here's an old but good blog post from Balaji that discusses decentralization from an L1 perspective.
Using this, it's relatively easy now to get a common sense understanding of some of the important axes of decentralization. For L1s, the relative importance of each axis of decentralization is different.
For Proof of Work Networks, it might look a little like this:
1. Mining (Incentives): Who Earns Reward
- Determines 51% attack
2. Ownership: Who Holds The Coins
- Not tied to who can earn future rewards
- What is It: Enables Censorship Resistance
3. Nodes: Who Has the Data
- What is It: Enables Censorship Resistance
- Sub Questions: How can you enable trustless signing on data and replication of data
4. Exchanges: Where can people get it
5. Devs: Who Pushes Changes
- (for Bitcoin, this is core developers only)
- Underrated, as core devs only led relatively directly to the creation of Ethereum (Vitalik other founders could not directly get new OP CODEs in)
6. Client Diversity: What Base Software Can Users Use
As new networks were created and new use cases have arisen, the relative importance of decentralization has shifted.
For ETH 2 and other smart contract proof of stake networks, it might look a little like this:
1. Ownership: Who Holds The Coins
- Determines 51% attack
2. Staking Mining (Incentives): Who earns the reward.
3. Nodes: Who Has the Data
- What is It: Enables Censorship Resistance
4. Devs: Who can add new functionality to the network - Smart contract devs; this is now permissionless.
5. Client Diversity: What base software can users use
- Recently, client diversity was highlighted as ETH may not have survived without sufficient client diversity.
https://twitter.com/ceterispar1bus/status/1656779953332015106
6. Exchanges: Where can people get it?
So How Does This Relate to Us?
At scale, it's easy to see why decentralizing a social network is important. Conversations around moderation and who earns money off user data being served seemingly daily to heads of Twitter, Facebook, IG, Tiktok, or whatever. Serving this new use case, social networks changes the relative importance of different ways to decentralize:
1. Client Diversity: What base software can users use
- What is It: Diversity here (or lack thereof) largely determines what users can see, I.e what posts
2. Nodes: Who has the data
- What is It: Enables Censorship Resistance
3. Ownership: Who Holds the Coins Who has an identity
- Determines who can run communities.
4. Creating (Incentives) Staking Mining: Who earns the reward.
5. Devs: Who can add new functionality to the network.
6. Exchanges: Where can people get it?
Farcaster, Lens, and other crypto social protocols are working on decentralizing these social networks. And just like them, Commonwealth is also a social network, albeit centered around specific interests and a very specific slice of interests—governance, at that.
Our Approach and Current Timeline
Over the next year and more, we are decentralizing. Our goal is to be a protocol where all stakeholders — developers, users, communities — are able to build. We want to emphasize that this is already in progress, which may be surprising.
1. Client Diversity: What base UI / UX can users use to interact with the app
- What is It: Diversity here (or lack thereof) largely determines what users can see, I.e what posts
- Our Timeline and Approach: From the very beginning (2021), we have focused on ensuring that our front end is decentralized. You can see all of our work daily here. What we'd love to do is to create client diversity, allowing any developer to create subsets or supersets of the functionality that we currently have. We want to fund grants to help developers around this.
2. Nodes: Who has the data
- What is it: Enables censorship resistance.
- Our Timeline and Approach (link to active work):
- Trustless Signing: How can you ensure?
- We are almost ready (potentially within weeks) to introduce session key-style signing, which will enable users to sign content with their public keys. We expect this feature to be fully implemented by the second quarter of 2023.
- More than one Backend: As of now, our backend/data is not yet decentralized. In the short term, we offer an open API (gated by API keys) that anyone can access and retrieve data from. However, later this year, users should be able to run nodes that can host their data. We anticipate reaching this milestone by the third or fourth quarter of 2023.
3. Ownership: Who Holds the Coins Who has an identity
- Determines who can run communities
- What is it: Who can use the network.
- Our Timeline and Approach:
- TBD ⇒ We want to enable and be interoperable with emerging namespaces, i.e., Bluesky, Farcaster, Lens, Worldcoin, Disco, CyberConnect and other emerging forms of identity. We'll experiment with different approaches towards the end of the year. But our goal is to make ownership, membership, permissions, and roles trustless and decentralized by having them live on the blockchain.
4. Creating (Incentives) Staking Mining: Who earns the reward
- Our Timeline and Approach:
- TBD ⇒ Users should be able to earn based on what they create (i.e. gov posts). We want to help communities set their own rewards. As new use cases arise, developers (based on their use case) should be able to do this.
5. Devs: Who can add new functionality to the network
- Our Timeline and Approach: API and decentralization of data enable developers to build new use cases by default. However, there are more primitives that we can offer. To be discussed in a follow-up post.
6. Exchanges: Where can people get it - Not an area of focus.
Zooming Out
Right now, communities use us as an all-in-one place for governance. Communities do more than govern. And we hope that by enabling decentralization by default, we can help communities do more things. We don't see this as just an effort that we undertake but do so with the community. We hope this serves to discuss what our current high-level thoughts are. We’ll continue to follow up with both product and writing around technical details around session keys, hosting, incentives and more.