Overview
The Callbacks module provides a standardized interface for smart contracts to handle IBC (Inter-Blockchain Communication) packet lifecycle events. This allows contracts to implement callback functions that are invoked when packets are acknowledged or time out during cross-chain communication. This is not a precompile that is called directly, but rather an interface that a contract must implement to receive callbacks. Related Module: x/ibc-callbacksCallback Functions
A contract that sends an IBC transfer may need to listen for the outcome of the packet lifecycle.Ack
and Timeout
callbacks allow contracts to execute custom logic on the basis of how the packet lifecycle completes. The sender of an IBC transfer packet may specify a contract to be called when the packet lifecycle completes. This contract must implement the expected entrypoints for onPacketAcknowledgement
and onPacketTimeout
.
Critically, only the IBC packet sender can set the callback.
onPacketAcknowledgement
Signature: onPacketAcknowledgement(string memory channelId, string memory portId, uint64 sequence, bytes memory data, bytes memory acknowledgement)
Description: Callback function invoked on the source chain after a packet lifecycle is completed and acknowledgement is processed. The contract implementing this interface receives packet information and acknowledgement data to execute custom callback logic.
onPacketTimeout
Signature: onPacketTimeout(string memory channelId, string memory portId, uint64 sequence, bytes memory data)
Description: Callback function invoked on the source chain after a packet lifecycle is completed and the packet has timed out. The contract implementing this interface receives packet information to execute custom timeout handling logic.
Security Considerations
When implementing the Callbacks interface, consider the following security aspects:Caller Validation
- Critical: Only the IBC module should invoke these callback functions
- Implementing contracts must validate that the caller is the authorized IBC module address
- Failure to validate the caller could allow malicious actors to trigger callbacks
Gas Considerations
- Callback execution consumes gas from the IBC transaction
- Complex callback logic may cause the transaction to run out of gas
- Consider implementing gas-efficient callback logic or handling partial execution states
- Be aware that callback failures may impact the overall IBC packet lifecycle
Example Security Pattern
Full Solidity Interface & ABI
Callbacks Solidity Interface
Callbacks ABI