API Version: v1.6.0

CCIP v1.6.0 SVM Events API Reference

Events

Router

The Router program emits various events to provide transparency and enable off-chain monitoring of cross-chain operations.

Message Events

CCIPMessageSent

Emitted when a cross-chain message is successfully sent via ccip_send.

#[event]
pub struct CCIPMessageSent {
    /// The chain selector identifying the destination chain.
    pub dest_chain_selector: u64,
    /// The sequence number for this message, specific to the destination chain.
    pub sequence_number: u64,
    /// The full SVM2AnyRampMessage describing the cross-chain payload and tokens being sent.
    pub message: SVM2AnyRampMessage,
}
FieldTypeDescription
dest_chain_selectoru64The chain selector for the destination chain. Think of it as the chain's unique ID in the CCIP ecosystem (e.g., 1 for Ethereum Mainnet, 10 for Optimism, etc.).
sequence_numberu64Monotonically increments each time you successfully call ccip_send for a particular destination chain. It is unique per chain in the sense that each chain has its own separate sequence.
messageSVM2AnyRampMessageThe cross-chain message payload itself. It includes:
• The sender's address
• Arbitrary data payload
• Token transfer details
• Fees and more

Token Administration Events

AdministratorTransferRequested

Emitted when a token administrator role transfer is initiated via owner_propose_administrator, ccip_admin_propose_administrator, or transfer_admin_role_token_admin_registry.

#[event]
pub struct AdministratorTransferRequested {
    pub token: Pubkey,
    pub current_admin: Pubkey,
    pub new_admin: Pubkey,
}
FieldTypeDescription
tokenPubkeyThe SPL token mint address
current_adminPubkeyThe current administrator (may be zero on initial registration)
new_adminPubkeyThe proposed new administrator
AdministratorTransferred

Emitted when a token administrator role transfer is completed via accept_admin_role_token_admin_registry.

#[event]
pub struct AdministratorTransferred {
    pub token: Pubkey,
    pub new_admin: Pubkey,
}
FieldTypeDescription
tokenPubkeyThe SPL token mint address
new_adminPubkeyThe new active administrator
PoolSet

Emitted when a token pool Address Lookup Table is configured via set_pool.

#[event]
pub struct PoolSet {
    pub token: Pubkey,
    pub previous_pool_lookup_table: Pubkey,
    pub new_pool_lookup_table: Pubkey,
}
FieldTypeDescription
tokenPubkeyThe SPL token mint address
previous_pool_lookup_tablePubkeyThe previous Address Lookup Table (zero if first time)
new_pool_lookup_tablePubkeyThe new Address Lookup Table (zero to delist from CCIP)
PoolEdited

Emitted when pool auto-derivation support is modified via set_pool_supports_auto_derivation.

#[event]
pub struct PoolEdited {
    pub token: Pubkey,
    pub supports_auto_derivation: bool,
}
FieldTypeDescription
tokenPubkeyThe SPL token mint address
supports_auto_derivationboolWhether the pool supports auto-derivation

BurnMint Token Pool

The BurnMint Token Pool program emits events related to pool configuration, token operations, and mint authority management.

Global Configuration Events

GlobalConfigUpdated

Emitted when the global pool configuration is updated via init_global_config, update_self_served_allowed, update_default_router, or update_default_rmn.

#[event]
pub struct GlobalConfigUpdated {
    pub self_served_allowed: bool,
    pub router: Pubkey,
    pub rmn_remote: Pubkey,
}
FieldTypeDescription
self_served_allowedboolWhether self-service pool initialization is allowed
routerPubkeyThe default CCIP Router program address
rmn_remotePubkeyThe default RMN Remote program address

Token Operations Events

Burned

Emitted when tokens are burned via lock_or_burn_tokens during cross-chain transfers.

#[event]
pub struct Burned {
    pub sender: Pubkey,
    pub amount: u64,
    pub mint: Pubkey,
}
FieldTypeDescription
senderPubkeyThe account that initiated the burn
amountu64The amount of tokens burned
mintPubkeyThe SPL token mint address
Minted

