Elements Page for Typography Pages
How the Inter-Blockchain Communication Protocol Works
The Inter-Blockchain Communication (IBC) protocol is a blockchain interoperability solution that allows blockchains to transfer any type of data encoded in bytes, in a secure and permissionless manner.
IBC was first deployed in March 2021 and has been adopted by 110+ sovereign chains. IBC development is open-source. The main protocol development and maintenance is funded by the Interchain Foundation and hundreds of independent developers contribute to the protocol on a volunteer basis.
IBC: The TCP/IP for Blockchains
The design principles of IBC 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 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, fee middleware, and many more.
Application modules on the IBC Application Layer are composable, meaning they can be combined like building blocks to create different end-user products.
Using the IBC Protocol 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. There are no hidden fees within IBC and no in-protocol rent extraction.
A global community of development teams and contributors build and maintain the protocol, and its development is funded primarily by the Interchain Foundation. You can read more about IBC's development philosophy on the About Us page or head to the Technical Resource Catalog for information on which team developed a specific part of the code.
Application modules on the IBC Application Layer are composable, meaning they can be combined like building blocks to create different end-user products.
If you're interested in getting support, there are two free programs to learn how to build with IBC. The Interchain Developer Academy is a seven-week self-paced learning academy for developers that covers beginner to advanced learning for building with the Interchain Stack, including IBC and provides certification upon successful completion of the final examinations. On the other hand, the Interchain Builders Program is an incubator for early-stage Interchain projects that offers technical support & guidance for Interchain founders & their teams.
Finally, the Interchain Foundation offers a free developer portal with educational resources and technical walkthroughs.
Happy building!
Integration
Note that from v7 onwards, all light clients have to be explicitly registered in a chain's app.go and follow the steps listed below. This is in contrast to earlier versions of ibc-go when 07-tendermint and 06-solomachinewere added out of the box.
All light clients must be registered with module.BasicManager
in a chain's app.go file.
The following code example shows how to register the existing ibctm.AppModuleBasic{}
light client implementation.
1
2
3
4
5
6
import (+ ibctm "github.com/cosmos/ibc-go/v6/modules/light-clients/07-tendermint"
// app.go
var (
ModuleBasics = module.NewBasicManager(
capability.AppModuleBasic{},
ibc.AppModuleBasic{},
transfer.AppModuleBasic{},