If you are interested in blockchain technology, you may have heard of Tendermint, a blockchain engine that powers some of the most innovative and interoperable projects in the crypto space. But what exactly is Tendermint and how does it work? In this blog post, we will explain the basics of Tendermint, its principles, advantages, and why it is more familiar than other consensus mechanisms.
What is Tendermint?
Tendermint is a software that allows anyone to create, run, and join blockchains that are secure, scalable, and interoperable. Tendermint consists of two main components: Tendermint Core and Tendermint ABCI as you see on fig 1.
Tendermint Core is the consensus layer that ensures that all nodes in a network agree on the same state of the blockchain. Tendermint Core uses a Byzantine Fault Tolerant (BFT) Proof-of-Stake (PoS) algorithm that can tolerate up to one-third of malicious nodes and achieve fast and final block confirmation.
Tendermint ABCI is the application layer that allows developers to build any kind of blockchain application in any programming language. Tendermint ABCI is a simple and generic interface that connects the consensus layer with the application layer, enabling modularity and flexibility.
Together, Tendermint Core and Tendermint ABCI form the Tendermint Stack, a framework that separates the consensus and the application logic, making it easy to create and customise blockchains.
What are the principles of Tendermint?
Tendermint is based on four key principles that guide its design and development:
- Accountability: Tendermint holds validators accountable for their actions and penalises them for misbehaviour, such as double-signing or being offline. This ensures that validators act honestly and reliably, and that the network remains secure and stable.
- Sovereignty: Tendermint allows each blockchain to have its own rules, governance, and identity, without compromising interoperability. This enables each blockchain to be sovereign and independent, and to cater to its own needs and preferences.
- Interoperability: Tendermint enables blockchains to communicate and exchange data and value with each other, using protocols such as Inter-Blockchain Communication (IBC) and Cosmos Hub. This creates a network of networks that can scale and collaborate, and that can offer a variety of services and solutions.
- Inclusivity: Tendermint aims to be inclusive and accessible to anyone who wants to participate in the blockchain ecosystem. Tendermint lowers the barriers to entry for developers, validators, and users, by providing a simple and user-friendly platform that supports a wide range of use cases and applications.
What are the advantages of Tendermint?
Tendermint offers several advantages over other consensus mechanisms and blockchain platforms, such as:
- High performance: Tendermint can process thousands of transactions per second, with an average block time of one second and instant finality. This means that transactions are confirmed as soon as they are included in a block, and that there are no forks or reorganisations.
- Low cost: Tendermint does not require intensive and wasteful mining, as in Proof-of-Work, or locking up large amounts of tokens, as in some Proof-of-Stake systems. Tendermint only requires a minimum amount of tokens to be staked by validators, and the transaction fees are minimal and affordable.
- High security: Tendermint can tolerate up to one-third of malicious nodes, and can recover from network partitions and attacks. Tendermint also enforces strict accountability and slashing mechanisms, that deter and punish any misbehaviour by validators.
- flexibility: Tendermint allows developers to build any kind of blockchain application, using any programming language, and any data structure. Tendermint also supports smart contracts, both native and virtual machine based, and can integrate with other platforms, such as Ethereum and Cosmos.
In Tendermint’s Practical Byzantine Fault Tolerance (PBFT) consensus algorithm, nodes work together to reach agreement on the order of transactions in a distributed system. Here’s an overview of the key phases and types of nodes involved in the consensus process:
- Pre-prepare Phase:
- The proposer node, known as the leader, initiates the consensus process by proposing a block of transactions.
- The leader sends a “pre-prepare” message to all other nodes in the network, containing the proposed block and its sequence number.
- Prepare Phase:
- Upon receiving the pre-prepare message, each node verifies the message’s validity and checks if the proposed block is consistent with its view of the blockchain history.
- If the pre-prepare message is valid, each node broadcasts a “prepare” message to all other nodes, indicating its preparedness to commit the proposed block.
- The prepare message contains the block’s hash and the node’s digital signature.
- Commit Phase:
- After receiving a sufficient number of prepare messages from other nodes, a node broadcasts a “commit” message to the network, signifying its commitment to the proposed block.
- The commit message includes the block’s hash and the node’s digital signature.
- Checkpointing:
- To ensure the safety of the consensus process, nodes periodically agree on a checkpoint, which is a specific block in the blockchain.
- Checkpointing helps in preventing nodes from rolling back to a previous state and allows for efficient recovery in the event of a failure.
Throughout the consensus process, different types of nodes are involved:
- Leader (Proposer):
- The leader node is responsible for initiating the consensus process by proposing a block of transactions.
- It rotates among the nodes in a deterministic order, ensuring fairness.
- Validators:
- Validators participate in the consensus process by verifying and validating the proposed blocks.
- They receive and process pre-prepare, prepare, and commit messages from other nodes.
- Validators contribute to the voting process and collectively decide on the final order of transactions.
- Byzantine Nodes:
- Byzantine nodes are malicious or faulty nodes that may deviate from the protocol and attempt to disrupt the consensus process.
- They can send inconsistent or conflicting messages to confuse other nodes.
- Tendermint’s PBFT consensus algorithm can tolerate up to one-third of the total nodes being Byzantine, as long as the remaining nodes are honest and follow the protocol.
Here’s a simplified diagram illustrating the flow of messages in Tendermint’s PBFT consensus algorithm:
Tendermint and more information
Let’s start by moving out the academic research papers that study Tendermint and its security, as well as compare it with other blockchain protocols.
There are many of them such as:
TenderTee: Secure Tendermint [5] This paper proposes an enhanced version of Tendermint, called TenderTee, that can tolerate up to half of the nodes being malicious, by using a trusted abstraction called attested append-only memory. The paper also proves the correctness of TenderTee for both one-shot and repeated consensus specifications.
- A Computational Study on Fairness of the Tendermint Blockchain Protocol[6]. This paper analyzes the fairness of Tendermint, which is the extent to which anyone can join and contribute to the network, regardless of their resources, identity, or location. The paper uses a multi-agent blockchain simulator to compare the default Tendermint model and a Tendermint model for fairness, under different scenarios and parameters.
- Fair and trustworthy: Lock-free enhanced tendermint blockchain algorithm [7]. This paper presents a lock-free version of Tendermint, which eliminates the need for locking a block proposal during the consensus process, and thus improves the performance and security of the protocol. The paper also shows that the lock-free Tendermint satisfies the properties of fairness and trustworthiness.
- The latest gossip on BFT [8] This paper presents the design and implementation of Tendermint, and explains how it achieves BFT consensus using a gossip protocol and a round-robin proposer selection. The paper also discusses the challenges and trade-offs of Tendermint, such as the network assumptions, the validator set management, and the fork accountability.
Tendermint is a blockchain protocol[2] that consists of two main components: a consensus engine and a generic application interface. The consensus engine, called Tendermint Core, uses a variant of PBFT (Practical Byzantine Fault Tolerance) algorithm to achieve
fast and secure consensus among distributed nodes. PBFT is a consensus algorithm that allows a system to reach agreement even when some nodes are faulty or malicious[1]
It works by having a leader node, called the primary, propose a new block of transactions to other nodes, called replicas. The replicas then validate the block and send a response to the primary. The primary collects the responses and broadcasts them to all replicas. The replicas check if at least 2f+1 responses agree on the block, where f is the maximum number of faulty nodes. If so, the block is committed and the process repeats with a new primary[4]
Tendermint is more familiar than other PBFT-based protocols because it is designed to be language-agnostic, scalable, and interoperable. It supports state machines written in any programming language through the ABCI (Application Blockchain Interface) protocol [3] .
It also enables cross-chain communication through the IBC (Inter-Blockchain Communication) protocol [2] Tendermint is used by many blockchain platforms, such as Cosmos, Binance DEX, and Oasis Labs.
Tendermint PBFT is a consensus algorithm that combines the ideas of Practical Byzantine Fault Tolerance (PBFT) and Proof-of-Stake (PoS) to achieve fast and secure transaction ordering and finality on a blockchain network. Tendermint PBFT consists of two main components: a BFT consensus engine and a generic application interface. The BFT consensus engine is responsible for coordinating the nodes and reaching an agreement on the state of the network, while the application interface allows any deterministic state machine to be plugged into the engine.
The nodes in the Tendermint PBFT network are called validators, and they are the ones who participate in the consensus process and validate transactions. The validators are selected based on their stake, which is the amount of tokens they have locked in the network. The stake determines the voting power and the reward of each validator. The validators are also divided into two types: the proposer and the committee. The proposer is the node that proposes the next block to be added to the blockchain, while the committee is the set of nodes that vote on the proposed block. The proposer and the committee are rotated in a round-robin fashion, based on their voting power.
The consensus process in Tendermint PBFT is divided into rounds and heights. A height is a sequence number that represents the current block number, while a round is a sub-sequence number that represents the current attempt to reach an agreement on a block. Each round consists of four phases: propose, prevote, precommit, and commit. In each phase, the nodes exchange messages and votes, and follow a set of rules to ensure the safety and liveness of the protocol. The following diagram illustrates the consensus process in Tendermint PBFT:
Tendermint PBFT consensus process
- Propose: In this phase, the proposer for the current round broadcasts a block proposal to the other validators. The block proposal contains the transactions, the hash of the previous block, and the round and height numbers. The validators check the validity of the block proposal, and wait for a predefined timeout before moving to the next phase.
- Prevote: In this phase, the validators cast their votes for the block proposal they received in the previous phase. A vote is a signed message that contains the hash of the block, the round and height numbers, and the type of the vote (prevote or precommit). The validators broadcast their votes to the other validators, and wait for a predefined timeout before moving to the next phase.
- Precommit: In this phase, the validators cast their votes for the block that received more than two-thirds of the prevotes in the previous phase. This block is called the locked block, and it means that the validators have reached a tentative agreement on it. The validators broadcast their votes to the other validators, and wait for a predefined timeout before moving to the next phase.
- Commit: In this phase, the validators check if the block that received more than two-thirds of the precommits in the previous phase is the same as the locked block. If yes, then the validators commit the block to the blockchain, and increase the height by one. If no, then the validators start a new round with a higher round number, and repeat the process until they reach an agreement.
The Tendermint PBFT consensus algorithm guarantees that the honest nodes can reach an agreement on the state of the network, even if up to one-third of the nodes are faulty or malicious. The algorithm also ensures that the committed blocks are final and irreversible, meaning that there are no forks or rollbacks in the blockchain. The algorithm is optimised for low latency and high throughput, as it can process thousands of transactions per second with sub-second finality.
Fig Tendermint core illustration
Fig 2: The diagram below illustrating the flow of messages via ABCI.
Conclusion
Tendermint is a powerful and versatile blockchain engine that can support a wide range of applications and use cases. Tendermint combines a robust and efficient consensus layer with a flexible and generic application layer, to create a modular and interoperable blockchain framework. Tendermint is based on four principles: accountability, sovereignty, interoperability, and inclusivity, and offers several advantages, such as high performance, low cost, high security, and high flexibility. Tendermint is also more familiar than other consensus mechanisms, as it is based on a well-known algorithm, and is widely used by many projects and platforms in the blockchain space.
References:
[1] https://learn.bybit.com/blockchain/tendermint/
[3] https://tendermint.com/core/
[4] https://coincentral.com/tendermint-guide/
[5] https://eprint.iacr.org/2022/599
[6] https://www.mdpi.com/2078-2489/10/12/378/htm:
[8] https://arxiv.org/abs/1807.04938
[9] https://link.springer.com/article/10.1007/s40747-022-00907-2
Tim.0x
I am Tim, a technical writer with a strong background in writing about blockchain protocols; Layer-1s, Layer-2s and even rollups.
My writing skill is backed by my technical skills in JavaScript and Solidity as this helps me write well suited content for both developers and prospective users of any blockchain protocol.
-
Tim.0x#molongui-disabled-link
-
Tim.0x#molongui-disabled-link
-
Tim.0x#molongui-disabled-link
-
Tim.0x#molongui-disabled-link