# Tendermint Docs - Link:: https://docs.tendermint.com/master/ - # Introduction - ## What is Tendermint? - Software for securely running applications on many machines - Consists of two technical components - A blockchain - A generic application interface - It is a mi between blockchain and distributed key-value stores, like etcd, consul - ABCI - Application Blockchain Interface - So far, blockchains handle all of the following: - p2p peer connectivity - ledger - mempool - consensus on the most recent block - smart contracts - user permissions - ABCI makes it easy to separate the blockchain stack from the application stack - Tendermint Socket Protocol (Teaspoon) is ABCI for tendermint - ABCI consists of three message types - DeliverTx - The application checks every transaction received with the DeliverTx message against the current state - CheckTx. - Only validates a transaction - Commit - merkle tree root hash of the current application state to be placed in the next block header - ![](https://docs.tendermint.com/master/assets/img/abci.3542de28.png) - Determinism - Programming languages for the ABCI need to be deterministic and use deterministic techniques. GO, C, C++, Java can achieve this. - Consensus - ![](https://docs.tendermint.com/master/assets/img/consensus_logic.e9f4ca6f.png) - Stake - # Guides - ## Creating a built-in application in Go - # Getting started