Python based ABCI Server for Tendermint

blockchain, tendermint, abci, asyncio, python-3-6, tendermint-applications
pip install tm-abci==0.6.3


Build blockchain applications in Python for Tendermint


Supports ABCI v0.15.0 and latest Tendermint (0.26.0)


Requires Python >= 3.6.5

pip install tm-abci OR python install

Generating Protobuf

ONLY needed for developing this code base, not to create apps. If you just want to create apps, goto Getting Started

  1. Update all .proto files (protobuf dir)
  2. Install protoc
  3. Install go
  4. Install gogo protobuf via go
  5. Run make gogo

Or using Docker container:

  1. Update all .proto files (protobuf dir)
  2. Build image:sudo docker build -t abcidev .
  3. Run container: sudo docker run -it abcidev sh
  4. Inside container run: make gogo

Testing with tm-bench

Use this if you want to test throughput of server and application. By default, dummpy app is used, you can change it in docker-compose.yml, abci command section (before build).

  1. Build tm-bench and move to tm-abci directory (you can get it here)
  2. Change testing config in tm-bench command section of docker-compose.yml
  3. Run sudo docker-compose -f docker-compose.yml up -d
  4. Wait about minute (or more/less if you changed default) and run sudo docker-compose -f docker-compose.yml logs --tail 50 tm-bench

Getting Started

  1. Extend the BaseApplication class
  2. Implement the Tendermint ABCI callbacks - see
  3. Run it

See the example app application under the examples directory here: