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