Tendermint is a consensus mechanism that allows applications to launch across different machines securely and consistently.
There are two components to Tendermint: the blockchain consensus engine and a generic application interface. The consensus engine is called Tendermint Core and ensures transactions are recorded on all nodes in the same order. The application interface is called Application BlockChain Interface (ABCI), which enables transactions to be processed in any programming language. Developers can use Tendermint to build applications on top of it. Moreover, unlike monolithic blockchains, they are free to choose the programming language and development environment.
A block can fail commitment because the proposer is offline or the network is slow. Before moving on to the next block, validators wait for a brief period of time to receive a complete block proposal. This timeout reliance defines Tendermint as a weakly synchronous protocol. Validators then continue after they have heard from two-thirds of all validators.
Safety is guaranteed as long as less than one-third of the validators are Byzantine. Therefore, validators can not commit conflicting blocks at the same height. Once a validator pre-commits a block, it is locked. The block is then pre-voted on or can be unlocked and pre-committed for a new block.
With ABCI, developers can write Byzantine fault-tolerant applications in any programming language. ABCI bridges the Tendermint Core consensus layer and the Cosmos software development kit (SDK). It consists of three message types that get delivered from Tendermit Core to the application layer. ABCI relays three corresponding response messages from the application layer:
The DeliverTX message delivers each transaction in the blockchain. Applications validate each received transaction with this message.
Tendermint Core creates three ABCI connections to the application; one for the validation of transactions when broadcasting in the mempool, one for the consensus engine to run block proposals, and one more for querying the application state.
A networking layer for relaying communication between the transactions and the chain.
A consensus layer for determining the state of the network.
The Tendermint consensus is the backbone of the Cosmos consensus layer. The ABCI application layer allows developers to build either on top of the Cosmos blockchain or use the Cosmos SDK to build on one of the IBC-compatible blockchains. The Cosmos SDK is the implementation of the ABCI and stands for the modular part of the Cosmos ecosystem.
Furthermore, Cosmos is branching out its ecosystem with an update to a Cosmos 2.0 version. The Cosmos blockchain will serve as the connective layer between the different IBC chains and add value to the Cosmos economic system.
You can read more about Cosmos in our Deep Dive Into The Cosmos 2.0 Network.
Join the thousands already learning crypto!