Skip to main content
Version: main

CosmWasm ICA Controller

Concepts Basics

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.

High Level Overview

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.

note

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.