The Cosmos ecosystem is becoming famous for its DPS, or “drama per second”, which at first glance does not look like a good thing. But if you dig a little deeper you’ll see the source of this drama — many different people with different agendas all trying to steer the Cosmos in their preferred direction. How can so many different participants all steer? Who is in charge?
Actually, no one is. Let’s dive in.
Cosmos blockchains come prepackaged with a governance system — a decentralized process for making decisions. At the protocol level, these decisions need to be expressed as proposals which can be created permissionlessly, voted on by validators and delegators, and committed to the blockchain, where the contents can be enacted by validators.
(Note: If all of this sounds a bit intimidating, make sure you have a look at our What is Cosmos? article before proceeding.)
Proposals can currently come in one of two flavours: Code-based or text-based. The type that a user should choose depends on what they want to accomplish with their proposal.
Suppose, for example, that the Cosmos hub community wanted to increase the number of active validators from 175 to, let’s say, 200. Since this value is a on-chain parameter, changing it would require a simple code-based proposal. If it successfully passed, the code in the proposal would be automatically picked up by all validators in the next block, and changed. In fact, you can view all the parameters that are adjustable by governance using Mintscan¹ or other explorers.
Blockchains that have CosmWasm (the smart contract platform for Cosmos chains) enabled can do even more with their code-based governance, but since this will take us off course a bit, we will not go into too much detail here.
Users can also submit text-based proposals which simply outline in plain language what should occur. There are a number of uses cases for this, including:
- Requesting funds from the community pool
- Tackling security issues that cannot be addressed via code
- Agreeing on rules for governance
… and so on.
It should be noted at this stage that the Cosmos is one of the few ecosystems among crypto-assets that has an on-chain voting system. At the moment, there is general agreement that its functionality is somewhat limiting, but work is being done to expand its capabilities.
An interesting example is when Osmosis wanted to start listing Ethereum assets on its decentralized exchange, it needed to select a bridge (since Ethereum is not enabled with IBC) which would allow for two-way movement of assets between the two blockchains.
The Osmosis team created a sequence of text-based proposals that allowed users to signal which bridge they would prefer. The proposals for the Axelar, Gravity, Nomad, and Wormhole bridges each went through the governance process, and since the Axelar bridge passed with the most support, it was chosen as the default bridge from Ethereum to Osmosis.
A new proposal must progress successfully through four ‘gates’ — meet four distinct criteria — before it is passed and can be enacted by the validator set. You can see the details of these criteria in the official SDK documentation² Each Cosmos blockchain is free to customize its governance processes, and there are a number of on-chain parameters that can be adjusted, but for this article I will use the Cosmos Hub processes and parameters at the time of writing. You can check the governance parameters of your favourite Cosmos blockchain on Mintscan.
Creation and Deposit
Each proposal must be funded by a deposit — a minimum number of tokens that must be held in escrow as a means of deterring spam. Currently, the Cosmos Hub has a minimum deposit of 250 ATOM. Any proposal must reach this minimum deposit within 14 days (another on-chain parameter called the max deposit period) if it is to reach the voting stage.
If I want to create a proposal on the Cosmos hub, I have two options:
- Fund the entire deposit myself.
- Seek assistance with the deposit from the community.
If I fund the proposal myself within the 14-day period, the proposal will move automatically to the voting period. Easy.
But, 250 ATOM is no small amount and it may be challenging for many users to afford that upfront. Luckily, Cosmos allows many different users to contribute to the deposit of any given proposal. If I cannot afford the 250 ATOM alone, I can seek support from the community.
I need to be careful though — if the proposal does not meet the minimum deposit within the 14-day period, the entire deposit will be burned — erased from existence. This is the main disincentive for scammers and other bad actors to create malicious proposals.
Let us suppose my proposal manages to reach the minimum deposit. It has passed through the first gate and now, it enters the voting period.
During the voting period, validators and delegators may vote on the proposal. The length of the voting period is also an on-chain parameter and it is 14 days on the Cosmos Hub at the moment. When governance participants go to place their vote, they are given four options:
- No with Veto
The ‘Yes’ and ‘No’ options are fairly self-explanatory:
- ‘Yes’ generally signalling that you want the contents of the proposal to be enacted and
- ‘No’ signalling that you do not.
“No with Veto” is perhaps one of the more contentious options in Cosmos governance, but it signals that you are strongly opposed to the proposal and you believe the creator intended to cause harm to the community. We will return to the details of this choice in the next section.
Finally, “Abstain” can be used if a user has no strong feelings one way or the other about the proposal, but does wish to contribute to the voting process.
During the voting period, the final three gates must be passed through before my proposal will be enacted by the validator team. Let’s look at each one.
The second gate that my proposition must pass through is that a minimum of 40% of all staked ATOM must vote on a proposal. When this happens it is said to have reached quorum. This percentage is also an adjustable on-chain parameter so it may be changed in the future.
In the event quorum is not reached (ie. less than 40% of all staked ATOM votes on it), the deposits will be automatically returned to the depositing addresses and the proposal will proceed no further.
No with Veto
Once it is established that a quorum has been reached on a proposal, all the votes must be tallied over the course of the two-week period.
If, at the end of the voting period, more than 33.4% (the veto threshold, yet another on-chain parameter) of votes are ‘No with Veto’, the proposal will not pass and the deposit will be burned.
This mechanism allows the community to punish actors that they see as being malicious or intending to harm the health of the blockchain. Whatever it is that I want to accomplish with my proposal, I need to be sure that the community will not view it as misconduct for fear of losing my deposit.
Let us suppose that I have garnered enough support for my proposal that voters do not veto it.
Finally, the last great obstacle for my proposal — do people want it to pass? This is determined by the threshold parameter, and on the Cosmos Hub, it is currently 50%. To determine this, we use the formula:
In other words, if the proportion of ‘Yes’ votes is 50% or higher, excluding the ‘Abstain’ votes, the proposal will pass.
If the proposal does not reach this threshold, the proposal will not pass and the deposit will be returned to the depositing addresses automatically. For those who like flow charts (and I mean… who doesn’t…) here is the whole process for the Cosmos Hub at the time of writing:
Now that you’ve seen how a proposal comes into existence on-chain, let’s return to you as a normal user: you are staking some ATOM, and a proposal is created. In an ideal world, you would
- Read the proposal.
- Think about it.
- Review what your validators (and maybe other thought leaders in the community) are thinking and why, and finally…
- Cast your vote.
If you choose not to vote, the vote of your stake will be decided by the validators you delegate to, but you can always override their vote with your own. Even if you agree with your validators, it is beneficial to vote yourself.
It should be noted that this voting is not done per ‘person’ (since the software has no idea what addresses are controlled by the same person or people). Instead, the voting is weighted proportionally to the amount of stake held.
For example, if 100 ATOM voted on a proposal, and Notional had 10 ATOM staked, our vote would count as 10%. A user with only 1 ATOM staked would only have 1% voting power.
In our staking tutorial, we outline some recommendations for how to choose your designated validators, but let me finish this article with a few recommendations:
- You can delegate to many validators on one chain, and you should! This will mean that if one validator has issues with downtime or double-signs, not all of your stake will be affected. It also helps the decentralization of voting power in the network.
- Choose validators with good up-time histories! When validators don’t sign off on valid blocks, it means fewer rewards for you and their other delegators, regardless of their commission rate. You can check this at Mintscan.
- Delegate to validators who are active in governance proposals! These are delegators that are involved with the long-term value of your assets.
- Choose quality validators outside the top 10 or 20 — this will help prevent control of the network by a small number of validators.
Notional strives to be an outstanding validator and we hope that you will consider delegating to us on some of the many Cosmos chains that we tend to. But, the truth is that there are many excellent validators who work tirelessly to maintain the high standards of this ecosystem, and they also deserve your attention and respect.
The Cosmos is far more political than most chains because of the delegation and governance mechanisms I have described here, and it can be intimidating, but active and informed users like you will help keep the interchain vibrant and healthy for many decades to come.
Thanks for reading ❤
: Mintscan Blockchain Explorer, https://www.mintscan.io/cosmos/parameters
: Cosmos SDK Documentation, Governance Module: https://docs.cosmos.network/main/modules/gov
If you found this article interesting or informative, please help us out by sharing it with your friends and family. If there are other topics within the Cosmos you’d like to know more about, don’t hesitate to contact us and let us know!