tm-abci

Python based ABCI Server for Tendermint


Keywords
blockchain, tendermint, abci, asyncio, python-3-6, tendermint-applications
License
Apache-2.0
Install
pip install tm-abci==0.6.3

Documentation

Build blockchain applications in Python for Tendermint

Version

Supports ABCI v0.15.0 and latest Tendermint (0.26.0)

Installation

Requires Python >= 3.6.5

pip install tm-abci OR python setup.py 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 https://github.com/tendermint/abci
  3. Run it

See the example app counter.py application under the examples directory here: https://github.com/SoftblocksCo/tm-abci/blob/master/examples/counter.py