Tendermint is an open source, blockchain & language agnostic socket protocol that facilitates distributed application deployment. In particular, banks could run a Tendermint enabled ledger with publicly identified validators for fast settlement of transactions. I had an opportunity to chat with Jae Kwon, CEO & founder of Tendermint, about the potential for the blockchain stack.
*How did Tendermint get started?
Tendermint’s mission is to power the world’s blockchains with speed, security, and scalability.
Tendermint started in early 2014 when we realized that Bitcoin’s proof-of-work consensus algorithm, while secure, had significant drawbacks in terms of speed and scalability. We searched for other means to secure a blockchain ledger, and found a partial solution in academic papers dating back to 1988. Since then we’ve iterated upon the algorithm to make it faster, and now we’re making it easier to use to create any blockchain application.
*What is the architecture of the Tendermint solution?
At the heart of it is an open-source consensus algorithm. Tendermint Core runs on all the replicas and handles the consensus, P2P network, blockchain storage and interfaces with the outside world through exposed RPC functions. Each Tendermint Core speaks to a custom blockchain application (which is a standalone process) via a network socket protocol called TMSP.
The network of Tendermint Core commits transactions, and once they’re committed they get pushed into the application via TMSP. At the end of a block, the Merkle root hash is returned from the application and inserted into the blockchain. That’s the simplified picture. In a basic application, the business logic connects to a special key-value database for storing the application state.
*How does Tendermint remove complexity of blockchain app development, deployment and management?
Today, the best way to create blockchain applications is by forking an existing complex monolithic stack (e.g. Bitcoin), or writing smart contracts in Solidity to be run on the Ethereum virtual machine. Now there’s a third option — you can write your application in any language, and expose that application to Tendermint Core via a network socket (TMSP). We also provide a Merkle-izing database called MerkleEyes to help with storing the application state so that your smart-phone can securely check account balances and so on.
In terms of deployment and management, we currently provide the MintNet tool so you can deploy your blockchain to any cloud service provider (e.g. AWS EC2, DigitalOcean, etc) very quickly. We are also creating additional tools for seamless deployment and management of blockchains in any environment.
*How do you partner with blockchain application platforms like Eris? What other blockchain tech firms or apps is Tendermint partnering with?
Eris’s flagship blockchain product, ErisDB, is built on Tendermint. Anyone can do what Eris is doing, because Tendermint Core is GPLv3. We’re getting a lot of interest from blockchain software vendors that need Tendermint for its security, speed, and scalability. There are other vendors building on Tendermint today.
In terms of explicit partnerships, we’re interested in working with a few select partners. We have one foreign exchange partner, and we’re still deciding on the second and possibly third partner to get us started. More to be published in the coming months.
*What are the characteristics of Tendermint’s security model?
Essentially it’s about Byzantine fault-tolerance plus accountability. That is, in order for the system to get attacked, it requires a significant portion of the validators to attack the system from within. Once the system gets attacked, you can figure out who is responsible for the attack, and punish them in any way. For example, validators might need to post collateral before joining the network.
In Bitcoin, the security model is different. It costs energy to attack the system, but you have no idea who is responsible for an attack. Because of the anonymity of miners, they can’t be held accountable for an attack with collateral or anything beyond the energy already required for mining.
*Can you explain in layman’s terms what BFT (Classical Byzantine Fault Tolerant) consensus algorithm is?
A consensus algorithm is one that ensures that multiple independent actors come to agreement about anything. In a blockchain, multiple independent miners or validators need to come to agreement about which blocks have been committed.
A fault-tolerant consensus algorithm is a consensus algorithm that can tolerate failure of any nodes (e.g. miners or validators). By failure, I’m referring to fail-stop failures, where a miner or validator crashes or goes offline. The key metric for fault-tolerant consensus algorithms is the threshold for how many failures the system can tolerate. For example, Raft is a fault-tolerant consensus algorithm can tolerate up to 49.99% of node failures.
A Byzantine fault-tolerant consensus algorithm is a fault-tolerant consensus algorithm that can tolerate not just fail-stop failures, but arbitrary failures. For example, one or more nodes that get hacked by a malicious hacker might be coordinated to subvert consensus from within. Bitcoin is exciting because it can tolerate such attacks from within (e.g. any miner) to a significant degree. Tendermint is similar, except it doesn’t require significant energy expenditure for its security.
*How suitable is Tendermint for the financial services industry?
It’s ideal for the financial services industry. It’s faster to commit transactions, it doesn’t require mining, and it’s potentially much more secure with identified actors who have put up collateral. Banks are already looking into using Tendermint consensus. Just yesterday, Eris announced that 40 banks and R3 have successfully concluded a proof-of-concept test. ErisDB is powered by Tendermint.
*What does Tendermint do for transactional speed?
There are two factors to consider. One is transaction throughput, and the other is commit speed. Tendermint makes a lot of optimizations to make the commit speed faster. For example, during normal operation it only requires 2 rounds of communication among the validators to commit a block (e.g 2-phase-commit). This is optimal for the BFT threshold we’re aiming for.
For transaction throughput, we’ve architected Tendermint Core to speak to the application via an asynchronous network socket protocol. This means Tendermint Core doesn’t need to wait for each transaction to get processed by the application. So, the bottleneck in transaction throughput isn’t in Tendermint, but in the particular business logic that you want to run on Tendermint. For example, a smart contract written in Solidity for the Ethereum virtual machine (running with Tendermint Core via TMSP) might be slower than an application written natively in Golang or Java, fine-tuned for throughput performance.
*What customers or kinds of customers are your deploying Tendermint for?
Everyone interested in blockchain applications. From Bitcoin to Ethereum, to future applications.
*Eris is on AWS, Azure and with PwC. Is there a plan to offer your service through third party platforms?
Yes. Also, today, you can launch your private blockchain to any cloud provider using the MintNet tool. We use this for launching testnets. We will be announcing more tooling in the near future.