Emitted when tokens are minted via release_or_mint_tokens during cross-chain transfers.

#[event]
pub struct Minted {
    pub sender: Pubkey,
    pub recipient: Pubkey,
    pub amount: u64,
    pub mint: Pubkey,
}
FieldTypeDescription
senderPubkeyThe pool signer that authorized minting
recipientPubkeyThe account receiving the minted tokens
amountu64The amount of tokens minted
mintPubkeyThe SPL token mint address

Administrative Events

MintAuthorityTransferred

Emitted when the mint authority is transferred to a multisig via transfer_mint_authority_to_multisig.

#[event]
pub struct MintAuthorityTransferred {
    pub mint: Pubkey,
    pub old_mint_authority: Pubkey,
    pub new_mint_authority: Pubkey,
}
FieldTypeDescription
mintPubkeyThe SPL token mint address
old_mint_authorityPubkeyThe previous mint authority
new_mint_authorityPubkeyThe new multisig mint authority
RemoteChainRemoved

Emitted when a remote chain configuration is deleted via delete_chain_config.

#[event]
pub struct RemoteChainRemoved {
    pub chain_selector: u64,
    pub mint: Pubkey,
}
FieldTypeDescription
chain_selectoru64The removed chain selector
mintPubkeyThe SPL token mint address

Lock-Release Token Pool

The Lock-Release Token Pool program emits events related to token locking and releasing operations, as well as liquidity management.

Token Operations Events

Locked

Emitted when tokens are locked in the pool via lock_or_burn_tokens during cross-chain transfers.

#[event]
pub struct Locked {
    pub sender: Pubkey,
    pub amount: u64,
    pub mint: Pubkey,
}
FieldTypeDescription
senderPubkeyThe account that initiated the lock
amountu64The amount of tokens locked
mintPubkeyThe SPL token mint address
Released

Emitted when tokens are released from the pool via release_or_mint_tokens during cross-chain transfers.

#[event]
pub struct Released {
    pub sender: Pubkey,
    pub recipient: Pubkey,
    pub amount: u64,
    pub mint: Pubkey,
}
FieldTypeDescription
senderPubkeyThe pool signer that released tokens
recipientPubkeyThe account that received the tokens
amountu64The amount of tokens released
mintPubkeyThe SPL token mint address

Configuration Events

GlobalConfigUpdated

This event is shared with the BurnMint Token Pool and is documented in the BurnMint Token Pool section.

RemoteChainRemoved

This event is shared with the BurnMint Token Pool and is documented in the BurnMint Token Pool section.

Shared Token Pool Events

The Base Token Pool library defines additional events that are used by both BurnMint and Lock-Release token pool implementations. These events cover configuration management, ownership operations, and rate limiting.

Pool Configuration Events

RemoteChainConfigured

Emitted when a remote chain configuration is updated via edit_chain_remote_config or init_chain_remote_config.

#[event]
pub struct RemoteChainConfigured {
    pub chain_selector: u64,
    pub token: RemoteAddress,
    pub previous_token: RemoteAddress,
    pub pool_addresses: Vec<RemoteAddress>,
    pub previous_pool_addresses: Vec<RemoteAddress>,
    pub mint: Pubkey,
}
FieldTypeDescription
chain_selectoru64The remote chain selector
tokenRemoteAddressThe new remote token address
previous_tokenRemoteAddressThe previous remote token address
pool_addressesVec<RemoteAddress>The new remote pool addresses
previous_pool_addressesVec<RemoteAddress>The previous remote pool addresses
mintPubkeyThe SPL token mint address

RateLimitConfigured

Emitted when rate limits are updated via set_chain_rate_limit.

#[event]
pub struct RateLimitConfigured {
    pub chain_selector: u64,
    pub outbound_rate_limit: RateLimitConfig,
    pub inbound_rate_limit: RateLimitConfig,
    pub mint: Pubkey,
}
FieldTypeDescription
chain_selectoru64The remote chain selector
outbound_rate_limitRateLimitConfigOutbound rate limit settings
inbound_rate_limitRateLimitConfigInbound rate limit settings
mintPubkeyThe SPL token mint address

