Inter-Blockchain Communication (IBC)
The Inter-Blockchain Communication (IBC) protocol is an end-to-end, connection-oriented, stateful protocol for reliable, ordered, and authenticated communication between heterogeneous blockchains arranged in an unknown and dynamic topology.
IBC is a protocol that allows blockchains to talk to each other.
The protocol realizes this interoperability by specifying a set of data structures, abstractions, and semantics that can be implemented by any distributed ledger that satisfies a small set of requirements.
Our blockchain leverages on IBC to build a wide range of cross-chain applications that include token transfers, atomic swaps, multi-chain smart contracts (with or without mutually comprehensible VMs), and data and code sharding of various kinds.
Take an example where an account on our blockchain wants to send 10 CST to another chain X
Continuously, chain X receives the headers of our chain, and vice versa. This allows each chain to track the validator set of the other. In essence, each chain runs a light-client of the other.
When the IBC transfer is initiated, the CST are locked up (bonded) on our chain.
Then, a proof that the 10 CST are bonded is relayed from our chain to chain X
The proof is verified on chain X against our chain's header and, if it is valid, then 10 CST-vouchers are created on chain X.
Note that the CST that have been created on chain X are note real CST, as CST only exist on our chain. They are a representation on X of CST from our chain, along with a proof that these CST are frozen on our chain.
A similar mechanism is used to unlock CST when they come back to their origin chain.