ibc-go

module
v11.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 15, 2026 License: Apache-2.0

README

ibc-go

banner

The Inter-Blockchain Communication protocol (IBC) is a blockchain interoperability solution that allows blockchains to talk to each other. Blockchains that speak IBC can transfer any kind of data encoded in bytes — including tokens, messages, and arbitrary application logic. IBC is secure, permissionless, and designed to connect sovereign blockchains into a single interoperable network. For a high-level explanation of what IBC is and how it works, please read this article.

The IBC implementation in Golang ibc-go has been used in production by the majority of the 200+ chains that have utilized IBC. It is built as a Cosmos SDK module. To understand more about how to use the ibc-go module as well as learn more about the IBC Protocol, please check out our docs.

Releases

The release lines currently supported are v8, and v10. Please note that v9 has been retracted and has been replaced by v10.

Please refer to our versioning guide for more information on how to understand our release versioning.

Applications, Middleware, and Tools

IBC has an extensive list of applications, middleware, and tools, including relayers. View the list on the IBC technical resource catalogue on our website.

Developer Community and Support

The issue list of this repo is exclusively for bug reports and feature requests. We have active, helpful communities on Discord, Telegram, and Slack.

| Need Help? | Support & Community: Discord - Telegram - Talk to an Expert - Join the #Cosmos-tech Slack Channel |

Security

To report a security vulnerability, see our Coordinated Vulnerability Disclosure Policy.

Audits

The following audits have been performed on the ibc-go source code:

Maintainers

Cosmos Labs maintains the core components of the stack: Cosmos SDK, CometBFT, IBC, Cosmos EVM, and various developer tools and frameworks. The detailed maintenance policy can be found here. In addition to developing and maintaining the Cosmos Stack, Cosmos Labs provides advisory and engineering services for blockchain solutions. Get in touch with Cosmos Labs.

Cosmos Labs is a wholly-owned subsidiary of the Interchain Foundation, the Swiss nonprofit responsible for treasury management, funding public goods, and supporting governance for Cosmos.

The Cosmos Stack is supported by a robust community of open-source contributors.

Contributing to ibc-go

If you're interested in contributing to ibc-go, please take a look at the contributing guidelines. We welcome and appreciate community contributions!

To help contributors understand which issues are good to pick up, we have the following two categories:

  • Issues with the label good first issue should be pretty well defined and are best suited for developers new to ibc-go.
  • Issues with the label help wanted are a bit more involved and they usually require some familiarity already with the codebase.

If you are interested in working on an issue, please comment on it. We will be happy to answer any questions you may have and help you out while you work on the issue.

Quick Navigation

  1. Core IBC Implementation

    1.1 ICS 02 Client

    1.2 ICS 03 Connection

    1.3 ICS 04 Channel

    1.4 ICS 05 Port

    1.5 ICS 23 Commitment

    1.6 ICS 24 Host

  2. Applications

    2.1 ICS 20 Fungible Token Transfers

    2.2 ICS 27 Interchain Accounts

  3. Middleware

    3.1 Callbacks Middleware

  4. Light Clients

    4.1 ICS 07 Tendermint

    4.2 ICS 06 Solo Machine

    4.3 ICS 09 Localhost

  5. E2E Integration Tests

Documentation and Resources

IBC Information

Cosmos Stack Libraries

  • Cosmos SDK - A framework for building applications in Golang
  • CometBFT - High-performance, 10k+ TPS configurable BFT consensus engine.
  • Cosmos EVM - Native EVM layer for Cosmos SDK chains.

Directories

