Cosmos is an upcoming modular framework and Tendermint-based blockchain platform designed as an ecosystem for application-specific blockchains to plug into. Cosmos is designed around the concept of standardizing communication between various blockchains that are part of its broader ecosystem to facilitate interoperability.
The project is undoubtedly ambitious, and the mainnet is expected to be released sometime in 2019. Tendermint is unique in that it functions as a multi-chain framework for other blockchains, while still utilizing its own consensus — Proof-of-Stake (PoS) — based on Tendermint core.
Scalability and interoperability are two of the most consequential developments for the larger cryptocurrency sphere, and Cosmos addresses both. However, bootstrapping an innovative, production-ready PoS network with some sophisticated nuances is exceptionally challenging, especially considering that large-scale PoS consensus networks are not practically proven as sustainable yet.
Background on Cosmos
The development of Cosmos is supported by the Swiss-based Interchain Foundation, with Cosmos being their first project. Many of the developers working on Cosmos are from the company behind the underlying Tendermint blockchain engine, All in Bits. Notably, Jae Kwon — who initially proposed Tendermint in 2014 — is one of the leading developers and is a board member at the Interchain Foundation.
Cosmos raised roughly $16.8 million in its ICO that ended in April 2017. Since then, the project has undergone a methodical development process. The Game of Stakes (GoS) testnet is set to go live shortly, followed by an audit of the recently released SDK and the eventual mainnet launch. More details are available on their roadmap.
Cosmos is a modular framework for parallel blockchains to plug into the primary hub called the Cosmos Hub. The Cosmos Hub is the first blockchain within the network and functions as the connecting medium between the various zones in the system. The zones consist of both private and public blockchains which are all interconnected via the Inter-Blockchain Communication (IBC) protocol.
Image Credit – Cosmos Blog
Cosmos is built on the Tendermint engine, which is comprised of two primary parts:
- Tendermint Core – BFT Proof-of-Stake Consensus Engine
- Application BlockChain Interface (ABCI) – BFT replication of dapps in multiple programming languages.
Tendermint core underlies the consensus of the Cosmos Hub, and subsequently the broader network for managing a standardized exchange of tokens between zones. It is important to note that blockchains plugged into Cosmos retain their consensus sovereignty, and do not forfeit it to the larger Cosmos PoS consensus.
Read: What is Tendermint?
The ABCI is language-agnostic and enables developers to build the application portion of their blockchain in any language, and it will run on top of the Tendermint consensus engine. The ABCI is a vital boundary between the Tendermint consensus engine and the Cosmos SDK for building applications. The SDK is a layered framework built over the low-level existence of the ABCI to enable developers to create advanced applications without needing to navigating the logical complexities of the low-level environment.
Cosmos defines the three conceptual layers of a blockchain as:
- Networking – Transaction propagation (i.e., gossip protocol)
- Consensus – Validator node agreement on transactions
- Application – Updating the state of transactions and processing transactions
Tendermint couples the network and consensus layers to allow developers to build blockchains and run applications much easier on top of a generically-powered engine. This is one of the core concepts of Cosmos that allows it to function as an environment for parallel blockchains to plug into. Developers only need to focus on the application layer.
The ABCI is the interface between the packaged Tendermint core (network and consensus layers) and the application layer. Importantly, the ABCI uses a socket protocol to enable the consensus engine to manage application state running in another consensus process. According to the Cosmos documentation:
“Cosmos can thus support a wide variety of currencies and scripting languages like those found in Bitcoin, Ethereum, ZeroCash, CryptoNote, and more.”
The underlying Tendermint core is highly flexible and compatible with both public and private blockchains. Moreover, developers can enjoy the near-instant finality and high performance of Tendermint, which is designed to scale.
The IBC is the standardized communication protocol across the network. Standardization is powerful and allows for interoperability and enhanced scalability (i.e., Internet protocols). The IBC is a set of semantics for messaging between blockchains with independent consensus algorithms. According to the Cosmos SDK Github repository:
“The core IBC protocol is payload-agnostic. On top of IBC, developers can implement the semantics of a particular application, enabling users to transfer valuable assets between different blockchains while preserving the contractual guarantees of the asset in question – such as scarcity and fungibility for a currency or global uniqueness for a digital kitty-cat.”
IBC requires blockchains with fast finality — such as PoS blockchains — to be natively supported among connecting blockchains. However, the IBC can be implemented with a peg-zone blockchain that has a slower consensus — such as PoW — described with Ethermint below. More details on the IBC are available in its specification paper.
The IBC is natively supported by Tendermint-based zones and facilitates a standardized format for token transfers across the network, between different blockchains. This is similar to a universal atomic swap protocol within the network. It is important to distinguish that the IBC is only natively supported by Tendermint-based blockchains along with those that have fast-finality consensus algorithms, including variants of PoS.
Ethermint is written in Go and will be the first peg zone that is an implementation of the Ethereum Virtual Machine (EVM) on top of the Tendermint engine. Cosmos enables this by leveraging the ABCI of the Tendermint protocol which allows for applications in any language to be run on the Tendermint engine. In this case, they replicated the Ethereum code base and made Cosmos fully compatible with Ethereum’s Web3 interface. Developers can even use Truffle to port over applications and smart contracts directly to Cosmos.
Building applications on top of a blockchain is a difficult task. Application frameworks provide the much-needed resources and tools to facilitate a better developing experience and is why Cosmos recently launched their SDK.
The Cosmos SDK
The Cosmos SDK is an ABCI framework written in Golang and is designed for supporting the development of multi-asset PoS blockchains, Proof-of-Authority (PoA) blockchains, and applications on top of them.
The primary purpose of the SDK is to reduce the complexities in building the ABCI for common blockchain functionality and allowing developers to focus on customizable applications within a standardized framework. The modular structure of the SDK is layered over the low-level ABCI and provides a suite of tools and resources for developers. It was built for Gaia, the first implementation of the Cosmos Hub and the mainnet launch will follow an audit of the SDK code as well as the completion of the Game of Stakes PoS testnet.
Image Credit – Cosmos Blog
The SDK is built using object-capability principals for optimal security against potentially malicious third-party modules that developers use when making their modules as part of the SDK open framework. Cosmos provides extensive resources on their SDK in the SDK documentation for developers looking to get a head start building applications on the platform once it goes live.
The Future of Interoperability
Interoperability with blockchains is pegged as the natural next step for the industry following scalability. However, projects like Cosmos that are built to scale from launch as interoperable frameworks offer some intriguing insights into what a future landscape of interoperable blockchains may look like.
Determining how Cosmos will play out is exceedingly challenging, especially considering its reliance on PoS consensus and the pending results from its Game of Stakes testnet. PoS is notoriously difficult to reason about and is predisposed to a subjective interpretation of immutability.
The timeline for the mainnet launch of Cosmos is uncertain, but along with Polkadot — a similar multi-chain framework — could provide a useful measurement into the mechanics of standardized communication and token swaps between blockchains. If successful, Cosmos will offer an entirely novel environment for developers and users to launch and interact with scalable, decentralized applications.