Summary
The blockchain you know and love has a fairly rigid structure. As a developer, you have two options in this situation: build the application in a restricted environment, or fork the code and create your own chain. However, creating your own chain is not easy – you also need to launch the network and decide on the consensus mechanism to use.
Tendermint is open source software for launching blockchains, allowing you to write applications in any language. Even better, it can communicate with other blockchains.
Creating a cryptocurrency or blockchain network requires a lot of work, far beyond initialization database. It requires a delicate balance of incentives and trade-offs between security, decentralization, and scalability.
It makes sense that some teams have explored a range of different methods to build the most powerful blockchain ecosystem possible. In this article, we’ll take a closer look at one of these methods: Tendermint.
If you know something about blockchain, you will feel Tendermint Much of the content seems familiar. Before we dive in, let's first review some key concepts.
Tendermint is a blockchain stack. Bitcoin, Ethereum, etc. are also blockchain stacks. Remember, it’s not just about the blockchain database itself, it’s also about the peer-to-peer network of nodes, how they interact with each other, and what you can do with transactions and smart contracts. The goal is to get everyone to a unified state (such as a snapshot of a database) without trusting anyone else.
To a large extent, today’s major blockchains have figured out the “cheats” to achieve this. However, they often rely on integrated architecture: a software engineering concept that means components are interconnected and dependent on each other. You can't take a piece of it and plug it into another architecture.
If you want flexibility, a monolithic architecture is not ideal. In the opposite type of model (with amodular architecture), you can adjust individual components without worrying about breaking any architecture. With a monolithic architecture, you must ensure that each component remains compatible when you upgrade individual components.
Now that we understand the difference, we can continue to understand the Tendermint protocol.
You may already know that the biggest innovation of Bitcoin is that it solves the so-called Byzantine Generals Problem. We won't discuss this in detail here (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 environment.
These participants do not know whether others are lying or whether the messages sent between them have been tampered with. Even if these problems exist, if participants can agree on a set of facts, the system is said to be Byzantine Fault Tolerant.
Obviously, in a decentralized environment, it is crucial to get this right. Cryptocurrencies that don't have Byzantine fault tolerance don't really work - you need some kind of centralized organization to coordinate, which defeats the purpose. Like many digital currencies, Bitcoin solves this problem by using the Proof of Work (PoW) consensus algorithm.
We already know the difference between integrated/modular architecture and also know about decentralization Cryptocurrency networks need to be Byzantine fault tolerant. Next, let’s talk about the three-layer architecture we usually see in blockchain: application layer, consensus layer and network layer.
The consensus layer and network layer are where network nodes communicate with each other and try to agree on a set of facts. The application layer allows you to do it yourself - like decentralized applications and smart contracts in Ethereum or custom transactions in Bitcoin.
➟ Want to start a digital currency journey? Welcome to buy Bitcoin (BTC) on Binance!
First, let’s quickly clarify a term. In this article, we will use "Tendermint" and "Tendermint Core" interchangeably because we are only focusing on this technology.
However, Tendermint is the name of the company (founded by Jae Kwon, the developer who originally wrote the white paper), and Tendermint Core is the actual software the company is developing. More specifically, the software has two main components: the core consensus engine (Tendermint core) and the application programming interface (ABCI).
Tendermint Core is a fault-tolerant system. Essentially, it's a large distributed computer that displays the same status to everyone at the same time. As long as at least two-thirds of the participants are honest, everything will go smoothly. But that’s the case with almost every blockchain, isn’t it? What's so special about it?
First of all, the consensus mechanism used by Tendermint Core is Proof of Stake (PoS). A random node is selected from a set of validators every epoch. The node must then propose the next block (on a so-called round-robin system). If other validators are satisfied with it, a new block is added and the chain is updated. Results are determined instantly - unlike Bitcoin or Ethereum, there is no need to wait for confirmations to ensure your transaction is valid.
Don’t worry, it has other features! Tendermint Core adopts a modular architecture, and the application layer is separated from the consensus layer and network layer. Simply put, this means you can plug your own application layer into the stack without having to worry about complicated incentive mechanisms or consensus algorithms.
This should come as no surprise to the end user. But for developers, being able to leverage existing frameworks means they can build applications directly without having to set up an entire network. Data from the blockchain can be piped to the integration layer, allowing developers to write software in any language.
The magic happens with what’s called the Application Blockchain Interface (or ABCI for short). You can think of it like the GPIO pins on a Raspberry Pi computer. You can connect a variety of third-party components to these pins, from LEDs to elaborate plant sprinkler systems. In a similar way, ABCI defines the boundaries between blockchains and the applications running on them.
The separation of application programming interfaces and consensus mechanisms provides distributed applications with greater flexibility to incorporate any programming language into their business logic.
You only need to look at Ethermint as a concrete example to see how useful it can be: Ethermint takes the Ethereum codebase, removes the proof-of-work mechanism, and builds the Ethereum Virtual Machine on top of Tendermint.
This makes some interesting operations possible. First, Ethereum developers can easily port their smart contracts to the new engine or write new contracts using the Solidity language. In addition to providing Ethereum functionality, Ethermint can also serve as a proof of stake for Ethereum, giving us a glimpse of what Casper will look like in Ethereum 2.0.
The promise of a "blockchain Internet" has attracted many people to use the Tendermint protocol. Interoperability is a long-awaited addition to the cryptocurrency space, as it means hundreds of individual blockchains will become cross-compatible.
A lot of work has gone into the Cosmos SDK, an open source framework that allows anyone to create application-specific public or private blockchains. These blockchains can then be plugged into the wider Cosmos network through the so-called Cosmos Hub, where they can communicate with other blockchains.
Many popular projects have been built using the Cosmos SDK, such as Binance Smart Chain (BSC), KAVA, Band Protocol, Terra and IRISnet.
As a blockchain engine, Tendermint has attracted many stakeholders in the cryptocurrency field Attention, including developers and end users.
If this software continues to gain traction, it is likely to become the backbone of the blockchain Internet. As we can see, several projects are already enabling the Cosmos SDK to realize this vision.