CosmWasm ICA Controller
Welcome to the documentation for CosmWasm Interchain Accounts Controller. This document will guide you through
understanding the ICS-27
Interchain Accounts protocol and how to use cw-ica-controller
to create and manage interchain accounts on
any IBC enabled CosmWasm chain.
The CosmWasm ICA Controller is a CosmWasm contract that implements the ICS-27 interchain accounts controller in pure Rust. It is designed to be used by other CosmWasm contracts to create and manage interchain accounts on the chain where the contract is deployed.
High Level Overview
The following diagram shows how cw-ica-controller
works at a high level.
The cw-ica-controller
contract code is deployed on a chain that supports IBC CosmWasm. This chain does not need
to support ICS-27 interchain accounts nor does it need to support any custom IBC bindings. Then when an external
account or a contract instantiates a cw-ica-controller
contract, the contract will initiate the ICS-27 handshake
with a chain that supports ICS-27 interchain accounts based on the options provided by the caller.
The counterparty chain need not be a CosmWasm chain. It can be any chain that uses ibc-go and supports ICS-27
.
Such as CosmosHub, Osmosis, etc.
Then the rest of the ICS-27 handshake is completed by the relayers automatically. Both the hermes relayer and the
go relayer support ICS-27
interchain accounts. Once the handshake is complete, the cw-ica-controller
contract
makes a callback to the callback contract if one was provided during instantiation.