1 unstable release
| 0.14.0 | Jul 2, 2025 |
|---|
#8 in #btc
Used in babylon-test-utils
125KB
2K
SLoC
Cosmos BSN Contracts
This repository contains the CosmWasm smart contracts that enable the integration of Cosmos BSNs with the Babylon BTC Staking protocol.
Architecture
The contracts are written in Rust, and use the CosmWasm framework to interact
with the BSN's Cosmos application layer.
There's a thin layer which adds a babylon module
, which provides the necessary functionality to interact with the contracts
through privileged calls (sudo messages) and custom messages.
This thin layer is naturally written in Go, and uses the Cosmos SDK.
An integrator can import the babylon module into their Cosmos SDK-based chain,
and use the provided functionality to interact with the Cosmos BSN contracts,
following the demo app's guidelines and layout, which is provided in
babylon-sdk as well.
The entire solution is designed to be modular and extensible, for ease of integration and future upgrades.
A broad architecture diagram, along with the contracts' main interfaces, can be
found in the docs/ARCHITECTURE.md documentation.
Development
Prerequisites
Make sure you have cargo-run-script installed and docker running.
cargo install cargo-run-script
Clean the build
cargo clean
Build the contract
cargo build
Formatting and Linting
Check whether the code is formatted correctly.
cargo fmt --all -- --check
cargo check
cargo clippy --all-targets -- -D warnings
Alternatively, you can run the following command to run all the checks at once.
cargo run-script lint
Test the contract
Note: Requires the optimized contract to be built (cargo optimize)
Runs all the CI checks locally (in your actual toolchain).
cargo test --lib
Integration tests the contract
Note: Requires the optimized contract to be built (cargo optimize)
cargo test --test integration
Alternatively, you can run the following command, that makes sure to build the optimized contract before running the integration tests.
cargo run-script integration
Generate the schema
cargo run-script gen-schema
Generate the protobuf files
cargo run-script gen-proto
Generate test data
cargo run-script gen-data
Build the optimized contract
cargo run-script optimize
Dependencies
~28MB
~529K SLoC