CCTP IntegrationProduction
deposit_for_burn
Burns vault USDC through CCTP for an outbound cross-chain transfer.
Required conditions
- The vault integration ACL must enable this integration before the instruction is accepted; that enablement is defined on the GLAM state account.
- If the signer is not the owner, the delegate ACL on the GLAM state must contain the exact protocol permission required by this instruction; registering a delegate alone is insufficient.
- Instruction-specific destination accounts must satisfy the external protocol's own account model; GLAM validates the accounts it needs for authorization and policy enforcement, then passes the remaining protocol accounts through CPI.
Accounts
| Account | Role | Description |
|---|---|---|
| glam_state | writable | GLAM state account that stores vault configuration, integration ACLs, delegate permissions, policies, assets, mint linkage, and pricing records. |
| glam_vault | writable | Vault PDA associated with the GLAM state and used as the vault authority. |
| glam_signer | signer, writable | Calling authority or fee payer. |
| integration_authority | read-only | Program-derived authority used by the integration for downstream invocation. |
| cpi_program | read-only | Downstream program invoked by this instruction. |
| glam_protocol_program | read-only | GLAM Protocol program account used for authorization or CPI. |
| system_program | read-only | Solana System Program. |
| sender_authority_pda | read-only | CCTP sender authority PDA that authorizes the vault burn through Circle's token messenger. |
| burn_token_account | writable | Token account read or written by this instruction. |
| denylist_account | read-only | Circle CCTP denylist account checked before the USDC burn is submitted. |
| message_transmitter | writable | Circle CCTP MessageTransmitter state account updated when the outbound message is recorded. |
| token_messenger | read-only | Circle CCTP TokenMessenger account that coordinates the USDC burn and cross-chain message. |
| remote_token_messenger | read-only | Circle CCTP remote TokenMessenger account for the destination domain. |
| token_minter | read-only | Token mint account used or validated by this instruction. |
| local_token | writable | Circle CCTP local-token metadata account for the burned USDC mint. |
| burn_token_mint | writable | Token mint account used or validated by this instruction. |
| message_sent_event_data | signer, writable | Token account read or written by this instruction. |
| message_transmitter_program | read-only | message transmitter program account invoked or checked by this instruction. |
| token_messenger_minter_program | read-only | Token mint account used or validated by this instruction. |
| token_program | read-only | Token program account. |
| event_authority | read-only | Event authority or downstream event account. |
Arguments
| Argument | Type | Notes |
|---|---|---|
| args | DepositForBurnParams |
Policy & permissions
- Requires a Vault GLAM state.
- Caller: GLAM owner, or a delegate with CCTP
Transfer. - The CCTP policy gates the
(destination_domain, mint_recipient)pair against an allowlist; asset and amount are not gated.
TypeScript SDK usage
await glamClient.cctp.bridgeUsdc(
new BN(1_000_000),
0,
destinationAddress,
{ maxFee: new BN(500_000), minFinalityThreshold: 1000 },
);