This repository is the canonical home of the inter-blockchain communication protocol (IBC): the specifications that define it, and the implementations that run it.
It consolidates design rationale, protocol semantics, and encoding descriptions for IBC, including both the core transport, authentication, & ordering layer (IBC/TAO) and the application layers describing packet encoding & processing semantics (IBC/APP), alongside the software that deploys IBC onto a chain and relays packets across it.
Contributions are welcome. See CONTRIBUTING.md for contribution guidelines.
| Path | What it is |
|---|---|
spec/ |
The Interchain Standards: the specifications for the protocol itself. |
cli/ |
IBC CLI: deploys IBC onto a chain, and runs the relayer and attestor processes that carry packets across it. |
docs/ |
How IBC works, the contracts, and the CLI: tutorials and reference. |
e2e/ |
Repository-wide black-box acceptance tests. |
proto/ |
Canonical protobuf source files used across the services and implementations. |
gen/ |
Committed code generated from canonical schemas and contract artifacts. |
examples/ |
Runnable local chain setups to develop against. |
scripts/ |
Repository-level scripts. |
- What is IBC is a high level overview of what IBC does and what it is for.
- How IBC works covers the components that carry one packet between two chains.
- IBC CLI covers deploying IBC and running the processes that operate it.
For a high-level explanation of IBC, you can also read this blog post.
All standards at or past the "Draft" stage are listed here in order of their ICS numbers, sorted by category.
IBC v2 is the latest iteration of the IBC protocol. It streamlines the integration of IBC by removing the connection and channel handshake layers in favor of direct client-to-client packet flow. For an overview, see the IBC v2 introduction.
| Interchain Standard Number | Standard Title | Stage | Implementations | Maintainer |
|---|---|---|---|---|
| 2 | Client Semantics | Draft | ibc-go | Protocol team |
| 4 | Packet Semantics | Draft | ibc-go | Protocol team |
| 5 | Port Allocation | Draft | ibc-go | Protocol team |
| 24 | Host Requirements | Draft | ibc-go | Protocol team |
| 26 | IBC Application Callbacks | Draft | ibc-go | Protocol team |
| Interchain Standard Number | Version | Standard Title | Stage | Implementations | Maintainer |
|---|---|---|---|---|---|
| 27 | v2 | General Message Passing | Draft | ibc-go | Protocol team |
IBC v1 is the original version of the protocol. It establishes cross-chain communication through connection and channel handshakes before applications can exchange packets.
| Interchain Standard Number | Standard Title | Stage | Maintainer |
|---|---|---|---|
| 1 | ICS Specification Standard | N/A | Protocol team |
| Interchain Standard Number | Standard Title | Stage | Implementations | Maintainer |
|---|---|---|---|---|
| 2 | Client Semantics | Candidate | ibc-go, ibc-rs | Protocol team |
| 3 | Connection Semantics | Candidate | ibc-go, ibc-rs | Protocol team |
| 4 | Channel & Packet Semantics | Candidate | ibc-go, ibc-rs | Protocol team |
| 5 | Port Allocation | Candidate | ibc-go | Protocol team |
| 23 | Vector Commitments | Candidate | ibc-go, ibc-rs | Protocol team |
| 24 | Host Requirements | Candidate | ibc-go, ibc-rs | Protocol team |
| 25 | Handler Interface | Candidate | ibc-go, ibc-rs | Protocol team |
| 26 | Routing Module | Candidate | ibc-go, ibc-rs | Protocol team |
| 33 | Multi-hop Messaging | Candidate | ibc-go | Protocol team |
| Interchain Standard Number | Standard Title | Stage | Implementations | Maintainer |
|---|---|---|---|---|
| 6 | Solo Machine Client | Candidate | ibc-go | Protocol team |
| 7 | Tendermint Client | Candidate | ibc-go, ibc-rs | Protocol team |
| 8 | Wasm Client | Candidate | ibc-go, ibc-rs | Protocol team / Composable Finance |
| 9 | Loopback Client | Draft | ibc-go | Protocol team |
| 10 | GRANDPA Client | Draft | Octopus Network |
| Interchain Standard Number | Standard Title | Stage | Implementations | Maintainer |
|---|---|---|---|---|
| 18 | Relayer Algorithms | Finalized | go-relayer, rust-relayer, ts-relayer | Protocol team |
| Interchain Standard Number | Version | Standard Title | Stage | Implementations | Maintainer |
|---|---|---|---|---|---|
| 20 | v1 | Fungible Token Transfer | Candidate | ibc-go, ibc-rs | Protocol team |
| 20 | v2 | Fungible Token Transfer | DEPRECATED | Protocol team | |
| 27 | v1 | Interchain Accounts | Candidate | ibc-go | Protocol team |
| 28 | v1 | Cross-Chain Validation | Candidate | interchain-security | Cosmos Hub team |
| 29 | v1 | General Relayer Incentivization Mechanism | DEPRECATED | Protocol team | |
| 30 | v1 | IBC Application Middleware | N/A | N/A | Protocol team |
| 31 | v1 | Cross-Chain Queries | Draft | N/A | Protocol team |
| 32 | v1 | Interchain Queries | Candidate | async-icq | Strangelove Ventures |
| 100 | v1 | Interchain Atomic Swap | Candidate | ibcswap | Side Labs |
| 721 | v1 | Non-Fungible Token Transfer | Candidate | nft-transfer | IRIS Network |
The Interchain Standards are also translated into the following languages: