- Tendermint software helps replicate applications, securely and consistently, across different systems in a distributed system.
- The Tendermint core and ABCI forms are integral building blocks.
Tendermint is software that has a high level of protection against double spends attacks and does not require the energy-intensive Proof-of-Work consensus mechanism. Several other protocols were launched to solve the challenges faced by PoW, however, some suffered from the nothing at stake problem, where the participants had nothing to lose, making the consensus model useless. Other protocols required some nodes to depend on the trustworthiness of other nodes, inducing trust in a supposedly trustless network.
Tendermint is an improved version of the DLS protocol and flexible with 1/3 Byzantine participants, i.e. the algorithm will run even if 1/3 of participants fail. Any application built atop Tendermint can be securely replicated/launched across several machines in a distributed system.
Avoiding Fault Tolerance in a distributed system requires secure and consistent replication of data. However, it is difficult to achieve. Consistent replication means that if a file is updated on one system, it should be updated on other systems as well. Otherwise, the files will be different. Secure replication means the system should not fail if some faulty participants are present.
How Does Tendermint Work?
Tendermint has two basic pillars: Tendermint core and ABCI:
- Tendermint Core
This is the consensus mechanism used by Tendermint which is a Byzantine Fault Tolerant (BFT) middleware. The height in Tendermint is the unique identity of a block.
The consensus algorithm is explained in the following steps:
Image 1, shows the block flow diagram of the Tendermint core.
Step 1: Before each round, a proposer is chosen who will propose the block for. The first step is Propose step where the proposer broadcasts the proposal of the block to their peers through gossip.
Step 2: Before prevoting occurs, each validator has to make a decision. If the validator received an acceptable/valid proposal for the block, he signs a prevote and broadcasts it. If the validator received an invalid proposal or no proposal at all, he signs and broadcasts a nil prevote. All nodes in the round gossip have prevotes with his peers.
Step 3: During the start of precommit step, if a validator received more than 2/3 prevotes for an acceptable block, then he signs and broadcasts a precommit for that block. If he received more than 2/3 nil prevotes, then the proposal is not accepted, similar to the case of not receiving 2/3 acceptable prevotes.
During its ending, each node decides either to enter the commit step or continue with the propose step.
Step 4: As mentioned in the figure, two parallel conditions need to be satisfied for this step. First, each node must get a block committed by the network and one has to sign and broadcast a commit for the block.
Second, he has to wait until he receives a minimum of 2/3 commits for the block.
After both conditions are satisfied, a new height / new identity is created for a block and finally a block is created.
Application Blockchain Interface (ABCI)
All the blockchains mostly have a monolithic structure i.e. a big container that has all the codes like consensus protocol, transaction details, account balances, etc. Thus, if someone needs to use a particular section of the giant code, it is challenging for them, especially when the code is arranged in a spaghetti model. Also, you can use only the language which is used by the blockchain.
ABCI is a bridge between the Tendermint core and the application running on top of it. Cosmos SDK (Software Development Kit) primarily uses the Tendermint core. Hence, it can be called a bridge between tendermint core and apps built through SDK.
With the help of ABCI, BFT duplication of applications in any programming language.
Final Thoughts
The Cosmos Network uses the Tendermint core as its basic consensus model. It provides developers with a platform to build blockchains backed by the BFT. In the future, the performance of Tendermint can be further optimized to improve its capacity.
Tendermint is also developing Emeris, a cross-chain crypto app store in the coming future, which will be the one-stop for decentralized apps.