Fees
Last updated
Last updated
Managing fees in cross-chain messaging involves handling two main types of fees: message fees and gas fees.
Where: Paid on source blockchain
What: A static fee in the most stable stablecoin on the origin blockchain. Listed as FEE_TOKEN in the developer documentation. Often this is Circle's USDC. If USDC is unavailable, the fee token is typically USDT or an equivalent.
Responsibility: The contract sending the message must have enough stablecoins; otherwise, the message cannot be sent.
Example: If sending a message from Polygon, your contract on Polygon needs enough USDC to cover the static fee.
Where: Paid on destination blockchain
What: A dynamic fee charged by the blockchain's themselves. Paid in the wrapped native gas coin (e.g., WETH on Ethereum, WAVAX on Avalanche, etc.).
Responsibility: The receiving contract must have enough of the gas token to cover transaction costs. The gas is automatically pulled / sent to the relayer contract as a "gas reimbursement".
Example: If sending a message to Ethereum, your deployed contract on Ethereum needs enough WETH to cover the gas fee.
The system automatically checks and deducts these fees during transactions. Fees are pulled directly from the your deployed smart contracts. The integrating party can choose to pay this themselves or pass the cost to the user.
Developers can set limits on fees to prevent unexpected high costs using setMaxgas
and setMaxfee
functions.