Written by Bonk
Since its launch in April 2021, the buzzword “IBC” has been swarming the crypto space for quite a while, but what is IBC and why should one pay attention? Let’s say a trader wants to spend their ETH on another chain. Usually it would take a couple of swaps on exchanges to enter another ecosystem. More than often this process can come with a costly gas fee and one might encounter unexpected hurdles like unfamiliar user experience and network configurations. By providing a protocol where blockchains can directly communicate with each other, IBC can solve this UX problem and allow economic integration while each chain can preserve its sovereignty in terms of governance and development.
IBC stands for Inter-Blockchain Communication Protocol. As per its name, it is a protocol used for blockchains to communicate with each other, allowing transfer of data. It is similar to how the internet works: differently built machines exchanging data in a standardized model. Sunny Aggarwal, ex-research scientist at Tendermint and Co-founder of Osmosis revealed that IBC took strong influence from the TCP/IP protocol during its development phase.
That being said, IBC is not an application-layer protocol. According to IBC’s official website, it handles data transportation, authentication, and reliability only. In other words, developers can build on IBC to transfer more than tokens. Smart contracts, NFTs, and oracle data feed transfers are possible use cases.
For two separate blockchains to communicate with each other there must be an agreement, or a handshake, between the two blockchains. This initial stage consists of a series of transactions containing information and proofs about the state of each chain. The handshake ensures the two chains are using the correct identifiers, authenticate each other, and initializes the packet transfer process. After the handshake is established, data packets containing arbitrary serialized data can be transferred between the two chains via transaction packets. Meta data information is also included in these packets to verify the origin of the packet.
Packets are relayed to its destination chain via relayers. As blockchains cannot talk to each other, these permissionless third-party entities continuously scan the state of ledgers that implement the IBC protocol and relays packets to their destination when needed. Then IBC can guarantee that the packet has been sent by the source chain once it arrives at its destination. However, as mentioned above, IBC is merely a transport method. In other words, it is “agnostic” as to the transported data. Data will be processed on the application layer of the destination chain to be serialized, interpreted, and executed.
Packets can be routed under a variety of options which include timeout requirements and ordering guarantees so that packets can come in certain order and timeframe. Moreover, many IBC connections can exist between two chains. Each connection can be distinguished as namespaced routes and allow different types of IBC packets interact with the underlying state machine.
However, when assets are transferred to another chain, the assets do not “leave” its source chain. The relayer will transfer the data indicating that a certain asset will exist on a certain chain, but the underlying asset will be “locked” on the source chain, while appearing on its destination chain. It is similar to how Wrapped Bitcoin (WBTC) works on the Ethereum network. Once the asset is ready to move back to its origin, the proxy assets will be burned and the locked assets will be released.
Any blockchain can implement IBC given they meet requirements including a module system, key-value store, consensus state introspection, timestamp access, port system, exception/rollback system, and data availability. Blockchains made with the Cosmos SDK can simply implement it using the IBC module.
To summarize, IBC provides an interface for blockchains to transfer data in packets. Relayers scan IBC-implemented chains to transfer data. Data can include token transfers, NFTs, smart contracts, and oracle data feeds. IBC validates the data as a transport layer protocol, meaning that the transported data is agnostic to the IBC protocol.