Blockchain Learning, Proof of Stake

Cosmos’s Approach to Decentralization

Note: This is the fourth installment of a series detailing the approaches that different blockchain networks have taken to decentralize their network. Part 1 introduced the concept of decentralization at a high level, the role it plays in crypto networks and some of the different factors inherent to a protocol that influence how decentralization will propagate at scale and influence participation. Parts 2 & 3 then provided in-depth looks at Bitcoin and the Factom Protocol in addition to their approaches to decentralization. If you missed any of these articles and would like a refresher before we dive into the decentralization of Cosmos, you may do so here, here, & here respectively.

Hello everyone and thanks for joining! Over the last few weeks, we have talked quite a bit about decentralization and the different mechanisms that blockchain networks use to influence participation and dispersion of their network participants. We took a nice trip down memory lane to examine Bitcoin’s approach over the last decade, followed by fellow veteran protocol Factom. In this week’s article, we’ll dive into Cosmos, the first Proof-of-Stake (POS) protocol in our series. While conceptualized as a white paper since 2016, Cosmos was just launched on March 13, 2019. The full history leading up to this event is too long to recount in this article, but I highly recommend checking it out here, as it involves some cool blockchain history. For example, one of the organizations behind the Cosmos Network, the Interchain Foundation (ICF), raised nearly $17 million in 30 minutes for the project via an ICO and it is regarded as one of the most successful fundraising events for a blockchain-related project ever. Cosmos may be slightly less than a year in age, but it is certainly one of the most ambitious blockchain projects to emerge thus far. Cosmos is creating what many have termed the ‘Internet of Blockchains’ or ‘Blockchain 3.0’, which is an ecosystem of interconnected blockchain protocols that are interoperable and can seamlessly communicate with one another. 

What is Cosmos and How Does it Work?

Beginning with Ethereum in 2014, developers started experimenting with ways to implement Bitcoin’s underlying blockchain technology into other applications outside of digital money. Specifically, many were interested in using blockchain for stateful applications that could handle more robust computer logic rather than a stateless ledger. This led to innovations like smart contracts and gave rise to the notion of decentralized applications (dApps). As developers started exploring new uses for blockchain technology an explosion of new, highly-specific crypto networks ensued. Consequently, people began to realize that one of two things was going to happen if the decentralized web was going to work: One school of thought was that everything would resolve to one or a handful of ‘fat protocols’ capable of handling all the compute needs of the different applications built on top of them with universally agreeable tokenomics. The opposing view was that there would be a myriad of different blockchains, some application-specific and others comprehensive, that would be interoperable with one another so people could transact across them as needed. 

Cosmos was birthed out of the latter ideology and is essentially applying a microservices architecture to create a base-layer network that connects an ecosystem of application-specific blockchains. To achieve this goal, the teams working on Cosmos decouple the different components of blockchain networks (consensus, networking, & the application) and provide them piecewise in a ‘plug-n-play’ fashion to the protocols building their blockchains on top of Cosmos. Hence, Cosmos, while a blockchain protocol in-itself, acts as a platform wherein other blockchains can be built using a suite of customizable, shared technologies and Cosmos handles properly managing state and transactions across the different sub-networks.

The first component that makes this possible is the Tendermint  BFT Consensus Engine. Tendermint BFT is an open-source technology that combines the networking and consensus layers of blockchains into a generic byzantine fault-tolerant ‘consensus engine’ that can easily be plugged into any application to create a proof-of-stake blockchain. Being byzantine fault tolerant means that up to ⅓  of the nodes in the network can arbitrarily fail or be overcome by a malicious actor, yet it will still operate as intended. If you would like more information regarding byzantine fault-tolerance or the byzantine generals problem, the original paper on the topic is available here. Proof-of-stake is an alternative consensus mechanism to proof-of-work that replaces mining with the notion of skin in the game via stake, or the amount of a network’s cryptocurrency a user owns and invests into the protocol. The larger a participant’s stake, the more likely that participant is to be elected to produce blocks and be rewarded. This is analogous to the relationship between a Bitcoin miner’s investment in computing power and his or her likelihood of mining a block, but requires significantly fewer computational resources and allows for faster transaction times. Tendermint founder Jae Kwon was actually the first person to prove and demonstrate that byzantine fault tolerance worked for proof-of-stake networks, so for more information, I invite you to check out the paper he released on the matter here.

