The Inter-Blockchain
Communication protocol

Securely exchange data, value and tokens across the interchain.

Creating interoperability on
the Internet of Blockchains

The Inter-Blockchain Communication Protocol (IBC) is an open-source
protocol to handle authentication and transport of data between
blockchains. IBC allows heterogeneous chains to trustlessly communicate
with each other to exchange data, messages, and tokens.

The Inter-Blockchain Communication Protocol (IBC) is an open-source protocol to handle authentication and transport of data between blockchains. IBC allows heterogeneous chains to trustlessly communicate with each other to exchange data, messages, and tokens.

Scalable

Cross-chain communication enables increased and seamless scalability

Proven

Billions of transactions executed using IBC

Scalable

IBC reduces transaction costs and transaction
confirmation finality issues between app-specific
chains

Scalable

Cross-chain communication enables increased and seamless scalability

Proven

Billions of transactions executed using IBC

Scalable

IBC reduces transaction costs and transaction confirmation finality issues between app-specific chains

Interoperable

Enables inter appchain communication, creating
create greater utility than the sum of its parts.

Out of the box

Natively integrate with chains built on Cosmos SDK

Sovereign

Built to your specs, while being able to connect with a wide range of chains & state machines.

Interoperable

Enables inter appchain communication, creating create greater utility than the sum of its parts.

Out of the box

Natively integrate with chains built on Cosmos SDK

Sovereign

Built to your specs, while being able to connect with a wide range of chains & state machines.

Natively bridge tokens,
messages, and accounts

Natively bridge
tokens, messages,
and accounts

				
					function sendFungibleTokens(
  denomination: string,
  amount: uint256,
  sender: string,
  receiver: string,
  sourcePort: string,
  sourceChannel: string,
  timeoutHeight: Height,
  timeoutTimestamp: uint64): uint64 {
    prefix = "{sourcePort}/{sourceChannel}/"
    // we are the source if the denomination is not prefixed
    source = denomination.slice(0, len(prefix)) !== prefix
    if source {
      // determine escrow account
      escrowAccount = channelEscrowAddresses[sourceChannel]
      // escrow source tokens (assumed to fail if balance insufficient)
      bank.TransferCoins(sender, escrowAccount, denomination, amount)
    } else {
      // receiver is source chain, burn vouchers
      bank.BurnCoins(sender, denomination, amount)
    }

    // create FungibleTokenPacket data
    data = FungibleTokenPacketData{denomination, amount, sender, receiver}

    // send packet using the interface defined in ICS4
    sequence = handler.sendPacket(
      getCapability("port"),
      sourcePort,
      sourceChannel,
      timeoutHeight,
      timeoutTimestamp,
      data
    )

    return sequence
}
				
			

Trust the chains,
not a bridge

With IBC, trust the chains you already use instead of a
vulnerable third party. Easy, direct implementation with IBC
is secure even in Byzantine environments where relayers
can be faulty or malicious.

With IBC, trust the chains you already use instead of a vulnerable third party. Easy, direct implementation with IBC is secure even in Byzantine environments where relayers can be faulty or malicious.

LEARN

Use IBC to swap NFTs
across chains

Explore Interchain NFTs

DEVELOPERS

Grow your app in and
out of the Cosmos
network with IBC

Start sending interchain value

LEARN

Use IBC to swap NFTs
across chains

Explore Interchain NFTs

DEVELOPERS

Grow your app in and
out of the Cosmos
network with IBC

Start sending interchain value

Receive transmissions

Unsubscribe at any time. Privacy policy

Scroll to Top