A powerful ecosystem of connected blockchains
Cosmos presents the blockchain industry with an alternative view on how blockchains should function, and what the best route to success might be for scalability, speed, and security to co-exist. Technically speaking, Cosmos is not a blockchain, it’s a decentralized network of individual blockchains, each powered by algorithms like the Tendermint consensus.
Cosmos is an ecosystem of blockchains that are able to work together to scale and interoperate with each other as traditional blockchains have been siloed and unable to communicate. As a result, they have only been able to handle a small number of transactions per second. Cosmos is attempting to solve these problems with a new technology vision.
Note that Cosmos is an open-source community project initially built by the Tendermint team. Everyone is welcome to build additional tools to enrich the developer ecosystem.
History is important
To better understand how Cosmos fits into the overall blockchain ecosystem, we need to go back to the beginning. The first blockchain was Bitcoin, a peer-to-peer digital currency created in 2008 that used a consensus mechanism known as Proof-of-Work (PoW). At the time, just two options to develop decentralized applications appeared: Fork the Bitcoin code or build on top of it.
However, the Bitcoin codebase was very inconsistent with all three layers—networking, consensus, and application mixed together. Additionally, the Bitcoin programming language was limited and not user-friendly. Tools were needed to push things forward and allow decentralized applications to flourish.
In 2014, Ethereum came in with a new idea for building dapps. There would be one blockchain where people would be able to deploy any kind of program. Ethereum achieved this by turning the application layer into a virtual machine called the Ethereum Virtual Machine (EVM).
This virtual machine was able to process programs called smart contracts that any developer could deploy to the Ethereum blockchain in a permissionless fashion. This new approach allowed thousands of developers to start building decentralized applications (dapps). However, limitations around scalability, security, and useability soon became apparent and still continue to this day.
Enter Cosmos
The vision of Cosmos is to make it easier for developers to build blockchains and break the barriers down between them. This would allow these different blockchains to transact with each other creating an Internet of Blockchains. This is a vision achieved through a set of open-source tools in Tendermint, the Cosmos SDK, and the Inter-Blockchain Communication protocol (IBC), and it’s designed to let people build custom, secure, scalable, and interoperable blockchain applications quickly.
Internet of blockchains
The connection between blockchains is achieved through a protocol called Inter-Blockchain Communication protocol (IBC). IBC leverages the instant finality property of Tendermint consensus to allow incompatible chains to transfer value (i.e. tokens) or data to each other.
Incompatible chains have different layers, meaning they can differ in how they implement the networking, consensus, and application parts. To be compatible with IBC, a blockchain needs only follow a few requirements, the main one being that the consensus layer must have fast finality. Proof-of-Work chains such as Bitcoin and Ethereum do not fall in this category. Ethereum 2.0 will finalize batches of blocks according to periods of time called “epochs”. The current plan is to have 32 blocks per epoch and finalize them all in one round meaning Ethereum 2.0 would be compatible once fully operational.
IBC allows incompatible blockchains to transfer tokens and data to each other, meaning that blockchains with different applications and validator sets are interoperable. But, even with this step forward, there is still the question of how to create a network of blockchains.
One idea is to connect each blockchain in the network with every other via direct IBC connections. The main problem with this approach is that the number of connections in the network grows quadratically with the number of blockchains and quickly escalates. To solve this, Cosmos proposes a modular architecture with two classes of blockchain: Hubs and Zones.
Zones are regular heterogeneous blockchains and Hubs are blockchains specifically designed to connect Zones together.
When a Zone creates an IBC connection with a Hub, it can automatically access (i.e. send to and receive from) every other Zone that is connected to it. As a result, each Zone only needs to establish a limited number of connections with a restricted set of Hubs. Hubs also prevent double-spending among Zones. This means that when a Zone receives a token from a Hub, it only needs to trust the origin Zone of this token and the Hub.
The first Hub launched in the Cosmos Network is the Cosmos Hub. The Cosmos Hub is a public Proof-of-Stake blockchain whose native staking token is called the ATOM, and where transaction fees will be payable in multiple tokens. The launch of the Hub also marks the launch of the Cosmos network.
Solving Scalability
Cosmos leverages two types of scalability and from launch in March 2019 has leveraged vertical scalability adding horizontal scaling later, once the IBC module is complete.
- Vertical scalability: This encompasses the methods for scaling the blockchain itself. By moving away from Proof-of-Work and optimizing its components, Tendermint BFT can reach thousands of transactions per second. The bottleneck factor is the application itself. For example, an application like a Virtual Machine (e.g. the Ethereum Virtual Machine) will impose a much lower limit on the transaction throughput than an application where transaction types and state transition functions are directly embedded in it (e.g. a standard Cosmos SDK application).
- Horizontal scalability: Even if the consensus engine and the application are highly optimized, at some point the transaction throughput of a single chain inevitably hits a wall. That is the limit of vertical scaling. To go beyond it, the solution is to move to multi-chain architectures. The idea is to have multiple parallel chains running the same application and operated by a common validator set, making blockchains theoretically infinitely scalable. Further details about horizontal scalability are fairly complex and available here.
Further in-depth technical details specifically for developers are linked at the end of this article.
In-Summary
Cosmos makes blockchains powerful and easy to develop with Tendermint BFT and the modularity of the Cosmos SDK At the same time. It also enables blockchains to transfer value with each other through IBC and Peg-Zones, while letting them retain their sovereignty. Finally, the Cosmos solution allows blockchain applications to scale to millions of users through horizontal, and later vertical, scalability solutions.
Cosmos can be considered as an ecosystem built on a set of modular, adaptable, and interchangeable tools rather than an individual product. Developers are encouraged to join the effort to improve existing tools and create new ones.