Only two finality thresholds are supported. Any minFinalityThreshold
value
below 1000 is treated as 1000, and any value above 1000 is treated
as 2000.
In CCTP V2, finality thresholds allow integrators to specify the level of confirmation required before an attestation is issued.
CCTP V2 introduces the concept of a finality threshold, which provides a chain-agnostic representation of the confirmation level for a given attestation.
In CCTP V2, each message specifies a minFinalityThreshold
. This threshold
indicates the minimum level of confirmation required for Circle's attestation
service (Iris) to attest to the message. Iris will not attest to a message at a
confirmation level below the specified minimum threshold. This allows
applications to enforce a desired level of finality before acting on an
attestation on the destination chain.
CCTP V2 defines the following finality thresholds:
Finality Threshold | Value |
---|---|
Confirmed | 1000 |
Finalized | 2000 |
minFinalityThreshold
of 1000 or lower are considered
Fast messages. These messages are eligible for fast attestation at the
confirmed level by Iris.minFinalityThreshold
of 2000 are considered Standard
messages. These messages are attested to at the finalized level by Iris.Only two finality thresholds are supported. Any minFinalityThreshold
value
below 1000 is treated as 1000, and any value above 1000 is treated
as 2000.
For CCTP V2 transfers, a fee is collected onchain at the time of USDC minting. Retrieve the applicable fee by calling the API every time before executing a transaction. Fees are subject to change with advance notice. See the table below for rates.
maxFee
parameter in depositForBurn
specifies the maximum fee that can
be charged during minting.
maxFee
is less than the minimum Standard Transfer fee, the burn reverts
onchain.maxFee
is equal to or greater than the minimum Fast Transfer fee, and
minFinalityThreshold
is 1000 or lower, the attestation is eligible for
Fast Transfer. In this case, the Fast Transfer fee (which varies by chain)
is charged onchain at minting.maxFee
is below the Fast Transfer fee or minFinalityThreshold
is greater
than 1000—the Standard Transfer fee (currently 0) is charged onchain at
minting.The minimumFee
field in the /v2/burn/USDC/fees
response represents the
required fee rate in basis points (bps). To calculate the maxFee
to include
in depositForBurn
, multiply this value by the amount to be transferred.
Source chain | Fee |
---|---|
Arbitrum | 1 bps (0.01%) |
Base | 1 bps (0.01%) |
Codex | 2 bps (0.02%) |
Ethereum | 1 bps (0.01%) |
Linea | 14 bps (0.14%) |
OP Mainnet | 1 bps (0.01%) |
Polygon PoS | 1 bps (0.01%) |
Solana | 1 bps (0.01%) |
Unichain | 1 bps (0.01%) |
World Chain | 1 bps (0.01%) |
Source chain | Fee |
---|---|
Arbitrum | 0 bps (0%) |
Avalanche | 0 bps (0%) |
Base | 0 bps (0%) |
Codex | 0 bps (0%) |
Ethereum | 0 bps (0%) |
Linea | 0 bps (0%) |
OP Mainnet | 0 bps (0%) |
Polygon PoS | 0 bps (0%) |
Solana | 0 bps (0%) |
Sonic | 0 bps (0%) |
Unichain | 0 bps (0%) |
World Chain | 0 bps (0%) |
Some chains support a Standard Transfer fee switch, which enables enforcing a minimum fee during a CCTP V2 Standard Transfer.
TokenMessengerV2
contract include a fee switch that
enforces a minimum onchain fee. This fee is collected during USDC minting in a
Standard Transfer. See tables below for supported chains.TokenMessengerV2
contracts with fee switch support include the
getMinFeeAmount
function, which calculates and returns the minimum fee
required for a given burn amount, in units of the burnToken
.Important:
Calling getMinFeeAmount
on a chain that uses an older TokenMessengerV2
contract (without fee switch support) will result in an error. Refer to the
tables below to determine which contract version is deployed on each EVM
chain.
TokenMessenger
Contracts (No Standard Transfer Fee Switch support)Source Chain | Contract Source Code |
---|---|
Arbitrum | 7d70310 |
Avalanche | 7d70310 |
Base | 7d70310 |
Codex | 7d70310 |
Ethereum | 7d70310 |
Linea | 7d70310 |
OP Mainnet | 7d70310 |
Polygon POS | 7d70310 |
Sonic | 7d70310 |
Unichain | 7d70310 |
World Chain | 7d70310 |
TokenMessenger
Contracts (with Standard Transfer Fee Switch support)Source Chain | Contract Source Code |
---|---|
Sei | 2f9a2ba |