IBC applications and middleware for Cosmos SDK blockchains
Early IBC work started in the ibc-go repo. As the repo grew, the need arose to parallelize the work among many teams.
The ibc-apps repo is meant to be an easily discoverable, navigable, central place for modules and middleware.
IBC-Apps is for:
-
Core ibc-go contributors; it frees them from having to maintain IBC Apps,
-
Publishers of ibc apps, so their apps can be easily found, and
-
Everyone who uses IBC and wants to benefit from the full range of its capabilities.
The Inter-Blockchain Communication Protocol (IBC) is a protocol to handle the authentication and transport of data between two blockchains. IBC requires a minimal set of functions, specified in the Interchain Standards (ICS). These specifications do not limit the network topology or consensus algorithm, so IBC can be used with a wide range of blockchains or state machines. The IBC protocol provides a permissionless way for relaying data packets between blockchains, unlike most trusted bridging technologies. The security of IBC reduces to the security of the participating chains.
IBC solves a widespread problem: cross-chain communication. This problem exists on public blockchains when exchanges wish to perform swaps. The problem arises early in the case of application-specific blockchains, where every asset is likely to emerge from its own purpose-built chain. Cross-chain communication is also a challenge in the world of private blockchains, in cases where communication with a public chain or other private chains is desirable.
Cross-chain communication between application-specific blockchains in Cosmos creates the potential for high horizontal scalability with transaction finality. These design features provide convincing solutions to well-known problems that plague other platforms, such as transaction costs, network capacity, and transaction confirmation finality.
IBC apps can be split into two categories - modules and middleware.
IBC Modules are self-contained applications that enable packets to be sent to and received from other IBC-enabled chains. IBC application developers do not need to concern themselves with the low-level details of clients, connections, and proof verification.
IBC Middleware are self-contained modules that sit between core IBC and an underlying IBC application. This allows developers to customize lower-level packet handling. Multiple middleware modules can be chained together.
If you'd like to include software in this repo, please see contributing.
Branch Name | IBC-Go |
---|---|
main | v8 |
release/v7 | v7 |
release/v6 | v6 |
release/v5 | v5 |
release/v4 | v4 |
Name | Type | Example | Stakeholders | Description |
---|---|---|---|---|
Async Interchain Query | Module | Link | Strangelove | Interchain Queries enable blockchains to query the state of an account on another chain without the need for ICA auth. |
IBC Hooks | Module | Link | Osmosis | The IBC hooks module is an IBC middleware that enables ICS-20 token transfers to initiate contract calls. |
Packet Forward Middleware | Middleware | Link | Strangelove | Middleware for forwarding IBC packets. |
Rate Limit | Module | Link | Stride | Module for rate limiting ingress/egress of packets. |
Modules and middleware developed by other awesome teams in the ecosystem:
Name | Type | Stakeholders | Description |
---|---|---|---|
Interchain KV Queries | Module | Ingenuity | An application that enables on chain querying of another IBC enabled chains state without the need for the chain being queried to implement the application. |
query | Module | Defund Labs | An application that enables on chain querying of another IBC enabled chains state without the need for the chain being queried to implement the application. Similar to the interchain-queries application in the row above but without callbacks. |
NFT Transfer (ICS 721) | Module | Bianjieai | An application that enables cross chain NFT transfer. |
CosmWasm NFT Transfer (ICS 721) | Wasm Contract | Public Awesome (Stargaze), Ark Protocol | An application that enables cross chain NFT transfer. CosmWasm implementation of the above, written in Rust. |
recovery | Middleware | Evmos | Middleware enabling the recovery of tokens sent to unsupported addresses. |
cw-ibc-rate-limit | Middleware | Osmosis Labs | Middleware that limits the in or out flow of an asset in a certain time period to minimise the risks of cross chain token transfers. This is implemented as a middleware wrapping ICS20 with the rate limiting logic implemented by CosmWasm contracts. |
Interchain Atomic Swap | Wasm Contract | Side Labs | An application that facilitates inter-blockchain peer-to-peer asset swaps. |
Interchain Liquidity | Wasm Contract | Side Labs | An application that splits the state of a weighted liquidity pool between two chains, enabling inter-blockchain automated asset swaps. |