This is a summary view of IBC v2 [Eureka]. For more comprehensive details, guides and more please visit the official Eureka documentation.

Core Data Structures

The Packet is the primary container for cross-chain communication. Each packet wraps one or more application-specific Payload objects.
/ The main data container sent between chains
interface Packet {
  sourceClientId: bytes;    / Client ID for destination chain (stored on source)
  destClientId: bytes;      / Client ID for source chain (stored on destination)
  sequence: uint64;         / Monotonically increasing nonce for ordering
  timeoutTimestamp: uint64; / UNIX timestamp (seconds) when the packet expires
  data: Payload[];          / List of application payloads
}

/ Application-specific data and routing information
interface Payload {
  sourcePort: bytes;  / Identifies sending application module
  destPort: bytes;    / Identifies receiving application module
  version: string;    / App-specific version for interpretation
  encoding: string;   / MIME-type for decoding value
  value: bytes;       / Opaque application data
}

Key On-Chain Components

Application Interface (ICS-26)

An IBC-enabled application must implement these callbacks to manage the packet lifecycle.
  • OnRecvPacket(...) – Executed on the destination chain to process incoming data. It must return an Acknowledgement, which can contain application-specific success data or an error.
  • OnAcknowledgePacket(...) – Executed on the source chain once an acknowledgement is verified. The acknowledgement data is passed to this callback, allowing the sending application to finalize or compensate the originating action.
  • OnTimeoutPacket(...) – Executed on the source chain if a timeout occurs, allowing for a clean rollback or refund.
For packets with multiple payloads, execution is atomic. If the OnRecvPacket callback fails for even one payload, the entire packet operation is considered a failure. Any state changes from other successful callbacks in the same packet must be reverted.

Packet Lifecycle