logo

About IBC Classic

How IBC Classic Works

IBC Classic is the v1 of the Inter-Blockchain Communication (IBC) protocol, originally deployed in March 2021. IBC Classic has transmitted tens of billions of dollars in assets and its supported version has never been exploited.

IBC provides a set of data transport semantics for blockchains.
IBC provides a set of data transport semantics for blockchains.

IBC Classic: The TCP/IP for Blockchains

The design principles of IBC Classic drew inspiration from the TCP/IP specification that enabled the creation of the internet. Mirroring the way TCP/IP sets the standard for seamless communication between computers, IBC defines a universal framework of abstractions that lets blockchains communicate. The IBC protocol stack can be decoupled into two distinct elements: the IBC Transport Layer and the IBC Application Layer.

How the IBC Classic Transport Layer Works

The IBC Transport Layer is a foundational layer upon which feature-rich applications are developed, similar to the applications that sit on top of TCP/IP and allow for the flourishing of end-user Internet applications, like web browsers, file-sharing, email, and video streaming.

The transport layer handles data transport, authentication, and ordering. The key components of the transport layer in IBC Classic are light clients, connections, channels, and relayers. A light client is a lightweight representation of a destination chain that lives within the state machine of a source chain.

For example, chains A and B are connected over IBC via their light clients. Chain A will have a light client representing chain B in its own state machine, and Chain B has a light client of Chain A. Light clients keep track of a counterparty blockchain’s consensus algorithm by verifying block headers and Merkle proofs. Connections are responsible for connecting two different light clients together.

Channels act as a conduit to connect a module/application on the source chain to a module on the destination chain. Data packets between the source and destination chains are sent over this abstraction layer.

Relayers are permissionless off-chain processes that ferry data packets from one chain to another. Relayers scan chain states, build transactions based on these states, and submit the transactions to the chains involved in the network. Relayers play a crucial role in IBC because chains do not directly send messages to each other over networking infrastructure. Instead, they create and store the data to be retrieved and used by a relayer to build IBC packets.

Get an in-depth walkthrough of the IBC Classic components and packet flow on the developer documentation.

This diagram shows how IBC packets flow between blockchains.
This diagram shows how IBC packets flow between blockchains.

How the IBC Classic Application Layer Works

The application layer represents the interface through which end-users interact with the Interchain. It encompasses application modules such as fungible token transfers, interchain accounts, interchain queries, relayer incentivisation middleware, and many more.

As mentioned previously, the transport layer is agnostic to what data is being sent over the wire. It is the responsibility of the application layer to handle the business logic of decoding packet data bytes and applying the appropriate state transition logic.

Application modules can be composed together using native packet receipts, acknowledgements, timeouts, callbacks, and middlewares. Developers are offered the flexibility, to stack multiple apps on top of each other like LEGO blocks to create novel end-user products.


Using IBC Classic as a Developer: What You Need to Know

The development of IBC is open-source. Anyone can contribute to the protocol, and the code repositories are provided for open-source usage on the IBC Github. IBC Classic is open source and free to integrate. Visit the free developer portal for educational resources and technical walkthroughs.

Happy building!


Head to our Github to begin.

Ready to get started?