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.75
- CometBFT v0.37
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:
- In a new branch in basecoin, update ibc revisions with the latest commit of the ibc-rs PR.
- Implement the necessary changes in basecoin in order to get it working with the latest commit revision of ibc-rs.
- Run
cargo clippy --all-features
andcargo clippy --no-default-features
and fix any issues that clippy raises. - Open a PR in the basecoin-rs repository, making sure to the link to the associated ibc-rs PR.
- Check to see if the integration tests pass.
$ cometbft init $ cometbft unsafe-reset-all
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://127.0.0.1:26358" # ... [p2p] laddr = "tcp://0.0.0.0:26356"
See the module documentation for more details -
# See all supported CLI options $ cargo run -- --help basecoin 0.1.0 USAGE: basecoin [FLAGS] [OPTIONS] Commands: start query Query a state of Basecoin application from the store help Prints this message or the help of the given subcommand(s) OPTIONS: --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