Inter-Blockchain Communication (IBC)
IBC is the interoperability standard of the Cosmos ecosystem: a generic, trust-minimized protocol that lets sovereign blockchains pass authenticated packets to one another, much as TCP/IP lets independent computers exchange data. It was designed from the start as a reusable transport, not a one-off bridge, so any IBC-enabled chain can talk to any other without bespoke per-pair code.
Its security comes from light clients, not a committee. Each chain runs an on-chain light client of every chain it connects to, tracking that chain's consensus state. To send a packet, the sender chain commits it to its state; a permissionless relayer copies the packet plus a Merkle proof to the receiver, which verifies the proof against the light-client state root it already maintains. Because the receiver checks the sender's own consensus, relayers are completely untrusted — they can delay or censor messages but can never forge them. The protocol layers cleanly into TAO (transport, authentication, ordering) with applications like the ICS-20 fungible-token transfer built on top.
IBC leans on instant, irreversible finality, which is why it fits Tendermint/CometBFT chains so naturally — once a block is committed it will never revert, so a relayed packet cannot be undone by a reorg. Extending IBC to probabilistic-finality chains like Ethereum requires extra machinery (finality adapters or zk proofs of the consensus), which is an active area of work. The connection and channel handshakes establish persistent, ordered or unordered pipes with timeouts so that stuck packets can be safely refunded.
An ICS-20 transfer of 10 ATOM from the Cosmos Hub to Osmosis: the Hub escrows 10 ATOM and commits a transfer packet; a relayer delivers it with a Merkle proof; Osmosis's light client of the Hub verifies the proof and mints 10 voucher-ATOM. The escrow on the Hub backs the voucher one-for-one.
Authenticated packets between sovereign chains, secured by light clients rather than a multisig.
IBC's relayers being untrusted is the key difference from a typical messaging bridge. A LayerZero or trusted bridge asks you to trust its relayer/oracle; IBC asks you only to trust the connected chains' own consensus.