ccip.dev methodology
What is counted
- Message: one mainnet CCIP message from
api.ccip.chain.link/v2(environment=mainnet). Testnets are excluded. - Day: the UTC date of the message’s send time.
- Value transferred: Σ over a message’s tokens of
amount / 10^decimals × USD price.- Live data uses the latest DefiLlama price when the message is first valued. A live message that is still unpriced is valued again when its day is finalized (00:10 UTC, and again at 06:00 UTC, the next day).
- History uses DefiLlama’s daily price for the send day.
- Data-only messages add $0.
- Price lookup: live data and history use the same order.
- DefiLlama’s price for the token’s own chain and address.
- The same token on another CCIP chain, from the same CCIP token group. Siblings on Ethereum, Base, Arbitrum, Optimism, Polygon, BSC, Avalanche and Solana are preferred, and the token’s own decimals are used.
- DefiLlama’s
coingecko:<id>price. The CoinGecko id comes from CoinGecko’s free coin list (platform plus contract address). CoinGecko is used only to map ids; no CoinGecko price is stored. - Otherwise the token is unpriced.
- Price guards:
- A single token transfer valued above $10 billion is treated as a bad price and counted as unpriced.
- History only: a missing daily price is filled from the nearest day within ±2 days. The fill happens only when the price series has points on both sides of the day; when two days are equally near, the earlier one is used.
- History only: a daily price more than 20× or less than 1/20 of the median of the token’s other prices within ±7 days (or of its nearest 3 prices) is dropped as a glitch. The final history build dropped 107 such prices. For example, DefiLlama lists elizaOS at $125,176 on its launch day, 2025-11-07. Without the guard that day totals $18.8 trillion; with it, $74.7 million.
- Unpriced: a token none of the steps can price adds $0. The message is still counted, and it is reported in
unpriced_messages. Since 2023-07-06, 68,893 of 1,565,729 messages (4.4%) are unpriced. - Fees: the message’s fixed fee, in USD at the fee token’s latest price. Fees are collected from 2026-10-05 onward only.
- Fees paid in LINK: the part of a day’s fees whose fee token is in CCIP’s LINK token group (LINK on the
chains where it moves through CCIP). LINK fees on 12 chains where LINK is a fee token but is not in that group
(OP, BNB Chain, Gnosis, Polygon, Arbitrum, Avalanche, Cronos zkEVM, Bittensor EVM, HyperEVM, Kaia, Etherlink and
Nexon Henesys) are not counted yet, so
fee_link_share_pctcan understate LINK’s share. Available from 2026-10-05 onward. - Delivery time: receipt minus send, for
SUCCESSmessages. The median is reported per day.
Coverage
History starts on 2023-07-06. This is the first CCIP mainnet message (2023-07-06 22:34:59 UTC). All-time figures are labeled “since 2023-07-06”.
How the history was collected:
- The API’s unfiltered message list cannot be crawled back to the start. The January 2026 depth wall was the Sui
poison message (2026-01-15 01:28:06 UTC). The unfiltered list’s 30-second timeouts also start somewhere between
September and December 2025. History is therefore crawled one source chain at a time, using the API’s
sourceChainSelectorfilter, which avoids both. - All 95 source chains were crawled to their first message, and none stopped early. The source list is the CCIP chain registry plus every chain seen in a message, so chains that only receive were checked as well.
- Three list pages fail with HTTP 500 whenever they contain one particular message. The crawler skipped past each such message and recorded the window after it. For each window, every lane was then queried to the window’s end: no message other than the skipped one is missing. The skipped messages are not counted.
| Source chain | Send time (UTC) | Message id | Window checked to |
|---|---|---|---|
| sui-mainnet | 2026-01-15 01:28:06 | 0xc8cc7f57a25e6e96e6be7bcd606a1a8d59d85d757d08e7e045e87a8cfe0bcbc7 |
2026-01-15 07:08:08 |
| aptos-mainnet | 2025-09-01 15:51:44 | 0xb3a18e5747c5083dc41b3e751482a2d0b30f62379f5d863df937b70edb175212 |
2025-09-02 02:30:29 |
| aptos-mainnet | 2025-09-01 14:43:49 | 0xb3a18e5747c5083dc41b3e751482a2d0b30f62379f5d863df937b70edb175212 |
2025-09-01 15:19:01 |
The two Aptos records share a message id but have different send times, so both are listed. The detail endpoint returns 404 for the Sui message.
Days with no messages (2023-08-03 to 2023-08-06 and 2023-08-31) have no row in history.json.
Live ingest started on 2026-10-05. For that day, the API lists exactly 2,487 mainnet messages, and their ids match the stored ids one for one.
Known limitations
- Before 2026-10-05, a message carrying more than one token counts only its first token, because the list endpoint exposes one token per message. Since 2026-10-05, none of 2,360 token-carrying messages has carried more than one token, so the effect is expected to be small.
- Live data and history use different price methods (latest versus daily), so their values can differ slightly.
- History’s group fallback (step 2) uses today’s CCIP token registry. A token that has since left the registry has no sibling fallback in history.
- Our cumulative value is 7.2% below Chainlink’s official figure (see the Chainlink metrics table below). The gap was already there by 2026-05, and recent months match within 0.7%, so it comes from older history. Its causes are not yet measured. Candidates are multi-token messages before 2026-10-05, unpriced long-tail tokens, and Chainlink’s own outlier handling.
- History statuses are as of crawl time, so a message still in flight when crawled keeps that status. Live messages update until final.
- Some tokens are not in CCIP’s public token list. They are priced and named from DefiLlama where it knows them; otherwise they show only their address.
- The CCIP API publishes no rate limits or terms. We keep to 1 request per second per job and credit the source in every file.
Data sources
All data sources are free:
- CCIP API (
api.ccip.chain.link/v2): messages, chains and the token registry. - DefiLlama coins API: latest and daily token prices, with no API key.
- CoinGecko public API: coin-id mapping only, with no API key.
- Public Ethereum RPC endpoints (keyless, e.g. rpc.mevblocker.io and 0xrpc.io): the Reserve’s LINK balance and transfer logs.
- Chainlist (
chainlist.org/rpcs.json, from DefiLlama/chainlist): the source of the keyless RPC and Blockscout endpoint lists inconfig/endpoints.json. Only the data is used. Every entry is checked live before it is written.
Chainlink Reserve
- Balance: read every hour with
balanceOfon the LINK token for the Reserve,0x9A709B7B69EA42D5eeb1ceBC48674C69E1569eC6. - Transfers: every LINK
Transferinto or out of the Reserve since its first transfer (block 23,039,541, 2025-07-31). They come from Ethereum logs through free public RPC endpoints, 12 blocks behind the chain head. Each run checks that transfers in minus transfers out equal the balance at the last block scanned, and alerts if they differ. - Price at transfer: DefiLlama’s LINK price at the transfer’s block time, within 10 minutes. This is the market price when the LINK arrived, not the price Chainlink paid for it.
- Cost basis: every inbound transfer at its own time price, minus every outbound transfer at its own time price.
Value now is the net LINK at DefiLlama’s current price. A transfer DefiLlama has not priced yet counts as $0 in the USD totals (cost basis and weekly USD) until it is priced, which is retried every hour;
cost_basis.unpriced_transferssays how many are waiting. - Deposits: inbound transfers of at least 1,000 LINK. Smaller inbound transfers (a 1-LINK test and gifts of up to 7 LINK) count toward the balance and the cost basis, but not toward pace, weekly deposits or performance.
- Weekly: UTC weeks starting Monday. The weekly USD is the deposit-time value of the LINK deposited, not Chainlink’s revenue.
- Pace: the 4-week figures average the last four complete weeks. The milestone date assumes that pace continues.
- Cadence: the average gap between deposits; the next deposit is expected at the last deposit plus the median gap, and is flagged overdue 24 hours after that; the streak counts consecutive deposits no more than 8 days apart.
Cross-check
@CCIPMetrics posts its “#CCIP today” totals just after midnight UTC. Each post is dated the day it is posted and covers the previous UTC day: on every day below, its transaction count equals our message count for the previous UTC day. Chainlink’s metrics site (metrics.chain.link) publishes only a monthly cumulative CCIP volume, with no daily figures, so it is compared by month in a separate table.
| Day (UTC) | ccip.dev messages | ccip.dev USD | CCIPMetrics messages | CCIPMetrics USD | Gap and reason |
|---|---|---|---|---|---|
| 2026-10-05 | 2,487 | 22,954,922 | 2,488 | 22,921,006.7 | Messages −1: the API lists exactly 2,487 mainnet messages for the day, matching our ids one for one. USD +0.15% after the 2026-10-07 finalize re-valued the 101 messages first valued before the pricing fallbacks were deployed (24 remain unpriced). Fees: ours $1,245.29, CCIPMetrics $1,252.4 (−0.57%). |
| 2026-10-04 | 1,121 | 17,405,830 | 1,121 | 17,335,113.8 | +0.41% |
| 2026-10-03 | 1,178 | 50,942,816 | 1,178 | 51,231,459.2 | −0.56% |
| 2026-10-02 | 1,977 | 74,446,837 | 1,977 | 74,349,254.0 | +0.13% |
| 2026-10-01 | 2,158 | 49,675,344 | 2,158 | 50,029,455.9 | −0.71% |
| 2026-09-27 | 1,031 | 14,521,483 | 1,031 | 13,512,588.1 | +7.47%. Without PRIME on Tempo ($906,683): +0.76% |
| 2026-09-26 | 1,083 | 12,213,602 | 1,083 | 10,004,805.9 | +22.08%. Without PRIME on Tempo ($2,113,332): +0.95% |
| 2026-09-25 | 1,889 | 40,894,816 | 1,889 | 39,809,129.0 | +2.73%. Without PRIME on Tempo ($904,538): +0.46% |
| 2026-09-24 | 2,309 | 41,650,681 | 2,309 | 38,846,952.5 | +7.22%. Without PRIME on Tempo ($2,709,166): +0.24% |
Notes on the table:
- 2026-10-01 to 10-05: the CCIPMetrics posts were read on x.com: 10-05, 10-04, 10-03, 10-02, 10-01.
- 2026-09-24 to 09-27: these figures come from search-engine copies of the posts, not from the posts themselves.
- PRIME on Tempo: token
0x20c00000000000000000000058d0b8b2cfdb358c. It is not in CCIP’s token list, and DefiLlama prices it at about $1.06. Until late September, CCIPMetrics appears to have valued it at $0. With it excluded, those days match within 1%. From 2026-10-01 our totals match CCIPMetrics with PRIME included.
| Month | ccip.dev month USD | Chainlink month USD | Gap |
|---|---|---|---|
| 2026-06 | 1,095,606,149 | 1,130,622,176 | −3.10% |
| 2026-07 | 1,319,783,375 | 1,327,119,940 | −0.55% |
| 2026-08 | 1,221,665,054 | 1,213,506,818 | +0.67% |
| Cumulative to 2026-08-31 | 22,381,511,846 | 24,117,366,970 | −7.20% (see Known limitations) |
Chainlink’s figures come from https://metrics.chain.link/api/metrics/latest (ccipVolume, generated 2026-09-25).
That page notes that “some outliers and anomalous data have been removed”.