# CCTP Block Confirmations

Before signing an attestation for a source chain event, Circle waits for a specified number of onchain block confirmations to achieve hard finality. The tables below show the average time required for an attestation to become available after fast and standard messages are emitted onchain, respectively.

{% hint style="info" %}
Note: These values are subject to change.
{% endhint %}

### CCTP fast message attestation times

| Source Chain    | Number of Blocks | Average Time |
| --------------- | ---------------- | ------------ |
| **Ethereum**    | 2                | \~20 seconds |
| **Arbitrum**    | 1                | \~8 seconds  |
| **Base**        | 1                | \~8 seconds  |
| **Codex**       | 1                | \~8 seconds  |
| **Ink**         | 1                | \~8 seconds  |
| **Linea**       | 1                | \~8 seconds  |
| **OP Mainnet**  | 1                | \~8 seconds  |
| **Plume**       | 1                | \~8 seconds  |
| **Solana**      | 2-3\*            | \~8 seconds  |
| **Unichain**    | 1                | \~8 seconds  |
| **World Chain** | 1                | \~8 seconds  |

{% hint style="info" %}
Chains without Fast Message Attestation Times

Some chains don’t appear in the Fast Message Attestation Times because their standard attestation times are already fast. Consequently, Fast Transfer is not applicable when these chains are used as the source of truth for burns.

Affected chains:

* Arc Testnet
* Avalanche
* HyperEVM
* Monad
* Polygon PoS
* Sei
* Sonic
* XDC
  {% endhint %}

### CCTP standard message attestation times

| Source Chain        | Number of Blocks  | Average Time         |
| ------------------- | ----------------- | -------------------- |
| **Ethereum**        | \~65\*            | \~13 to 19 minutes\* |
| **Arbitrum**        | \~65 ETH blocks\* | \~13 to 19 minutes\* |
| **Arc Testnet**     | 1                 | \~0.5 seconds        |
| **Avalanche**       | 1                 | \~8 seconds          |
| **Base**            | \~65 ETH blocks\* | \~13 to 19 minutes\* |
| **BNB Smart Chain** | 3                 | \~2 seconds          |
| **Codex**           | \~65 ETH blocks\* | \~13 to 19 minutes\* |
| **HyperEVM**        | 1                 | \~5 seconds          |
| **Ink**             | \~65 ETH blocks\* | \~30 minutes\*       |
| **Linea**           | 1                 | \~6 to 32 hours\*\*  |
| **Monad**           | 1                 | \~5 seconds          |
| **OP Mainnet**      | \~65 ETH blocks\* | \~13 to 19 minutes\* |
| **Plume**           | \~65 ETH blocks\* | \~13 to 19 minutes\* |
| **Polygon PoS**     | \~2-3             | \~8 seconds          |
| **Sei**             | 1                 | \~5 seconds          |
| **Solana**          | 32                | \~25 seconds         |
| **Sonic**           | 1                 | \~8 seconds          |
| **Unichain**        | \~65 ETH blocks\* | \~13 to 19 minutes\* |
| **World Chain**     | \~65 ETH blocks\* | \~13 to 19 minutes\* |
| **XDC**             | 3                 | \~10 seconds         |

<details>

<summary>Additional notes</summary>

* Block confirmations for L2s to Ethereum\
  Layer 2 (L2) blockchains publish transaction data in batches to Ethereum L1, and the frequency of these posts varies by chain. Most OP Stack-based chains, including Codex, post state updates using EIP-4844 blob transactions approximately every \~15 minutes. After a batch is posted, Circle waits for the Ethereum L1 block containing the batch to finalize, which typically happens after \~65 blocks (13 to 19 minutes), before issuing an attestation.
* Hard finality for Linea\
  The typical time before hard finality on Linea is 6-32 hours.
* Finality for Solana\
  For Solana Standard Messages, Circle waits for block finality before attesting. This takes 32 blocks. For Fast Messages, Circle only waits for the block to be confirmed, meaning the block has received votes from validators representing over two-thirds of the total stake. This typically takes 2-3 blocks.

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://chainaiswap.gitbook.io/chainaiswap-docs/cross-chain-transfer-protocol/cctp-block-confirmations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
