Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

informalsystems/basecoin-rs

Repository files navigation

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:

  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://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

UML diagrams

activity diagram - DeliverTx

About

An example ABCI application making use of tendermint-rs and ibc-rs

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 8

Languages

AltStyle によって変換されたページ (->オリジナル) /