What developers need to know about inter-blockchain communication
This is a guest post for Computer Weekly Open Source Insider written by Christopher Goes in his roles as lead developer of IBC at Interchain GmbH.
Interchain GmbH is a wholly-owned subsidiary of the Interchain Foundation. As maintainers of the Tendermint project, lead architects of the Inter-Blockchain Communication (IBC) Protocol and contributors to the Cosmos SDK, the organisation has envision a more connected, open and self-sovereign world made possible through the Cosmos Network.
Goes writes as follows…
While technological change has moved rapidly in the information era, the system of international payments has lagged behind. In a world where a user can order organic beetroot on AmazonFresh to be delivered to their doorstep overnight, we are still trapped by the network effects of archaic monetary systems subject to the political vagaries of fiat powers.
The protocols that power the Internet are capable of efficient information transfer… but they were not designed for monetary exchange or the similar exchange of digital assets.
IBC: open, sovereign & secure
Enter Inter-Blockchain Communication (IBC): This is a protocol designed to enable an open, sovereign, secure network of interconnected blockchains or ‘Internet of Blockchains’ if you will.
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.
Internet of Blockchains
Currently, there are a lot of different blockchains in the world that perform different functions, for instance: providing currency in the case of Bitcoin, localised 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.
Specialisation 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 decentralised 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.