From 7a150da7a994255efa227e032c2c19f3d514bb40 Mon Sep 17 00:00:00 2001 From: pkdoddamani <34116639+pkdoddamani@users.noreply.github.com> Date: Wed, 1 Jul 2026 12:40:08 +0530 Subject: [PATCH 1/4] docs: add gasless CCTP relay guide --- .../cctp-gasless-relay.mdx | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 docs/base-chain/network-information/cctp-gasless-relay.mdx diff --git a/docs/base-chain/network-information/cctp-gasless-relay.mdx b/docs/base-chain/network-information/cctp-gasless-relay.mdx new file mode 100644 index 000000000..3ea6d8b15 --- /dev/null +++ b/docs/base-chain/network-information/cctp-gasless-relay.mdx @@ -0,0 +1,79 @@ +--- +title: Auto-complete USDC delivery after a CCTP bridge +description: Learn how to relay Circle CCTP delivery on Base so recipients can receive USDC without holding ETH for gas. +--- + +import { GithubRepoCard } from "/snippets/GithubRepoCard.mdx" + +Base users who bridge USDC from Solana or another supported chain still need to call `receiveMessage` on Base after the attestation is ready. This guide shows how to remove that last gas payment by having a relayer submit the Base delivery transaction for the user. + + +This pattern is useful for Base Mainnet apps that want to complete CCTP delivery for users who do not yet hold ETH on Base. + + +## How the relay pattern works + + + +The source-chain transfer emits a CCTP message that Circle later attests. + + +Your backend checks Circle's attestation API until the message status becomes `complete`. + + +Once the attestation is ready, the relayer submits `receiveMessage` to Base's `MessageTransmitter` contract and pays the ETH gas cost. + + +The recipient receives USDC on Base without having to fund the destination wallet first. + + + +## What to validate before relaying + +Before you submit the relay transaction, validate the message instead of trusting client input: + +- Derive `destDomain` from the attested `messageBytes`. +- Confirm the destination chain is Base before submitting `receiveMessage`. +- Treat already-used nonces as idempotent success, not as a fatal error. +- Retry cleanly when the attestation is not ready yet. + + +If you let the client choose the destination domain or recipient unchecked, you can relay the wrong message or pay gas for an invalid request. + + +## Minimal relay flow + +The relayer needs three pieces of information: + +- the attested message payload +- the Base `MessageTransmitter` contract address +- ETH on Base to pay gas for the relay transaction + +```typescript cctp-relay.ts +const attestation = await getAttestation(messageHash); +if (attestation.status !== "complete") return; +await receiveMessageOnBase(messageBytes, attestation.attestation); +``` + +## Recommended integration points + +Use this pattern when your app already has a bridge completion flow and you want to remove destination-chain gas friction for new users. + + + +For adjacent bridge behavior, see [Bridging and Withdrawals](/base-chain/network-information/bridging-and-withdrawals) and [Base-Solana Bridge](/base-chain/network-information/base-solana-bridge). + +## Reference address + +Base `MessageTransmitter` contract: + +- `0x1682Ae6375C4E4A97e4B583BC394c861A46D8962` + +## Next step + +If you are building a production relay service, add: + +- per-message nonce tracking +- attestation polling backoff +- replay-safe handling for already-used messages +- chain-specific gas limits and error monitoring \ No newline at end of file From e406eb80448757e9610b8a61ee541401a8c516f7 Mon Sep 17 00:00:00 2001 From: pkdoddamani <34116639+pkdoddamani@users.noreply.github.com> Date: Wed, 1 Jul 2026 12:40:13 +0530 Subject: [PATCH 2/4] docs: add CCTP relay guide to navigation --- docs/docs.json | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs.json b/docs/docs.json index cd74bfe65..583fa6bb6 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -149,6 +149,7 @@ "group": "Bridges", "pages": [ "base-chain/network-information/base-solana-bridge", + "base-chain/network-information/cctp-gasless-relay", "base-chain/network-information/ecosystem-bridges" ] }, From ab5954f3ff5d78ee5f759986cf62cf5232a40597 Mon Sep 17 00:00:00 2001 From: pkdoddamani <34116639+pkdoddamani@users.noreply.github.com> Date: Wed, 1 Jul 2026 12:40:18 +0530 Subject: [PATCH 3/4] docs: link gasless relay guide from bridging --- .../base-chain/network-information/bridging-and-withdrawals.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/base-chain/network-information/bridging-and-withdrawals.mdx b/docs/base-chain/network-information/bridging-and-withdrawals.mdx index d7d9cedbf..caa398493 100644 --- a/docs/base-chain/network-information/bridging-and-withdrawals.mdx +++ b/docs/base-chain/network-information/bridging-and-withdrawals.mdx @@ -47,6 +47,8 @@ This can improve user experience, but it adds provider-specific assumptions and For available bridge providers and routes, see [Ecosystem Bridges](/base-chain/network-information/ecosystem-bridges). +If you are building a CCTP-style delivery flow where a relayer completes the destination-chain transaction on Base, see [Auto-complete USDC delivery after a CCTP bridge](/base-chain/network-information/cctp-gasless-relay). + ## Standard bridge contracts The standard bridges support cross-domain ETH and ERC-20 transfers. They are built on top of the cross-domain messenger contracts and provide a standard interface for deposits and withdrawals. From 1ab183fdac692f189338880a299485b06c0d719f Mon Sep 17 00:00:00 2001 From: pkdoddamani <34116639+pkdoddamani@users.noreply.github.com> Date: Wed, 1 Jul 2026 12:40:21 +0530 Subject: [PATCH 4/4] docs: cross-link gasless relay from Solana bridge --- docs/base-chain/network-information/base-solana-bridge.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/base-chain/network-information/base-solana-bridge.mdx b/docs/base-chain/network-information/base-solana-bridge.mdx index 92ae9dd3d..8125a0d90 100644 --- a/docs/base-chain/network-information/base-solana-bridge.mdx +++ b/docs/base-chain/network-information/base-solana-bridge.mdx @@ -16,6 +16,10 @@ Solana networks. This bridge allows you to: This guide covers the bridge architecture, the production addresses, and practical implementation patterns. + +If you are completing a CCTP-style delivery on Base and want a relayer to pay the destination gas, see [Auto-complete USDC delivery after a CCTP bridge](/base-chain/network-information/cctp-gasless-relay). + + ## How it works ### On Base