{"id":13414434,"url":"https://github.com/davebryson/py-abci","last_synced_at":"2025-03-14T21:32:34.916Z","repository":{"id":49419743,"uuid":"89120563","full_name":"davebryson/py-abci","owner":"davebryson","description":"Build Tendermint blockchain applications in Python","archived":false,"fork":false,"pushed_at":"2024-04-25T22:20:30.000Z","size":310,"stargazers_count":66,"open_issues_count":5,"forks_count":33,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-09-22T06:42:38.365Z","etag":null,"topics":["abci","blockchain","tendermint"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davebryson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGE_LOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-23T05:51:53.000Z","updated_at":"2024-05-14T08:34:19.000Z","dependencies_parsed_at":"2024-06-19T22:54:12.850Z","dependency_job_id":"5a99d5dd-4ca3-4298-ac9a-03eca629d88a","html_url":"https://github.com/davebryson/py-abci","commit_stats":{"total_commits":105,"total_committers":10,"mean_commits":10.5,"dds":0.638095238095238,"last_synced_commit":"d43c7198f3408c374fb342a1db1a4a6b45b2dcab"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davebryson%2Fpy-abci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davebryson%2Fpy-abci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davebryson%2Fpy-abci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davebryson%2Fpy-abci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davebryson","download_url":"https://codeload.github.com/davebryson/py-abci/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221509012,"owners_count":16834812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abci","blockchain","tendermint"],"created_at":"2024-07-30T21:00:21.169Z","updated_at":"2024-10-26T07:31:08.928Z","avatar_url":"https://github.com/davebryson.png","language":"Python","funding_links":[],"categories":["Language bundles"],"sub_categories":["Python bundle"],"readme":"[![pypi](https://img.shields.io/pypi/v/abci.svg)](https://pypi.python.org/pypi/abci)\n[![build](https://travis-ci.org/davebryson/py-abci.svg?branch=master)](https://https://travis-ci.org/davebryson/py-abci)\n[![codecoverage](https://codecov.io/gh/davebryson/py-abci/branch/master/graph/badge.svg)](https://codecov.io/gh/davebryson/py-abci)\n\n# Py-ABCI\nBuild Tendermint blockchain applications in Python.  It's fun.  This library provides the core functionality needed to create Tendermint ABCI applications.\n\n## Supported Tendermint Version\n* Tendermint *0.34.24*\n* ABCI *0.17.0*\n\n## Installation\nRequires Python \u003e= 3.9\n\n`pip install abci`\n\nYou'll need a binary version of the Tendermint engine. \nAvailable here: https://github.com/tendermint/tendermint/releases\n\n**Make sure the Tendermint version you download matches the current support version of this library**\n\n## Quick Start - demo\n\nA very simple demo application is included and available from the command line as `counter`. You can find the code here: https://github.com/davebryson/py-abci/blob/master/src/example/counter.py\n\nTo try it out:\n1. Make sure you have the Tendermint binary setup locally and in your path.  To test it's working\nopen a terminal window and type:\n```text\n\u003e\u003e tendermint version\n```\nIt should output your version of Tendermint that should match the currently supported version \nof this library.\n\n2. Next, initialize Tendermint by running:\n```text\n\u003e\u003e tendermint init\n```\n\n3. Start the Tendermint node:\n```text\n\u003e\u003e tendermint node\n```\nThe node will start, but will be waiting for you application to start.\n\n4. Open another terminal, and start the `counter` application. The `counter` will be available\nfrom within the Python environment where you installed `abci`\n```text\n\u003e\u003e counter\n```\nYou'll see the application start, and in the Tendermint terminal, you'll see the output of \nblocks being produced\n\n5. Now, open a 3rd terminal window to send some transaction to the blockchain.  To do this we'll\nuse the `curl` application to send transaction to the local blockchain over http. For example:\n```text\n\u003e\u003e curl http://localhost:26657/broadcast_tx_commit?tx=0x01\n\u003e\u003e curl http://localhost:26657/broadcast_tx_commit?tx=0x02\n```\nThe counter application expects you to send `transactions` as numbers encoded as hex in order: 1,2,3...\nIt will reject and out-of-order numbers.  You can always see the latest accepted value by sending the\nrequest:\n```text\n\u003e\u003e curl http://localhost:26657/abci_query\n```\n\nTo shut down the application enter `CTRL-C`\n\n## Get Started\nTo start building your own application:\n1. Extend the `abci.application.BaseApplication` class\n2. Implement the Tendermint ABCI callbacks - see https://docs.tendermint.com/v0.34/spec/abci for details on how they work\n3. Start it:\n```python\nfrom abci.server import ABCIServer\n\napp = ABCIServer(app=MyApplication())\napp.run()\n```\nSee the ``counter.py`` application in the ``example`` directory https://github.com/davebryson/py-abci/blob/master/src/example/counter.py for a full example.\n\n\n## Developing on the code base\nIf you're working directly on the code base.  Install a local editable version:\n\n`pip install --editable '.[test]'`\n\n## Updating Protobuf code\n\n**You should only re-generate the protobuf code if you're updating the associated protobuf files, \nand/or contributing to this code base.  You do not need to rebuild protos to create apps.**  \n\nA note on protobuf:  The primary code directory is `abci`, but you'll notice additional \ndirectories: `gogoproto`, `tendermint`, and `protos`. \n\nThe `gogoproto` and `tendermint` directories are the protobuf generated code used by ``abci``. It adds proper Python modules and preserves all the import statements used by Tendermint for the various protobuf files spread \nacross their codebase.  The ``protos`` directory is the source .proto files.\n\nTo (re)build the protobuf files:\n\n1. Install `protoc` so it's available in your PATH as a command\n2. Run `make update-proto`\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavebryson%2Fpy-abci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavebryson%2Fpy-abci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavebryson%2Fpy-abci/lists"}