Tendermint BFT allows developers to save time and effort setting up the networking and consensus components of their proof-of-stake networks so that they can instead focus almost singularly on the application layer. Moreover, Tendermint BFT is language agnostic and has clients in Golang, Javascript, Rust, & other popular programming languages, allowing developers to build their blockchain on top of Cosmos with ease. The engine then communicates with the application layer through a socket protocol known as the Application Blockchain Interface (ABCI) as may be viewed below.

Cosmos also provides blockchains building on top of it with a generalized application development framework (the Cosmos SDK), that makes building secure applications on top of Tendermint BFT using ABCI much easier and quicker. The SDK comes with a set of pre-built modules that allow developers to build applications without having to code everything from scratch with built-in security and separation of concerns. Hence, they simply use the components they need and can accelerate the time it takes for them to launch their blockchain. 

Once a developer has launched their application-specific blockchain, he or she can then communicate and transact with other blockchains in the Cosmos ecosystem via the Inter-Blockchain Communication Protocol (IBC). Each chain in the Cosmos ecosystem is heterogeneous, meaning that they all have fast-finality consensus provided by Tendermint BFT and their own set of Validators, differing only in how they implement these components. Validators are the node operators in Proof-of-Stake networks, like Cosmos, who are responsible for participating in consensus, producing blocks, and governing the network. Anyone can set up a validator and compete to be in the active set or subset, of validators selected to participate in consensus. Before launch, a proof-of-stake network will determine how large it wants its active set to be and then validators fill that set based on the magnitude of their stake after launch. Cosmos’s consensus mechanism then selects participants probabilistically based on the amount of stake they have relative to the other validators to solve blocks and be rewarded. Validators can also suggest and vote on governance proposals for the network. Users on the network who lack the funds or stake required to be in the active set may instead stake their funds with a validator in the active set and receive a share of the rewards that a validator receives proportional to the amount they have staked minus a fee cut from the validator.

Each application-specific blockchain represents a zone, which then connects to a hub (in this case Cosmos) via IBC connections. The Cosmos Hub is specifically designed to serve as the connection point for all of the applications, or zones, built within its ecosystem and carry out seamless transfers between them via the IBC, as seen below:

Cosmos has designed its ecosystem such that there can eventually be multiple hubs connected via IBC so that the network can continue to operate at thousands of transactions per second at scale. Additionally, they plan to incorporate Peg Zones, or blockchains, whose sole responsibility is to track the state of another chain. This Peg Zone will serve as a bridge to other non-Tendermint networks like Ethereum or Bitcoin and allow them to communicate with Cosmos via IBC. Hence, the end vision for Cosmos is an ecosystem of interconnected blockchains that looks as follows:

Governance on Cosmos

Cosmos was designed with a tiered governance structure that is open to the entire community but leaves ultimate voting responsibility within the hands of those supporting the network (i.e the validators). There is a constitution that states how Cosmos is governed and how proposals for network updates are to be made. Anyone holding the network’s native currency (the Atom) is eligible to make a governance proposal and submit it for voting. The proposals can range in focus and magnitude and cover everything from changing how governance occurs on the network to overhauling aspects of the networks codebase that modifies functionality.

The one caveat is that at least 512 Atoms must be deposited toward the proposal by either the member who submitted it or the community broadly. At the end of two weeks, the proposal is either dismissed if it does not receive sufficient backing or enters into a new two week voting period where the community discusses its implications and submit a vote of either “yes”, “no”, “no with a veto”, or choose to “abstain”. Only staked Atoms count towards governance and the relative weight of a participant’s vote is based on their stake in the network. Hence, Validators with larger stakes hold more voting power. Atom holders who choose not to run a validator can stake their Atoms to any validator they feel represents their interest and inherit their vote. A proposal will only be accepted if over 40% of staked Atoms participate in the vote, over 50% of the vote is in favor of the proposal, and less than a third elected to veto the proposal. If successful, the proposal is integrated into the software that runs the network by the core developer team and the validators must coordinate an update to reflect the changes.

More on the finer details of how the governance process works can be found in the Cosmos white paper here, or in this article written by fellow Cosmos Validator Chorus One. It is also important to note that each zone built on Cosmos has its own separate constitution and governance process. Therefore, governance decisions made on the Cosmos Hub do not necessarily dictate how other zones operate. However, if any changes are made to either Tendermint BFT or the Cosmos SDK as a result of the governance update, zones will likely need to update their own networks if they are using either of these technologies.

