# IBC Documentation > Documentation for the Inter-Blockchain Communication protocol, its Go implementation, and the IBC CLI. - [IBC](https://ibc-docs.mintlify.dev/docs/index.md) - [What is IBC?](https://ibc-docs.mintlify.dev/docs/ibc/01-introduction/01-what-is-ibc.md): IBC is a protocol for sending packets between independent chains, where each chain verifies the other chain's writes with an on-chain light client. - [IBC overview](https://ibc-docs.mintlify.dev/docs/ibc/02-how-ibc-works/01-overview.md): IBC is a handful of components passing one provable packet between two chains. - [Packets and applications](https://ibc-docs.mintlify.dev/docs/ibc/02-how-ibc-works/02-packets-and-applications.md): A packet is what IBC moves between two chains, and an application is what interprets the contents. - [Core: router and store](https://ibc-docs.mintlify.dev/docs/ibc/02-how-ibc-works/03-core-router-and-store.md): The router is the single entry point for packet operations, and its store holds the provable records the other chain verifies. - [Clients and counterparties](https://ibc-docs.mintlify.dev/docs/ibc/02-how-ibc-works/04-clients-and-counterparties.md): A client is one chain's verifier for one other chain, and a mirrored pair of clients, each recording the other as its counterparty, is what connects two chains. - [Relayer](https://ibc-docs.mintlify.dev/docs/ibc/02-how-ibc-works/05-relayer.md): The relayer decides when IBC packets move. The attestors and the light client decide what counts as true. - [Packet lifecycle](https://ibc-docs.mintlify.dev/docs/ibc/02-how-ibc-works/06-packet-lifecycle.md): A packet reaches at most one of two provable endings: delivered and acknowledged, or proven timed out. - [GMP: how it works](https://ibc-docs.mintlify.dev/docs/ibc/03-applications/01-gmp.md): GMP runs arbitrary contract calls on another chain from a deterministic address unique to the caller, and reports back success, failure, or timeout. - [IFT: how it works](https://ibc-docs.mintlify.dev/docs/ibc/03-applications/02-ift.md): A fungible token that moves between chains by burning it on one and minting it on the other, controlled by its issuer on every chain. - [The attestation light client](https://ibc-docs.mintlify.dev/docs/ibc/04-light-clients/01-attestation-light-client.md): The attestation light client accepts a claim about the counterparty chain once a quorum of a fixed attestor set has signed it. - [Attestors](https://ibc-docs.mintlify.dev/docs/ibc/04-light-clients/02-attestors.md): An attestor is a stateless off-chain service that signs statements about one chain's state, and an attestation light client trusts exactly the keys that sign. - [The Besu QBFT and IBFT 2.0 light client](https://ibc-docs.mintlify.dev/docs/ibc/04-light-clients/03-besu-light-client.md): The Besu light client verifies sealed Besu headers and Ethereum storage proofs, so a connection between two Besu QBFT or IBFT 2.0 chains needs no attestors. - [Security audits](https://ibc-docs.mintlify.dev/docs/ibc/07-security/01-audits.md): Every independent audit of IBC, across the protocol and its Go, Solidity, and Solana implementations. - [IBC CLI overview](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/01-overview.md): One binary that deploys IBC onto a chain, then runs the relayer and attestors that carry packets across it. - [Deploy IBC and send a token](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/02-tutorial/01-deploy-ibc-and-send-a-token.md): Bring up two chains, deploy IBC on both, and move an Interchain Fungible Token from one to the other. - [Run a standalone attestor](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/03-guides/01-run-a-standalone-attestor.md): Run an attestor in its own process, separate from any relayer, so a relayer can query it and count its signatures toward a light client's quorum. - [Run a standalone relayer](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/03-guides/02-run-a-standalone-relayer.md): Run a relayer in its own process, querying attestors it does not host. - [Make a cross-chain GMP call](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/03-guides/03-make-a-cross-chain-gmp-call.md): Call a contract on another chain over IBC, and receive the result back as an acknowledgement. - [Upgrade an IBC contract](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/03-guides/04-upgrade-the-router-contract.md): Upgrade an IBC Solidity contract using the router as an example. - [Grant, change, and revoke a role](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/03-guides/05-grant-change-and-revoke-a-role.md): Configure permissioned relaying, rotate a relayer key, and transfer access manager admin authority. - [Rotate an attestor set](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/03-guides/06-rotate-an-attestor-set.md): Replace an attestor in the attestor set. - [Configuration](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/04-reference/01-configuration.md): Configure chains, connections, attestors, signers, and storage in ibc.yml. - [CLI commands](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/04-reference/02-cli-commands.md): IBC CLI command reference - [API](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/04-reference/03-api.md): The relayer, attestation, and health APIs, how to call them, and the prover service you can implement for them to call. - [Observability and metrics](https://ibc-docs.mintlify.dev/docs/ibc/05-ibc-cli/04-reference/04-observability-and-metrics.md): Metric export modes and the metrics reference for IBC CLI attestors, relayers, and their dependencies. - [Overview](https://ibc-docs.mintlify.dev/docs/ibc/06-ibc-solidity-contracts/01-overview.md): The Solidity contracts that make up IBC on a chain, what each one is for, and who deploys it. - [ICS26Router](https://ibc-docs.mintlify.dev/docs/ibc/06-ibc-solidity-contracts/02-ics26-router.md): Reference for the packet router: its entry points, registries, commitment store, events, errors, and role gates - [ICS27GMP and accounts](https://ibc-docs.mintlify.dev/docs/ibc/06-ibc-solidity-contracts/03-ics27-gmp-and-accounts.md): The General Message Passing application, the per-sender account contracts it deploys, and the surface a sender calls. - [IFT contracts](https://ibc-docs.mintlify.dev/docs/ibc/06-ibc-solidity-contracts/04-ift-contracts.md): The IFT base contract, its two deployable variants, and the send-call constructors that build a counterparty's mint call. - [AttestationLightClient](https://ibc-docs.mintlify.dev/docs/ibc/06-ibc-solidity-contracts/05-attestation-light-client.md): Contract reference for the attestation light client: what it verifies, what the constructor fixes, its functions, wire formats, permissions, and errors. - [BesuLightClient](https://ibc-docs.mintlify.dev/docs/ibc/06-ibc-solidity-contracts/07-besu-light-client.md): Contract reference for the Besu light client: what it verifies, its message formats, functions, events, errors, permissions, and what the constructor sets. - [Permissions and upgrades](https://ibc-docs.mintlify.dev/docs/ibc/06-ibc-solidity-contracts/06-permissions-and-upgrades.md): Which roles gate the IBC-solidity contracts, who holds them on a deployment, which contracts sit behind proxies, and which inputs are fixed at construction. - [IBC Documentation](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/intro.md): IBC (Inter-Blockchain Communication) protocol documentation - [Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/overview.md) - [Best Practices](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/best-practices.md) - [Integration](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/integration.md) - [Permissioning](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/permissioning.md) - [Relayer](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/relayer.md) - [IBC v2 Applications](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/apps/ibcv2apps.md) - [IBC Applications](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/apps/apps.md) - [Implement IBCModule interface and callbacks](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/apps/ibcmodule.md) - [Bind ports](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/apps/bindports.md) - [Keeper](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/apps/keeper.md) - [Define packets and acks](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/apps/packets_acks.md) - [Routing](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/apps/routing.md) - [Custom Address Codec](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/apps/address-codec.md) - [IBC middleware](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/middleware/overview.md) - [Create a custom IBC middleware](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/middleware/develop.md): IBC middleware will wrap over an underlying IBC application (a base application or downstream middleware) and sits between core IBC and the base application. - [Create and integrate IBC v2 middleware](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/middleware/developIBCv2.md): 1. Create a custom IBC v2 middleware 2. Implement IBCModule interface 3. WriteAckWrapper 4. Integrate IBC v2 Middleware 5. Security Model 6. Design Principles - [Integrating IBC middleware into a chain](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/middleware/integration.md): Learn how to integrate IBC middleware(s) with a base application to your chain. The following document only applies for Cosmos SDK chains. - [Upgrading IBC Chains Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/upgrades/intro.md): This directory contains information on how to upgrade an IBC chain without breaking counterparty clients and connections. - [How to Upgrade IBC Chains and their Clients](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/upgrades/quick-guide.md) - [IBC Client Developer Guide to Upgrades](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/upgrades/developer-guide.md) - [Genesis Restart Upgrades](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/ibc/upgrades/genesis-restart.md) - [IBC-Go v11.0 to v11.1](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v11-to-v11-1.md): This guide provides instructions for migrating from ibc-go v11.0 to v11.1. - [IBC-Go v10 to v11.1](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v10-to-v11-1.md): This guide provides instructions for migrating from ibc-go v10 to v11.1. - [IBC-Go v10 to v11](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v10-to-v11.md): This guide provides instructions for migrating to a new version of ibc-go. - [IBC-Go v8.1 to v10](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v8_1-to-v10.md): This guide provides instructions for migrating to a new version of ibc-go. - [IBC-Go v8 to v8.1](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v8-to-v8_1.md): This guide provides instructions for migrating to version v8.1.0 of ibc-go. - [IBC-Go v7 to v8](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v7-to-v8.md): This guide provides instructions for migrating to version v8.0.0 of ibc-go. - [IBC-Go v7.2 to v7.3](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v7_2-to-v7_3.md): This guide provides instructions for migrating to version v7.3.0 of ibc-go. - [IBC-Go v7 to v7.1](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v7-to-v7_1.md): This guide provides instructions for migrating to version v7.1.0 of ibc-go. - [IBC-Go v6 to v7](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v6-to-v7.md): This document is intended to highlight significant changes which may require more information than presented in the CHANGELOG. Any changes that must be done by a user of ibc-go should be documented here. - [IBC-Go v5 to v6](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v5-to-v6.md): This document is intended to highlight significant changes which may require more information than presented in the CHANGELOG. Any changes that must be done by a user of ibc-go should be documented here. - [IBC-Go v4 to v5](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v4-to-v5.md): This document is intended to highlight significant changes which may require more information than presented in the CHANGELOG. Any changes that must be done by a user of ibc-go should be documented here. - [IBC-Go v3 to v4](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v3-to-v4.md): This document is intended to highlight significant changes which may require more information than presented in the CHANGELOG. Any changes that must be done by a user of ibc-go should be documented here. - [IBC-Go v2 to v3](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v2-to-v3.md): This document is intended to highlight significant changes which may require more information than presented in the CHANGELOG. Any changes that must be done by a user of ibc-go should be documented here. - [IBC-Go v1 to v2](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/v1-to-v2.md): This document is intended to highlight significant changes which may require more information than presented in the CHANGELOG. Any changes that must be done by a user of ibc-go should be documented here. - [SDK v0.43 to IBC-Go v1](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/sdk-to-v1.md): This file contains information on how to migrate from the IBC module contained in the SDK 0.41.x and 0.42.x lines to the IBC module in the ibc-go repository based on the 0.44 SDK version. - [Support transfer of coins whose base denom contains slashes](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/support-denoms-with-slashes.md): This document is intended to highlight significant changes which may require more information than presented in the CHANGELOG. Any changes that must be done by a user of ibc-go should be documented here. - [Support the new StackBuilder primitive for Wiring Middlewares in the chain application](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/migrations/support-stackbuilder.md) - [Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/developer-guide/overview.md) - [Light Client Module interface](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/developer-guide/light-client-module.md): Status must return the status of the client. - [Client State interface](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/developer-guide/client-state.md): Learn how to implement the ClientState interface. - [Consensus State interface](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/developer-guide/consensus-state.md): A ConsensusState is the snapshot of the counterparty chain, that an IBC client uses to verify proofs (e.g. a block). - [Handling Updates and Misbehaviour](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/developer-guide/updates-and-misbehaviour.md): As mentioned before in the documentation about implementing the ConsensusState interface, ClientMessage is an interface used to update an IBC client. This update may be performed by: - [Handling Upgrades](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/developer-guide/upgrades.md) - [Existence/Non-Existence Proofs](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/developer-guide/proofs.md): IBC uses merkle proofs in order to verify the state of a remote counterparty state machine given a trusted root, and ICS-23 is a general approach for verifying merkle trees which is used in ibc-go. - [Handling Proposals](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/developer-guide/proposals.md) - [Setup](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/developer-guide/setup.md) - [Governance Proposals](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/proposals.md) - [The attestation light client](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/attestation/attestation-light-client.md): How the ibc-go attestation light client verifies state a quorum of attestors has signed. - [Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/localhost/overview.md) - [Integration](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/localhost/integration.md): The 09-localhost light client module registers codec types within the core IBC module. This differs from other light client module implementations which are expected to register codec types using the AppModuleBasic interface. - [ClientState](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/localhost/client-state.md): The 09-localhost client is stateless and has no types. - [Connection](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/localhost/connection.md): The 09-localhost light client module integrates with core IBC through a single sentinel localhost connection. The sentinel ConnectionEnd is stored by default in the core IBC store. - [State Verification](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/localhost/state-verification.md): The localhost client handles state verification through the LightClientModule interface methods VerifyMembership and VerifyNonMembership by performing read-only operations directly on the core IBC store. - [Solomachine](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/solomachine/solomachine.md): This paper defines the implementation of the ICS06 protocol on the Cosmos SDK. For the general specification please refer to the ICS06 Specification. - [Concepts](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/solomachine/concepts.md): The ClientState for a solo machine light client stores the latest sequence, the frozen sequence, the latest consensus state, and client flag indicating if the client should be allowed to be updated after a governance proposal. - [State](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/solomachine/state.md): The solo machine light client will only store consensus states for each update by a header or a governance proposal. The latest client state is also maintained in the store. - [State Transitions](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/solomachine/state_transitions.md): Successful state verification by a solo machine light client will result in: - [Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/tendermint/overview.md) - [Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/wasm/overview.md): Learn about the 08-wasm light client proxy module. - [Concepts](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/wasm/concepts.md): Learn about the differences between a proxy light client and a Wasm light client. - [Integration](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/wasm/integration.md): Learn how to integrate the 08-wasm module in a chain binary and about the recommended approaches depending on whether the x/wasm module is already used in the chain. The following document only applies for Cosmos SDK chains. - [Messages](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/wasm/messages.md): Uploading the Wasm light client contract to the Wasm VM storage is achieved by means of MsgStoreCode: - [Governance](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/wasm/governance.md): Learn how to upload Wasm light client byte code on a chain, and how to migrate an existing Wasm light client contract. - [Events](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/wasm/events.md): The 08-wasm module emits the following events: - [Contracts](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/wasm/contracts.md): Learn about the expected behaviour of Wasm light client contracts and the between with 08-wasm. - [Client](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/wasm/client.md): A user can query and interact with the 08-wasm module using the CLI. Use the --help flag to discover the available commands: - [Migrations](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/light-clients/wasm/migrations.md): This guide provides instructions for migrating 08-wasm versions. - [General Message Passing (GMP)](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/gmp.md): How the ibc-go ICS27-GMP module executes cross-chain contract calls through deterministically derived accounts. - [Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/overview.md) - [Development Use Cases](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/development.md) - [Authentication Modules](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/auth-modules.md) - [Integration](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/integration.md) - [Messages](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/messages.md): An Interchain Accounts channel handshake can be initiated using MsgRegisterInterchainAccount: - [Parameters](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/parameters.md): The Interchain Accounts module contains the following on-chain parameters, logically separated for each distinct submodule: - [Transaction Encoding](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/tx-encoding.md): When orchestrating an interchain account transaction, which comprises multiple sdk.Msg objects represented as Any types, the transactions must be encoded as bytes within InterchainAccountPacketData. - [Client](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/client.md): A user can query and interact with the Interchain Accounts module using the CLI. Use the --help flag to discover the available commands: - [Active Channels](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/active-channels.md): The Interchain Accounts module uses either ORDERED or UNORDERED channels. - [Authentication Modules](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/legacy/auth-modules.md): This document is deprecated and will be removed in future releases. - [Integration](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/legacy/integration.md): This document is deprecated and will be removed in future releases. - [Keeper API](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/interchain-accounts/legacy/keeper-api.md): This document is deprecated and will be removed in future releases. - [Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/transfer/overview.md) - [State](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/transfer/state.md): The IBC transfer application module keeps state of the port to which the module is binded and the denomination trace information. - [State Transitions](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/transfer/state-transitions.md): A successful fungible token send has two state transitions depending if the transfer is a movement forward or backwards in the token's timeline: - [Messages](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/transfer/messages.md): A fungible token cross chain transfer is achieved by using the MsgTransfer: - [Events](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/transfer/events.md) - [Metrics](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/transfer/metrics.md): The IBC transfer application module exposes the following set of metrics. - [Params](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/transfer/params.md): The IBC transfer application module contains the following parameters: - [Authorizations](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/transfer/authorizations.md) - [Client](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/transfer/client.md): A user can query and interact with the transfer module using the CLI. Use the --help flag to discover the available commands: - [IBC v2 Transfer](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/apps/transfer/IBCv2-transfer.md): Much of the core business logic of sending and recieving tokens between chains is unchanged between IBC Classic and IBC v2. Some of the key differences to pay attention to are detailed below. - [Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/callbacks/overview.md): Learn about what the Callbacks Middleware is, and how to build custom modules that utilize the Callbacks Middleware functionality - [Integration](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/callbacks/integration.md): Learn how to integrate the callbacks middleware with IBC applications. The following document is intended for developers building on top of the Cosmos SDK and only applies for Cosmos SDK chains. - [Interfaces](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/callbacks/interfaces.md) - [Events](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/callbacks/events.md): An overview of all events related to the callbacks middleware. There are two types of events, "ibcsrccallback" and "ibcdestcallback". - [End Users](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/callbacks/end-users.md): This section explains how to use the callbacks middleware from the perspective of an IBC Actor. Callbacks middleware provides two types of callbacks: - [Gas Management](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/callbacks/gas.md): Executing arbitrary code on a chain can be arbitrarily expensive. In general, a callback may consume infinite gas (think of a callback that loops forever). This is problematic for a few reasons: - [Callbacks with IBC v2](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/callbacks/callbacks-IBCv2.md): This page highlights some of the differences between IBC v2 and IBC classic relevant for the callbacks middleware and how to use the module with IBC v2. More details on middleware for IBC v2 can be found in the middleware section. - [Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/packet-forward-middleware/overview.md): Packet Forward Middleware enables multi-hop IBC token transfers through intermediate chains. - [Integration](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/packet-forward-middleware/integration.md): This document provides instructions on integrating and configuring the Packet Forward Middleware (PFM) within your existing chain implementation. - [Example Flows](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/packet-forward-middleware/example-usage.md): This document outlines some example flows leveraging packet forward middleware and formats of the memo field. - [Overview](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/rate-limit-middleware/overview.md): A governance-configured middleware that caps net token flow across IBC transfers. - [Integration](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/rate-limit-middleware/integration.md): Wire the rate limiting middleware into a chain for IBC v1 and v2. - [Setting Rate Limits](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/rate-limit-middleware/setting-limits.md): Configure rate limits through governance, and set whitelists and blacklists in genesis. - [Migration](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/middleware/rate-limit-middleware/migration.md): Move an existing ibc-apps rate limiting integration to ibc-go. - [Security Audits](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/security-audits.md): Independent security audit reports for the IBC protocol and its implementations - [Architecture Decision Records (ADR)](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/README.md) - [ADR 001: Coin Source Tracing](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-001-coin-source-tracing.md) - [ADR 002: Go Module Versioning](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-002-go-module-versioning.md) - [ADR 003: ICS-27 Acknowledgement Format](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-003-ics27-acknowledgement.md) - [ADR 004: Lock Fee Module Upon Escrow Out Of Balance](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-004-ics29-lock-fee-module.md) - [ADR 005: UpdateClient Events ClientState Consensus Heights](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-005-consensus-height-events.md) - [ADR 006: 02-Client Refactor](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-006-02-client-refactor.md) - [ADR 007: Solo Machine Sign Bytes](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-007-solomachine-signbytes.md) - [ADR 008: Callback to IBC Actors](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-008-app-caller-cbs.md) - [ADR 009: ICS27 Message Server Addition](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-009-v6-ics27-msgserver.md) - [ADR 010: IBC Light Clients As SDK Modules](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-010-light-clients-as-sdk-modules.md) - [ADR 011: ICS-20 Transfer State Entry For Total Amount Of Tokens In Escrow](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-011-transfer-total-escrow-state-entry.md) - [ADR 015: IBC Packet Receiver](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-015-ibc-packet-receiver.md) - [ADR 025: IBC Passive Channels](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-025-ibc-passive-channels.md) - [ADR 026: IBC Client Recovery Mechanisms](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-026-ibc-client-recovery-mechanisms.md) - [ADR 27: Add Support For Wasm Based Light Client](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/architecture/adr-027-ibc-wasm.md) - [Changelog](https://ibc-docs.mintlify.dev/docs/ibc-go/latest/changelog/release-notes.md): Release history and changelog for Cosmos IBC - [ICS Specification Standard](https://ibc-docs.mintlify.dev/docs/ibc/spec/ics-001-ics-standard/README.md) - [IBC v2](https://ibc-docs.mintlify.dev/docs/ibc/spec/IBC_V2/README.md) - [General Message Passing (GMP)](https://ibc-docs.mintlify.dev/docs/ibc/spec/IBC_V2/app/ics-027-gmp/README.md) - [Client Semantics](https://ibc-docs.mintlify.dev/docs/ibc/spec/IBC_V2/core/ics-002-client-semantics/README.md) - [Packet Structure and Provable Commitment Specification](https://ibc-docs.mintlify.dev/docs/ibc/spec/IBC_V2/core/ics-004-packet-semantics/PACKET.md) - [IBC Packet Handler](https://ibc-docs.mintlify.dev/docs/ibc/spec/IBC_V2/core/ics-004-packet-semantics/PACKET_HANDLER.md) - [Port Allocation](https://ibc-docs.mintlify.dev/docs/ibc/spec/IBC_V2/core/ics-005-port-allocation/README.md) - [Host State Machine Requirements](https://ibc-docs.mintlify.dev/docs/ibc/spec/IBC_V2/core/ics-024-host-requirements/README.md) - [IBC Application Callbacks](https://ibc-docs.mintlify.dev/docs/ibc/spec/IBC_V2/core/ics-026-application-callbacks/README.md) - [Client Semantics](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-002-client-semantics/README.md) - [Connection Semantics](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-003-connection-semantics/README.md) - [Client Validation Removal](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-003-connection-semantics/client-validation-removal.md) - [Channel & Packet Semantics](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-004-channel-and-packet-semantics/README.md) - [Upgrading Channels](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-004-channel-and-packet-semantics/UPGRADES.md) - [Port Allocation](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-005-port-allocation/README.md) - [Vector Commitments](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-023-vector-commitments/README.md) - [Host State Machine Requirements](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-024-host-requirements/README.md) - [Handler Interface](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-025-handler-interface/README.md) - [Routing Module](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-026-routing-module/README.md) - [Application Upgrade Callbacks](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-026-routing-module/UPGRADES.md) - [Multi-hop Channel](https://ibc-docs.mintlify.dev/docs/ibc/spec/core/ics-033-multi-hop/README.md) - [Rollup Integration Guide](https://ibc-docs.mintlify.dev/docs/ibc/spec/client/Rollup-Integration-guide.md) - [Solo Machine Client](https://ibc-docs.mintlify.dev/docs/ibc/spec/client/ics-006-solo-machine-client/README.md) - [Tendermint Client](https://ibc-docs.mintlify.dev/docs/ibc/spec/client/ics-007-tendermint-client/README.md) - [Wasm Client](https://ibc-docs.mintlify.dev/docs/ibc/spec/client/ics-008-wasm-client/README.md) - [Loopback Client](https://ibc-docs.mintlify.dev/docs/ibc/spec/client/ics-009-loopback-cilent/README.md) - [GRANDPA Client](https://ibc-docs.mintlify.dev/docs/ibc/spec/client/ics-010-grandpa-client/README.md) - [Relayer Algorithms](https://ibc-docs.mintlify.dev/docs/ibc/spec/relayer/ics-018-relayer-algorithms/README.md) - [Fungible Token Transfer](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-020-fungible-token-transfer/README.md) - [Fungible Token Transfer](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-020-fungible-token-transfer/deprecated/README.md) - [Interchain Accounts](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-027-interchain-accounts/README.md) - [Cross-Chain Validation](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-028-cross-chain-validation/README.md) - [CCV: Technical Specification - Data Structures](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-028-cross-chain-validation/data_structures.md) - [CCV: Technical Specification - Methods](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-028-cross-chain-validation/methods.md) - [CCV: Overview and Basic Concepts](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md) - [CCV: System Model and Properties](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-028-cross-chain-validation/system_model_and_properties.md) - [CCV: Technical Specification](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-028-cross-chain-validation/technical_specification.md) - [General Fee Payment](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-029-fee-payment/README.md) - [IBC Middleware](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-030-middleware/README.md) - [Cross-chain Queries](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-031-crosschain-queries/README.md) - [Atomic Swap](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-100-atomic-swap/README.md) - [Non-Fungible Token Transfer](https://ibc-docs.mintlify.dev/docs/ibc/spec/app/ics-721-nft-transfer/README.md) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.