In brief

The blockchains you know and love have a fairly rigid structure. As a developer, you have two options: create the application inside a limited environment or fork the code and create your own chain. However, creating your own chain is not easy – you also need to start a network and find the right consensus mechanism to use.

Tendermint is open source software for launching blockchains that allows you to write applications in any language. What's even better is that these blockchains can communicate with other blockchains.


Introduce

Creating a cryptocurrency or blockchain network takes more effort than starting a database. This requires appropriately balancing incentives and trade-offs between security, decentralization, and scalability.

It's no surprise that a range of different approaches are being put forward by teams looking to build the strongest blockchain ecosystem. In this article, we will learn about one such method: Tendermint.


What you need to know about Tendermint

You may be familiar with Tendermint if you know a little about blockchain. Let's review some key concepts before diving into this protocol.


Understand blockchain architecture

Tendermint is a type of blockchain stack. The same goes for Bitcoin and Ethereum. Remember, it's not just about the blockchain database, but also about the peer-to-peer network of nodes, how the nodes interact, and the cool things you can do with transactions and smart contracts. The goal here is for everyone to agree on a state (like a database snapshot), even if they don't trust others.

For the most part, today's major blockchains have figured out the secret to making this possible. However, these blockchains are often based on monolithic architecture: a software engineering concept that means components are interconnected and interdependent. You can't just take one component and then attach it to another.

Monolithic architecture is not ideal if you want flexibility. In the opposite type of model (modular architecture), you can adjust individual components without worrying about breaking any of them. With a monolithic architecture, you need to ensure every component maintains compatibility when you upgrade a component.

Once we understand this difference, we will discuss a little more about the Tendermint protocol.


Byzantine Fault Resistance (BFT)

As you may know, the big change with Bitcoin is that it solved something called the Byzantine Generals Problem. We won't go too deep into this (check out our article on Byzantine Fault Resistance if you're interested). All you need to know is that this term details a situation where participants have to communicate in a distributed context.

These participants did not know whether others were lying or whether the messages they sent each other were altered. A system is said to be Byzantine fault-resistant (BFT) if the participants can agree on a set of facts, even on the issues at hand.

Obviously, in a decentralized context, having this right is very important. Cryptocurrencies that aren't Byzantine fault-resistant won't work well – you'll need a centralized coordinator, which defeats the purpose. Like many other digital currencies, Bitcoin solves this problem by using the Proof of Work (PoW) consensus algorithm.


Three layers of a blockchain

So we know the difference between monolithic and modular architectures and we also know that decentralized cryptocurrency networks need to be Byzantine fault resistant. Now we will learn about the layers commonly found in a blockchain: application layer, consensus layer, and network layer.

The consensus layer and network layer are where nodes in the network communicate with each other and try to agree on a set of events. The application layer is where you can do your work – think decentralized applications and smart contracts in Ethereum or custom transactions in Bitcoin.


➟Want to start learning cryptocurrency? Buy Bitcoin (BTC) on Binance today!


Tendermint Core

First, we'll quickly explain the terminology. We will use the terms “Tendermint” and “Tendermint Core” interchangeably here as we are solely focused on the technology.

However, Tendermint is the name of the company (founded by Jae Kwon - the developer who wrote the original whitepaper), while Tendermint Core is the actual software the company is implementing. More specifically, the software has two main components: the core consensus engine (Tendermint Core) and the application interface (ABCI).

Tendermint Core is a system that achieves fault resistance. In essence, this is a large, distributed computer that shows everyone the same state at the same time. So as long as at least 2/3 of the participants are honest, everything will work smoothly. But this is quite familiar to other blockchains, right? So what makes Tendermint Core special?

Firstly, the consensus mechanism this software uses is Proof of Stake (PoS). For each phase, the system will select a random node from a pool of validators. This node must then propose the next block (in a system called round-robin). If the other validators are satisfied with that block, a new block is added and the chain is updated. The final factor is immediacy – unlike Bitcoin or Ethereum, there is no need to wait for confirmations to ensure your transaction is valid.

But please wait a moment! Tendermint Core uses a modular architecture, where the application layer is decoupled from the consensus and network layers. Simply put, this means you can attach your own application layer to the stack. You don't have to worry about incentive rewards or annoying consensus algorithms.

Perhaps this is not so appealing to the end user. But for developers, the ability to leverage an existing framework means they can focus on creating applications without bootstrapping an entire network. Data from the blockchain can be passed to the integration layer, allowing developers to write software in any language.

The magic happens thanks to something called the Application Blockchain Interface, or ABCI. You can think of ABCI as the GPIO pins on the Raspberry Pi computer. You can connect all kinds of third-party components to those pins, from LED lights to complex plant sprinkler systems. Likewise, ABCI defines the boundary between blockchain and applications running on blockchain.


So what special features does Tendermint Core have?

Separating the application interface and consensus mechanism gives a wide range of decentralized applications more flexibility to incorporate any programming language into their operational logic.

For an easy-to-understand example of what this protocol does, look at Ethermint: a project that takes the Ethereum codebase, removes the Proof of Work mechanism, and mounts the Ethereum Virtual Machine on Tendermint.

This feature makes several things possible. The first is that Ethereum developers can easily port smart contracts to new tools or write new contracts in the Solidity language. In addition to providing Ethereum functionality, Ethermint also serves as Proof of Stake Ethereum, giving us an overview of what a Casper implementation will look like on Ethereum 2.0.


Blockchain interoperability

The promise of an “internet of blockchains” is what attracts many to Tendermint-based protocols. Interoperability is a long-awaited addition to the cryptocurrency space, meaning hundreds of individual blockchains will be cross-compatible.

Currently, efforts are pouring into the Cosmos SDK, an open source framework that allows anyone to create an application-specific public or private blockchain. These blockchains can then be attached to the wider Cosmos network, via the Cosmos Hub, where the blockchains can communicate with each other.

Many popular projects have been built using the Cosmos SDK, such as Binance Smart Chain (BSC), KAVA, Band Protocol, Terra, and IRISnet.


summary

As a blockchain tool, Tendermint has attracted the attention of many stakeholders in the cryptocurrency sector, from developers to end users.

If it continues to gain traction, it is likely that this software will serve as the backbone for a network of blockchains. As we can see, several projects have launched using the Cosmos SDK to realize this vision.