What is Tendermint? | Everything You Need to Know
What is Tendermint?
Tendermint is a low-level protocol comprised of two main pieces: a blockchain consensus engine and a generic application interface. Tendermint Core, the blockchain consensus engine, facilitates the peer-to-peer network and provides a proof-of-stake (PoS) consensus. The Application BlockChain Interface (ABCI), on the other hand, acts as a tool for blockchains to link onto the Tendermint Core protocol.
The purpose of Tendermint is to be a blockchain engine. It’s meant to be a tool that developers can use to skip the nasty and technical cryptography and jump into the higher level blockchain and application development.
Tendermint Core is a packaged open-source piece of software made of two main parts. Chiefly, a Byzantine Fault Tolerant blockchain consensus engine. Secondly, a p2p networking protocol.
A General’s Consensus
Baked into Tendermint’s consensus algorithm is the fundamental concept of Byzantine Fault Tolerance (BFT). In order to understand BFT, it’s necessary to have an overview of what it’s solving: the Byzantine Generals Problem.
A long time ago a handful of generals and their armies were trying to attack a city. To defeat the city all the generals needed to attack at the same time – any less than full participation would mean the generals would lose. The issue is that none of the generals could reliably know when to attack the city. They were all secluded to each side of the city and communications between them were impossible to synchronize. Messages could be lost, corrupted or forged.
The challenge that faced the generals is compounded exponentially when more people or messages are factored in. Tendermint’s BFT Proof-of-Stake allows for one hundred validators to quickly and securely confirm their ledgers against each other. In other words, all validators know when to attack the city.
A BFT Proof-of-Stake algorithm overcomes the Byzantine Generals Problem by using a partially synchronous network model. Basically, this means that the generals surrounding the city – or the validators voting on a block – don’t need to act at a preset time. Blocks are not voted on a schedule or predetermined size.
Tendermint achieves this by first randomly assigning validators the right to propose a block. After blocks are proposed, validators vote in a multi-round deterministic process. Meaning, the first step is fairly indiscriminate and the second follows a prescribed order.
With Tendermint, validators are rotated on a deterministic weighted round-robin format. The more stake a validator has, the more times they may be elected as a leader. Currently, the protocol is capped at one hundred validators, however, it’s possible to increase the number of validators if needed.
The Applications Blockchain Interface
Stacked on top the Tendermint Core is the Application BlockChain Interface (ABCI). The ABCI is a Byzantine Fault Tolerant replicator of applications written in any language. You can replicate your blockchain applications written in C++, Python, Solidity, or any other language onto a prefab BFT blockchain engine.
The ABCI is the translator, wrapper, and socket between blockchain applications and the Tendermint blockchain engine they sit on.
Tackling the Monoliths
Layering ABCI on top of the Tendermint Core is a key step towards lowering barriers of access around developing with blockchains.
Most blockchain systems have a monolithic architecture, often restricting the languages that can be written atop them. For example, the Ethereum Turing-complete bytecode virtual-machine limits you to languages that are downward compatible with bytecode. Currently, that’s only Serpent and Solidity.
In contrast, the ABCI allows for any programming language to be stacked above and still be fully compatible with the underlying Tendermint Core engine. Developers don’t need to follow the single monolithic stack of the blockchain they choose. Instead, they can focus on the application logistics and remain virtually blockchain agnostic.
The Future of Tendermint is in the Cosmos
The creators of the open-source Tendermint have implemented a much larger project called Cosmos. Engineered to be an internet of blockchains, Cosmos networks together Tendermint based applications.
An interesting part of Cosmos is that applications do not have to originally be built on top of Tendermint to work within the Cosmos ecosystems. Cosmos takes advantage of Tendermint’s application replicator by hard-spooning existing blockchains onto Tendermint Core. Tendermint is not only a breeding ground for modularized blockchain apps but a blockchain cloning machine, too.
Just for further clarification, here’s how Jae Kwon, founder of Tendermint, describes a hard-spoon.
“Hard spoon: a new chain that takes into account state from an existing chain; not to compete, but to provide broad access.” – Jae Kwon
A few prominent projects looking to hard spoon their way over to Cosmos are OmiseGo, 0x, and FOAM. Each project’s token will then exist on top of Tendermint, then linked to the Cosmos network of blockchains.
Tendermint Core and ABCI together make up Tendermint – an open-source blockchain engine for developers of any programming language to build onto. Tendermint shifts developers focus away from the low-level cryptography and onto the application layer.
An analogy of what Tendermint is to blockchain would be to compare it to an artist’s canvas. You can express an endless number of ideas on canvas, yet a modern artist rarely needs to think about building and developing their own. Tendermint, like a canvas, is the foundation on which you can invent endless blockchain applications.
ABOUT THE AUTHOR
ABOUT THE AUTHOR
Marshall is an active writer and researcher covering blockchain technologies and their implications on society. He holds a B.A in Sociology from Western University and has been self-taught communications designer for a half-decade. Marshall has had the chance to experience a range of social structures around the globe, travelling to over 30 countries and always jumps at the chance to see the world from a different perspective.