RemotePoolsAppended

Emitted when remote pool addresses are added via append_remote_pool_addresses.

#[event]
pub struct RemotePoolsAppended {
    pub chain_selector: u64,
    pub pool_addresses: Vec<RemoteAddress>,
    pub previous_pool_addresses: Vec<RemoteAddress>,
    pub mint: Pubkey,
}
FieldTypeDescription
chain_selectoru64The remote chain selector
pool_addressesVec<RemoteAddress>The updated pool addresses list
previous_pool_addressesVec<RemoteAddress>The previous pool addresses list
mintPubkeyThe SPL token mint address

Administrative Events

TokenPoolInitialized

Emitted when a new token pool is initialized via the initialize instruction.

#[event]
pub struct TokenPoolInitialized {
    pub mint: Pubkey,
    pub token_program: Pubkey,
    pub owner: Pubkey,
}
FieldTypeDescription
mintPubkeyThe SPL token mint address
token_programPubkeyThe token program ID
ownerPubkeyThe initial pool owner

OwnershipTransferRequested

Emitted when ownership transfer is proposed via transfer_ownership.

#[event]
pub struct OwnershipTransferRequested {
    pub from: Pubkey,
    pub to: Pubkey,
    pub mint: Pubkey,
}
FieldTypeDescription
fromPubkeyThe current owner
toPubkeyThe proposed new owner
mintPubkeyThe SPL token mint address

OwnershipTransferred

Emitted when ownership transfer is completed via accept_ownership.

#[event]
pub struct OwnershipTransferred {
    pub from: Pubkey,
    pub to: Pubkey,
    pub mint: Pubkey,
}
FieldTypeDescription
fromPubkeyThe previous owner
toPubkeyThe new owner
mintPubkeyThe SPL token mint address

RouterUpdated

Emitted when the router address is updated via set_router.

#[event]
pub struct RouterUpdated {
    pub old_router: Pubkey,
    pub new_router: Pubkey,
    pub mint: Pubkey,
}
FieldTypeDescription
old_routerPubkeyThe previous router
new_routerPubkeyThe new router
mintPubkeyThe SPL token mint address

RmnRemoteUpdated

Emitted when the RMN remote address is updated via set_rmn.

#[event]
pub struct RmnRemoteUpdated {
    pub old_rmn_remote: Pubkey,
    pub new_rmn_remote: Pubkey,
    pub mint: Pubkey,
}
FieldTypeDescription
old_rmn_remotePubkeyThe previous RMN remote
new_rmn_remotePubkeyThe new RMN remote
mintPubkeyThe SPL token mint address

Rate Limiting Events

TokensConsumed

Emitted when tokens are consumed from the rate limit bucket during transfer operations.

#[event]
pub struct TokensConsumed {
    pub tokens: u64,
}
FieldTypeDescription
tokensu64Number of tokens consumed from bucket

ConfigChanged

Emitted when rate limit configuration is updated via set_token_bucket_config.

#[event]
pub struct ConfigChanged {
    pub config: RateLimitConfig,
}
FieldTypeDescription
configRateLimitConfigThe new rate limit configuration

OffRamp

The OffRamp program emits events related to message execution during the cross-chain message delivery process.

Message Execution Events

ExecutionStateChanged

Emitted during message execution to track the progress of cross-chain message delivery. This event is emitted twice during the execution process:

  1. When the message state changes to InProgress (execution started)
  2. When the message state changes to Success (execution completed)
#[event]
pub struct ExecutionStateChanged {
    pub source_chain_selector: u64,
    pub sequence_number: u64,
    pub message_id: [u8; 32],
    pub message_hash: [u8; 32],
    pub state: MessageExecutionState,
}
FieldTypeDescription
source_chain_selectoru64The chain selector of the source chain
sequence_numberu64The sequence number of the message being executed
message_id[u8; 32]Unique identifier for the cross-chain message
message_hash[u8; 32]Hash of the message content
stateMessageExecutionStateCurrent execution state (InProgress or Success)

Get the latest Chainlink content straight to your inbox.