created_at2024-05-13 10:33:36.850543
updated_at2024-05-13 10:33:36.850543
descriptionA simple implementation of an AVL store tailored for the basecoin application.
Sean Chen (seanchen1991)




At a high level, basecoin implements the application logic that sits between the Tendermint consensus layer and ibc-rs. It is a rudimentary Tendermint ABCI application that implements the following functionality in the form of modules -

  • bank - keeps track of different accounts' balances and facilitates transactions between those accounts.
  • ibc - enables support for IBC (clients, connections & channels)

Its main use-cases are serving as a testing ground and mock implementation for verifying the correctness and behaviour of the ibc-rs modules.


So far this app has been tested with:

  • Rust > v1.64
  • CometBFT v0.37

How to integrate ibc-rs changes into basecoin

Since basecoin serves as a suite of integration tests against ibc-rs's functionality, each ibc-rs PR also requires an accompanying basecoin PR. The steps to do this are:

  1. In a new branch in basecoin, update ibc revisions with the latest commit of the ibc-rs PR.
  2. Implement the necessary changes in basecoin in order to get it working with the latest commit revision of ibc-rs.
  3. Run cargo clippy --all-features and cargo clippy --no-default-features and fix any issues that clippy raises.
  4. Open a PR in the basecoin-rs repository, making sure to the link to the associated ibc-rs PR.
  5. Check to see if the integration tests pass.

Starting up an instance of basecoin

Step 1: Reset your local CometBFT node

$ cometbft init
$ cometbft unsafe-reset-all

Step 2: Modify CometBFT config

Edit the CometBFT config.toml file (default location ~/.cometbft/config/config.toml) to update the proxy_app and P2P laddr as follows.

proxy_app = "tcp://"
# ...
laddr = "tcp://"

Step 3: Module specific setup

See the module documentation for more details -

Step 4: Run the basecoin app and CometBFT

# See all supported CLI options
$ cargo run -- --help
basecoin 0.1.0

    basecoin [FLAGS] [OPTIONS]

    query   Query a state of Basecoin application from the store
    help    Prints this message or the help of the given subcommand(s)

        --config <FILE>  The path to the configuration file [default: config.toml]
        --verbose        Increase output logging verbosity to DEBUG level
        --quiet          Suppress all output logging (overrides --verbose)
    -h  --help           Prints help information
    -V, --version        Prints version information

# Run the ABCI application (from this repo)
# The -v is to enable trace-level logging
$ cargo run -- -v

# In another terminal
$ cometbft node

UML diagrams

system diagram

class diagram

activity diagram - DeliverTx

Commit count: 242

cargo fmt