2018-06-22 02:36:54 +02:00
# Application BlockChain Interface (ABCI)
Blockchains are systems for multi-master state machine replication.
**ABCI** is an interface that defines the boundary between the replication engine (the blockchain),
and the state machine (the application).
Using a socket protocol, a consensus engine running in one process
can manage an application state running in another.
Previously, the ABCI was referred to as TMSP.
The community has provided a number of addtional implementations, see the [Tendermint Ecosystem ](https://tendermint.com/ecosystem )
2018-11-09 09:11:06 -05:00
## Installation & Usage
2018-06-22 02:36:54 +02:00
2018-11-09 09:11:06 -05:00
To get up and running quickly, see the [getting started guide ](../docs/app-dev/getting-started.md ) along with the [abci-cli documentation ](../docs/app-dev/abci-cli.md ) which will go through the examples found in the [examples ](./example/ ) directory.
2018-06-22 02:36:54 +02:00
2018-11-09 09:11:06 -05:00
## Specification
A detailed description of the ABCI methods and message types is contained in:
2018-06-22 02:36:54 +02:00
2018-11-09 09:11:06 -05:00
- [The main spec ](../docs/spec/abci/abci.md )
- [A protobuf file ](./types/types.proto )
- [A Go interface ](./types/application.go )
2018-06-22 02:36:54 +02:00
2018-09-04 23:20:45 +04:00
## Protocol Buffers
2018-06-22 02:36:54 +02:00
2018-11-09 09:11:06 -05:00
To compile the protobuf file, run (from the root of the repo):
2018-06-22 02:36:54 +02:00
```
2018-11-09 09:11:06 -05:00
make protoc_abci
2018-06-22 02:36:54 +02:00
```
See `protoc --help` and [the Protocol Buffers site ](https://developers.google.com/protocol-buffers )
2018-11-09 09:11:06 -05:00
for details on compiling for other languages. Note we also include a [GRPC ](https://www.grpc.io/docs )
2018-06-22 02:36:54 +02:00
service definition.