So How Decentralized is Cosmos?

Cosmos Hub 1 (version 1 of the mainnet)  launched on March 13, 2019, and was one of the first proof-of-stake networks to successfully carry out a fully decentralized launch. This is in contrast to other successful proof-of-stake network launches, like Tezos, which had a group of Foundation Validators who controlled the initial mainnet. The initial active set was capped at 100 possible validators, and 75 of these slots were filled at genesis. This meant that there were 75 different groups distributed around the world working together to coordinate the launch of the network and start actively validating transactions. However, while Cosmos may have had an impressive initial degree of decentralization based on the number of unique validators, the true magnitude of that decentralization was far more nuanced.

Within the first week after the launch of the Cosmos mainnet, the top 5 Validators controlled nearly 50% of the staked Atoms on the network. Moreover, many of these participants had been significant buyers in the Cosmos coin offering. This illustrated that, while Cosmos may have been decentralized in terms of the number of validators, the actual distribution of power and resources within the network told a far different, more centralized story. For the next three months, 15 or fewer validators controlled ⅔ of the staked atoms on the entire network at any given time (per In October 2019, Gavin Birch, community analyst at Figment Networks, released a report detailing the negative repercussions that coupling governance with the validator role was having on Cosmos, which may be found here. In summary, the report revealed that validators were exploiting the Cosmos incentive structure to gain undue influence over network governance at the expense of other validators. Some validators were running with zero fees, meaning that 100% of the rewards they received would be distributed to those staking with them. Naturally, these zero-fee validators received a disproportionate amount of the stake as atom holders sought to maximize their returns. This forced some validators to shut down, due to their inability to continue competitively and earn rewards sufficient enough to offset the cost of their infrastructure.

Many community members grew concerned over what this meant for the future of Cosmos, as this behavior posed a major security vulnerability to the network. If validators continued to exploit the network in this fashion, it would drive away those that could no longer afford to run a validator and decrease the level of physical decentralization across the network. Thus, it would be easier for malicious actors to overtake the network. Thus, on December 11, Cosmos Hub 3 was launched based on a governance proposal that aimed to reconcile some of the alignment issues between network governance and incentives. The first major change was that the active set of validators was expanded from 100 to 125 validators, allowing for more participation in the network. The second major change was a redefining of the entire governance structure. Prior to the upgrade, voting was only a signaling mechanism. The result of a vote would have no immediate consequences other than telling the core development team what changes needed to be made to the network based on the proposal. The core developers would then release a software update, all of the validators would coordinate when to perform, and the new network would be restarted (a process known as a hard fork). With the release of Cosmos Hub 3, the network now features on-chain governance. This means that the result of a vote will automatically elicit changes to the codebase to the appropriate parameters and alter how the network behaves without having to perform a hard fork.

Instituting on-chain governance drastically shifts the incentives for network participants to vote and provides a mechanism by which delegators (those staking to other validators) can more actively participate in governance. While they still have the option to inherit the vote of the validator they are staked to, delegators can also elect to instead override that vote with their own if they disagree with how the network should proceed. This helps galvanize nominators to play a more active role in governance which helps balance the economic and governance incentives of the network while maintaining a relatively stable degree of physical decentralization. Additionally, there has been a proposal made to fund a governance working group to work alongside protocol development and help address emerging governance issues. There were several other major updates in Cosmos Hub 3, like the introduction of a rewards pool from which network participants can vote on proposals to fund projects that enhance the ecosystem. The full proposal may be found here.

It is still too early to say if expanding the active set of validators and introducing on-chain governance was the right answer to solving the centralization of power and economics on Cosmos. Figment Networks’ December Cosmos update revealed that the voting power of the bottom 90% of validators on the network had increased 3% from November. However, it also found that the top 10 validators on the network controlled 46% of the voting and consensus power. This analysis was only done between the top 100 validators in December to maintain consistency from November, so this month’s analysis will better reflect the impact that increasing the validator set to 125 had on the decentralization of the network. And who knows, with Cosmos slated to conduct Game of Zones in the coming months to refine their inter- blockchain communication module, a slew of major updates are likely to happen this year that will fundamentally change how the network operates. Thanks for reading and join me next week as we dissect the decentralization of one of the fastest growing networks in South Korea and a zone within the Cosmos ecosystem, Terra!