Tendermint is a consensus mechanism that enables secure and consistent launching of applications across multiple machines.
It operates with a Byzantine Fault Tolerance of up to 33%, meaning applications running on Tendermint can function even if one of the three machines they run on fails.
Efficiency and Modularity in Tendermint
This node proposes a new block, which is then added to the chain with instant transaction finality.
The architecture of the Tendermint blockchain is modular, separating the consensus and network layers from the application layer.
This allows developers to build blockchain applications without developing their own consensus mechanism.
How Does Tendermint Work?
Tendermint consists of two main components: the Tendermint Core consensus engine and the Application BlockChain Interface (ABCI), which provides a generic application interface.
Tendermint Core ensures that all nodes record transactions in the same order.
ABCI enables transactions to be processed using any programming language.
Developers can use Tendermint to build applications on top of it, and they can choose their preferred programming language and development environment.
Tendermint Core is an asynchronous Byzantine Fault Tolerance (BFT) consensus protocol.
Validators take turns proposing and voting on blocks.
If a block is not committed, the protocol moves to the next round, where a new block is proposed.
Voting occurs in two stages, pre-commit and pre-vote. Once two-thirds of validators pre-commit to a block, it is considered committed.
Before moving to the next block, validators wait briefly for a complete block proposal.
This timeout-based approach classifies Tendermint as a weakly synchronous protocol. Validators proceed once they have received two-thirds of all validators’ responses.
Safety is ensured if less than one-third of the validators are Byzantine, preventing conflicting blocks from being committed at the same height.
Once a validator pre-commits a block, it becomes locked.
The block is then pre-voted on or can be unlocked and pre-committed for a new block.
ABCI bridges the Tendermint Core consensus layer and the Cosmos software development kit (SDK). It consists of three message types delivered from Tendermint Core to the application layer.
The application layer sends corresponding response messages back:
- The DeliverTX message delivers each transaction in the blockchain, allowing applications to validate received transactions.
- The CheckTX message is used for transaction validation in the mempool, where the transaction’s validity is checked.
- The Commit message is included in the following block header and is used to compute a cryptographic commitment to the current application state.
Tendermint Core establishes three ABCI connections to the application layer:
one for transaction validation during mempool broadcasting, one for the consensus engine to execute block proposals, and another for querying the application state.
Tendermint Consensus and Cosmos
Cosmos is a layer-1 blockchain with three layers: an application layer, a networking layer, and a consensus layer.
The Tendermint consensus serves as the backbone of the Cosmos consensus layer.
The ABCI application layer allows developers to build on the Cosmos blockchain or use the Cosmos SDK to build on IBC-compatible blockchains.
The Cosmos SDK is the implementation of ABCI and represents the modular aspect of the Cosmos ecosystem.
The Future of Tendermint
Tendermint, as a core contributor to the Cosmos ecosystem, provides software and development kits for Cosmos.
It is also developing Emeris, a crypto app store that will serve as a single platform for interacting with decentralized applications.
Cosmos is expanding its ecosystem with an update to Cosmos 2.0, which will enhance the connectivity between different IBC chains and add value to its economic system.
You can explore our Deep Dive Into The Cosmos 2.0 Network to learn more about Cosmos.