Résumé
The blockchains you know and love have a fairly rigid structure. As a developer, this gives you two options: develop apps in a restrictive environment or fork the code and create your own channel. It's not so easy to create your own channel, however, because you also need to launch a network and figure out which consensus mechanism to use.
Tendermint is an open-source blockchain launcher that allows you to develop applications in any language. Better yet, they can communicate with other blockchains.
Introduction
Creating a cryptocurrency or blockchain network requires much more effort than simply initializing a database. It requires a delicate balance of incentives and trade-offs between security, decentralization and scalability.
Unsurprisingly, a range of different approaches have been explored by teams seeking to build the strongest blockchain ecosystems. In this article, we'll look at one such approach: Tendermint.
What you need to know about Tendermint
Much of Tendermint will look familiar if you know anything about blockchains. Let's recap some key concepts before diving deeper into the topic.
Understanding the architecture of a blockchain
Tendermint is a kind of blockchain group. Bitcoin and Ethereum are too. Remember, it's not just about the blockchain database itself, but also the peer-to-peer network of nodes, how they 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 anyone else.
For the most part, today's major blockchains have the secret features that make this possible. However, they often rely on monolithic architecture: a software engineering concept that means components are interconnected and interdependent. You couldn't just take part of it and plug it into something else.
Monolithic architecture is not ideal if you want flexibility. In the opposite model (with a modular architecture), you can modify individual components without worrying about breaking everything. With a monolithic structure, you must ensure that each component remains compatible when you upgrade just one of the components.
Now that we understand this distinction, we can discuss the Tendermint protocol in more depth.
Byzantine Fault Tolerance (BFT)
You may know that the great innovation of Bitcoin is that it solved the so-called Byzantine Generals Problem. We won't go into detail about the problem (see our article on Byzantine Fault Tolerance if you're interested). All you need to know is that it details a scenario in which participants must communicate in a distributed setting.
These participants do not know if the others are lying or if the messages sent between them are altered. A system is said to have Byzantine Fault Tolerance (BFT) if participants can agree on a set of facts, even in the presence of these problems.
Obviously, in a decentralized framework, it is essential to obtain this result correctly. Cryptocurrencies that are not Byzantine fault tolerant don't really work. There would need to be some sort of centralized coordination, which defeats the purpose. Like many digital currencies, Bitcoin gets around this problem by using a proof-of-work (PoW) consensus algorithm.
The three layers of a blockchain
So we know the difference between monolithic architecture and modular architecture, and we know that decentralized cryptocurrency networks must be tolerant of Byzantine faults. Let's mention the layers that we generally see in a blockchain: the application layer, the consensus layer and the network layer.
The consensus and network layers are where network nodes talk to each other and try to agree on a set of facts. The application layer is where you can do things yourself: think decentralized applications and smart contracts on Ethereum or custom transactions in Bitcoin.
➟Do you want to get started with cryptocurrencies? Buy Bitcoins (BTC) on Binance!
Tendermint Core
First, let's quickly clarify the terminology. We'll use the terms "Tendermint" and "Tendermint Core" interchangeably because we're just focusing on the technology.
However, Tendermint is the name of the company (founded by the developer who wrote the original white paper, Jae Kwon), while Tendermint Core is the software the company works on. More precisely, the software has two main components: its main consensus engine (Tendermint Core) and its application interface (ABCI).
Tendermint Core is a system that enables fault tolerance. In essence, it is a large distributed computer that simultaneously shows the same state to everyone. As long as at least two thirds of the participants are honest, everything works smoothly. But that’s the case for almost all blockchains, right? What makes it so special?
First of all, the consensus mechanism used is Proof of Stake (PoS). For each period, a random node from a set of validators is selected. This node must then propose the next block (in what is called a round-robin system). If the other validators are satisfied, the new block is added and the chain is updated. Finality is instant, unlike Bitcoin or Ethereum, there is no need to wait for confirmations to ensure your transaction is valid.
But wait, it's not over yet. The architecture of Tendermint Core is modular, with the application layer separated from the consensus and network layers. In French, this means that you can connect your own application layer to the other layers. There is no need to worry about incentives or consensus algorithms.
Maybe this isn't too exciting for the end user. But for developers, the ability to leverage an existing framework means they can jump straight into building apps without having to set up an entire network. Data from the blockchain can be routed to the embedded layer, allowing developers to write software in any language.
The magic happens with something called the Blockchain Application Interface, or simply, ABCI. Think of it like the GPIO pins you have on a Raspberry Pi. You can hook up all kinds of third-party components to these, from LEDs to elaborate watering systems for your plants. Similarly, ABCI defines the boundary between blockchain and the applications on it.
What's so great about Tendermint Core?
Separating the application interface and consensus mechanism allows greater flexibility for a range of decentralized applications, with the aim of integrating any programming language into their business logic.
For a concrete example of what can be done, just check out the Ethermint site: a project that took the Ethereum codebase, removed the proof-of-work mechanism, and added the Ethereum Virtual Machine on top of Tendermint .
This made it possible to do some interesting things. First, Ethereum developers could easily transfer their smart contracts to the new engine, or write new contracts in the Solidity language. In addition to providing Ethereum functionality, Ethermint acts as a proof-of-stake Ethereum, giving us a glimpse of what a Casper implementation in Ethereum 2.0 could look like.
Blockchain interoperability
The promise of an “Internet of Blockchains” is what attracts many people to Tendermint-based protocols. Interoperability is a long-standing addition to the cryptocurrency space, meaning hundreds of individual blockchains would become compatible.
Currently, a lot of work has gone 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 connected to the Cosmos network as a whole, through what is called the Cosmos Hub, where they can communicate with other people.
Many popular projects have been built with the Cosmos SDK, such as Binance Smart Chain (BSC), KAVA, Band Protocol, Terra, and IRISnet.
To conclude
As a blockchain engine, Tendermint has attracted the attention of many in the crypto-sphere, from developers to end users.
If the software continues to gain traction, it could very well serve as the backbone for an Internet of blockchains. As we've seen, a few projects have already been launched with the Cosmos SDK to bring this vision to life.