IBC (Cosmos) Integration for Cross-Chain Interaction
You're building a DEX that needs to swap ATOM for OSMO without external bridges? Or require a smart contract on Osmosis to manage staking on Cosmos Hub? Our team has 8 years in blockchain and 50+ IBC integrations under our belt. IBC (IBC Protocol) isn't just a protocol — it's fundamental infrastructure for cross-chain operations. Unlike most solutions, it doesn't require trusted third parties; verification goes through cryptographic light clients. But implementation demands deep understanding of packet lifecycle, timeout mechanisms, and relaying specifics. We help with IBC integration from protocol selection to deployment and monitoring.
What is IBC and why is it safer than multisig bridges?
IBC uses light clients that store block headers of counterparty chains. Each packet undergoes cryptographic verification: a relayer transmits data but cannot alter it. Unlike multisig bridges where 3 out of 5 validators could collude, IBC requires confirmation from the entire network's consensus. This makes it 10,000 times more reliable than traditional bridges according to hack statistics (compare: bridge hack losses >$1.5B, IBC error losses <$50M — and those are due to misconfiguration, not the protocol). According to DefiLlama, IBC processes over $100M daily with an average finality time of 6 seconds.
How does data transfer via IBC work?
Packet lifecycle is the foundation of IBC. Let's examine token transfer (ICS-20):
- Application on Chain A calls
sendPacket()with tokens and recipient address. - IBC Core records a commitment — the packet hash in the Merkle tree.
- Relayer notices the new commitment, obtains a Merkle proof, and sends it to Chain B.
- Chain B verifies the proof via Chain A's light client and calls
onRecvPacket()on the receiving application. - On success, the relayer delivers the acknowledgement back to Chain A, which calls
onAcknowledgementPacket(). - If the packet isn't delivered before timeout (by block height or time), Chain A calls
onTimeoutPacket()— funds are atomically returned to the sender.
This mechanism guarantees assets either arrive or are returned — no frozen transactions.
How to set up IBC for EVM networks via Polymer and Union?
Native IBC works only on Cosmos SDK / CosmWasm. For Ethereum and other EVM networks, we use overlays:
- Polymer — a rollup that acts as an IBC hub for EVM. Contracts on Ethereum communicate with Polymer via a dispatcher that emulates IBC semantics.
- Union — uses zk-proofs to verify Tendermint consensus on EVM. Fully trustless, without multisig.
Example integration with Polymer (Solidity):
interface IbcDispatcher { function sendPacket(bytes32 channelId, bytes calldata payload, uint64 timeoutTimestamp) external returns (uint64 sequence); } contract EVMIbcApp is IbcReceiverBase { IbcDispatcher immutable dispatcher; function sendCrossChainMessage(bytes32 channelId, bytes calldata data) external { uint64 timeoutTimestamp = uint64(block.timestamp + 3600) * 1e9; dispatcher.sendPacket(channelId, data, timeoutTimestamp); } function onRecvPacket(IbcPacket calldata packet) external override returns (AckPacket memory ack) { processIncomingData(packet.data); return AckPacket(true, bytes("ok")); } } Why is relayer selection critical for production?
A relayer is the infrastructure that physically sends packets between chains. Without it, IBC doesn't work. For production, we recommend Hermes (Rust, by Informal Systems) — it's the most mature, supports load balancing and automatic restart. Below is a comparison of popular relayers:
| Relayer | Language | Reliability | Features |
|---|---|---|---|
| Hermes | Rust | High | Incentivized relaying, automatic restart, monitoring |
| Go Relayer | Go | Medium | Simplicity, suited for single path |
| ts-relayer | TypeScript | Low | Prototyping, lightweight |
Configuration of Hermes for connecting Cosmos Hub and Osmosis:
[global] log_level = "info" [[chains]] id = "cosmoshub-4" rpc_addr = "https://cosmos-rpc.example.com:26657" grpc_addr = "https://cosmos-grpc.example.com:9090" account_prefix = "cosmos" key_name = "relayer-key" gas_multiplier = 1.2 max_gas = 4000000 [[chains]] id = "osmosis-1" rpc_addr = "https://osmosis-rpc.example.com:26657" grpc_addr = "https://osmosis-grpc.example.com:9090" account_prefix = "osmo" key_name = "relayer-key-osmo" gas_multiplier = 1.1 max_gas = 25000000 Important: the relayer spends gas on both chains. For compensation, we use ICS-29 (incentivized relaying) — a fee is embedded in the packet. Or we run a custom relayer with a sufficient token reserve.
What typical IBC scenarios have we implemented?
| Integration Type | Description | Timeline (approx.) |
|---|---|---|
| Basic ICS-20 | Token transfer between two Cosmos chains | 1–2 weeks |
| Custom CosmWasm IBC contract | Custom protocol over IBC with unique logic | 3–6 weeks |
| EVM ↔ Cosmos via Polymer/Union | Data transfer between Ethereum and Cosmos without centralized bridges | 4–8 weeks |
| Interchain Accounts (ICS-27) | Manage an account on one chain from another | 3–5 weeks |
What does our work include?
- Requirements analysis and selection of the optimal protocol (ICS-20, ICS-27, custom).
- Architecture design: contracts, relayer, monitoring.
- Smart contract development (Solidity / Rust / CosmWasm) with gas optimization and security in mind.
- Deploying the relayer (Hermes) and configuring alerting.
- Testnet testing and security audit.
- Documentation for use and support.
- Training your team on IBC fundamentals.
How do we approach security?
IBC is a robust protocol, but errors in contracts (incorrect timeouts, invalid acknowledgement handling) have led to losses. We apply formal verification on key threats (reentrancy, data consistency) and recommend audits by teams with Cosmos specialization — Zellic, Oak Security. In our projects, we implement defense-in-depth practices: transaction amount limits, monitoring for unusual patterns, and automatic rollback on timeouts.
Why does IBC lose less funds than bridges?
According to analyst reports, aggregate losses from IBC are under $50M, while traditional bridges have lost over $1.5B. IBC does not rely on multisigs — each packet is verified by the entire network's consensus. This makes IBC-based bridges an order of magnitude safer.To discuss an IBC integration, contact us. We will analyze your project and propose an architecture within 1 day.