Path Synopsis
cmd
internal
modules
apps/27-gmp/types
Package types is a reverse proxy.
Package types is a reverse proxy.
apps/27-interchain-accounts
Package ica implements the packet data structure, state machine handling logic, and encoding details for the account management system over an IBC channel between separate chains.
Package ica implements the packet data structure, state machine handling logic, and encoding details for the account management system over an IBC channel between separate chains.
apps/27-interchain-accounts/controller/types
Package types is a reverse proxy.
Package types is a reverse proxy.
apps/27-interchain-accounts/host/types
Package types is a reverse proxy.
Package types is a reverse proxy.
apps/callbacks/testing/simapp/params
Package params defines the simulation parameters in the simapp.
Package params defines the simulation parameters in the simapp.
apps/rate-limiting
Package rate-limiting implements a middleware to rate limit IBC transfers between different chains to prevent excessive token flow in either direction.
Package rate-limiting implements a middleware to rate limit IBC transfers between different chains to prevent excessive token flow in either direction.
apps/rate-limiting/types
Package types is a reverse proxy.
Package types is a reverse proxy.
apps/transfer
Package transfer implements the packet data structure, state machine handling logic, and encoding details for the transfer of fungible tokens over an IBC channel between two modules on separate chains.
Package transfer implements the packet data structure, state machine handling logic, and encoding details for the transfer of fungible tokens over an IBC channel between two modules on separate chains.
apps/transfer/types
Package types is a reverse proxy.
Package types is a reverse proxy.
core/02-client
Package client implements the ICS 02 - Client Semantics specification (https://github.com/cosmos/ibc/tree/master/spec/core/ics-002-client-semantics).
Package client implements the ICS 02 - Client Semantics specification (https://github.com/cosmos/ibc/tree/master/spec/core/ics-002-client-semantics).
core/02-client/types
Package types is a reverse proxy.
Package types is a reverse proxy.
core/02-client/v2/types
Package types is a reverse proxy.
Package types is a reverse proxy.
core/03-connection
Package connection implements the ICS 03 - Connection Semantics specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-003-connection-semantics).
Package connection implements the ICS 03 - Connection Semantics specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-003-connection-semantics).
core/03-connection/types
Package types is a reverse proxy.
Package types is a reverse proxy.
core/04-channel
Package channel implements the ICS 04 - Channel and Packet Semantics specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-004-channel-and-packet-semantics).
Package channel implements the ICS 04 - Channel and Packet Semantics specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-004-channel-and-packet-semantics).
core/04-channel/types
Package types is a reverse proxy.
Package types is a reverse proxy.
core/04-channel/v2/types
Package types is a reverse proxy.
Package types is a reverse proxy.
core/05-port
Package port implements the ICS 05 - Port Allocation specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-005-port-allocation).
Package port implements the ICS 05 - Port Allocation specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-005-port-allocation).
core/24-host
24-host is an implementation of ICS 24.
24-host is an implementation of ICS 24.
light-clients/06-solomachine
Package solomachine implements a concrete LightClientModule, ClientState, ConsensusState, Header and Misbehaviour types for the Solo Machine light client.
Package solomachine implements a concrete LightClientModule, ClientState, ConsensusState, Header and Misbehaviour types for the Solo Machine light client.
light-clients/07-tendermint
Package tendermint implements a concrete LightClientModule, ClientState, ConsensusState, Header, Misbehaviour and types for the Tendermint consensus light client.
Package tendermint implements a concrete LightClientModule, ClientState, ConsensusState, Header, Misbehaviour and types for the Tendermint consensus light client.
light-clients/09-localhost
Package solomachine implements a concrete LightClientModule, ClientState, ConsensusState, Header and Misbehaviour types for the Localhost light client.
Package solomachine implements a concrete LightClientModule, ClientState, ConsensusState, Header and Misbehaviour types for the Localhost light client.
light-clients/attestations
Package attestations implements an attestor-based IBC light client that verifies IBC packets using quorum-signed ECDSA attestations from a fixed set of trusted signers.
Package attestations implements an attestor-based IBC light client that verifies IBC packets using quorum-signed ECDSA attestations from a fixed set of trusted signers.
This file contains the variables, constants, and default values used in the testing package and commonly defined in tests.
This file contains the variables, constants, and default values used in the testing package and commonly defined in tests.
mock
This package is only intended to be used for testing core IBC.
This package is only intended to be used for testing core IBC.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL