IBC (Cosmos) Крос-чейн інтеграція
IBC (Inter-Blockchain Communication Protocol) — це те, що TCP/IP зробив для інтернету, застосоване до блокчейнів. Дозволяє суверенним блокчейнам Cosmos екосистеми безпечно передавати дані та токени без довіреної посередника. На відміну від більшості кросс-чейн рішень, IBC не вимагає multisig мостів або oracle комітетів — верифікація через light clients криптографічно вбудовані в протокол. Це робить IBC фундаментально безпечнішим але значно складнішим.
Як IBC працює
Light Client — кожен IBC-сумісний блокчейн зберігає стан light client контрчейна. Верифікує consensus proofs (Merkle proofs) без повної історії. Підтримувані: Tendermint/CometBFT, Solo Machine, ETH PoS (via 08-wasm).
Connection — двостороння лінія між двома light clients. Установлюється через 4-way handshake.
Channel — логічний канал над з'єднанням з визначеною семантикою (ORDERED або UNORDERED). Прив'язує до конкретного IBC Application Protocol.
Packet — одиниця даних, що передається через канал. Містить payload, timeout, sequence number.
Relayer — off-chain процес, що моніторить обидва чейни, отримує commitment proofs та relay'ит пакети. Relayer немає привілеїв — тільки передає дані, верифікація light client. Основні реалізації: Hermes (Rust), Go Relayer, ts-relayer.
Життєвий цикл пакету
Chain A: Application.sendPacket() → IBC Core записує commitment hash
↓
Relayer помічає commitment
Relayer отримує Merkle proof
↓
Chain B: IBC Core верифікує proof через light client
IBC Core викликає Application.onRecvPacket()
↓
Chain A: Relayer relay'ит acknowledgement
IBC Core викликає Application.onAcknowledgementPacket()
Якщо пакет не доставлено до timeout: Chain B відхиляє, Chain A викликає onTimeoutPacket — кошти повертаються. Вбудований механізм атомарного повернення.
ICS-20: Трансфер токенів
ICS-20 стандарт для трансферу fungible токенів через IBC. Найпоширеніший use case.
Коли ATOM відправляється з Cosmos Hub на Osmosis via IBC, на Osmosis він існує як ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2. Цей хеш — denom trace: transfer/channel-0/uatom. При повернення на Hub, trace "розгортається" — токен не перестворюється, escrow'ована сума спалюється і оригінал видається.
CosmWasm: IBC-сумісні контракти
CosmWasm контракти нативно беруть участь у IBC — відкривають канали, відправляють/отримують пакети:
#[entry_point]
pub fn ibc_channel_open(
_deps: DepsMut,
_env: Env,
msg: IbcChannelOpenMsg,
) -> StdResult<IbcChannelOpenResponse> {
let channel = msg.channel();
if channel.order != IbcOrder::Unordered {
return Err(StdError::generic_err("Only unordered channels supported"));
}
Ok(IbcChannelOpenResponse::None)
}
#[entry_point]
pub fn ibc_packet_receive(
deps: DepsMut,
_env: Env,
msg: IbcPacketReceiveMsg,
) -> StdResult<IbcReceiveResponse> {
let packet_data: MyPacketData = from_binary(&msg.packet.data)?;
process_cross_chain_message(deps, packet_data)?;
let ack = Binary::from(br#"{"result":"ok"}"#);
Ok(IbcReceiveResponse::new().set_ack(ack))
}
Relayer інфраструктура
IBC вимагає relayer-ів. Критична інфраструктура — або self-hosted, або використовуємо сервіси (Notional, Imperator, StakeLab).
Hermes конфігурація: налаштуємо RPC, account prefix, gas параметри для обох чейнів.
IBC інтеграція 1–2 тижні. CosmWasm контракт 3–6 тижнів. Relayer інфраструктура 1–2 тижні. EVM↔Cosmos via Polymer/Union 4–8 тижнів. Аудит рекомендований — команда з досвідом Cosmos (Zellic, Oak Security).







