# 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
- 
- Determinism
- Programming languages for the ABCI need to be deterministic and use deterministic techniques. GO, C, C++, Java can achieve this.
- Consensus
- 
- Stake
- # Guides
- ## Creating a built-in application in Go
- # Getting started