Awesome
basecoin-rs
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.
Requirements
So far this app has been tested with:
- Rust > v1.75
- 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:
- 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.
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://127.0.0.1:26358"
# ...
[p2p]
laddr = "tcp://0.0.0.0:26356"
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
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