What Developers Need to Know About Inter-Blockchain Communication
The following is an op-ed by Interchain GmbH Lead Developer of IBC Christopher Goes.
Enter Inter-Blockchain Communication (IBC): a protocol designed to enable an open, sovereign, secure network of interconnected blockchains or “Internet of Blockchains”. IBC is the connective substrate of the distributed interchain future — the cornerstone upon which the entire structure rests. IBC enables blockchains to send & receive messages to & from other blockchains, just as computers send messages to & from each other over TCP/IP. IBC facilitates interoperability between blockchains with different consensus algorithms, state machines, and design philosophies, allowing them to selectively interoperate while retaining their diversity. IBC is blockchain agnostic and does not need to be hosted on or controlled by any single project. Any distributed ledger which supports IBC can permissionlessly initiate a handshake to another IBC-supporting ledger. Once a handshake is complete, it opens up a channel of communication between the two ledgers. IBC packets, containing arbitrary data, can then start traveling back and forth. Should the protocol gain wide adoption, we’ll see an organic explosion of IBC packets, and the concept of an “Internet of Blockchains” can become a practical reality.
Currently, there are a lot of different blockchains in the world that perform different functions, for instance: providing currency in the case of Bitcoin, localized application platforms in the case of Ethereum, and efficient light client verification in the case of Coda. These blockchains are highly specialized in different tasks, but right now they are isolated from one another. Specialization of blockchains is beneficial because it allows these blockchains to perform a specific function expertly, instead of trying to do everything all at once. However, synergies & seamless user experiences are lost when there is no communication between them. Interoperability between these chains would allow for the benefits of specialisation without the drawbacks. For example, one could send Bitcoin over to Ethereum and use it in a smart contract or vice versa. Two pieces of software designed totally independently can now be connected and introduced to each other, without the thousands of coding hours required to build a custom interop system or bridge.
So here is what developers need to know about the upcoming release of IBC:
- The IBC protocol is a reliable and secure inter-module communication protocol, where modules are deterministic processes that run on independent machines, including replicated state machines (like “blockchains” or “distributed ledgers”).
- The IBC implementation provides modules with an API they can use to control clients, connections, and channels, send and receive packets, and inspect state.
- IBC is designed to be a versatile protocol. The protocol supports heterogeneous blockchains whose state machines implement different semantics in different languages. Applications written on top of IBC can be composed together, and IBC protocol steps themselves (such as for setting up clients, connections, and channels) can be automated.
- With IBC, developers will have access to well-established languages like Golang, Rust or JavaScript in order to become part of the Cosmos Network–eliminating a significant opportunity cost for developers.
- IBC can be used by any application which builds on top of reliable and secure inter-module communication. Example applications include cross-chain asset transfer, atomic swaps, multi-chain smart contracts (with or without mutually comprehensible VMs), and data and code sharding of various kinds.
Interoperability is essential for decentralized networks to compete with the status quo. An ecosystem of politically independent, sovereign chains economically interacting will be able to knit all the different specialised blockchains into a single interoperable economy — pulling in mainstream users and forming the foundations of a new crypto-economic system.