🌉use-gateway
- プラグイン
- circle-skills
- ソース
- GitHub で見る ↗
説明
Circle Gatewayを統合することで、複数のブロックチェーンにわたって統一されたUSDC残高を保持し、パーミッションレスなデポジット・バーン・ミントのワークフローを通じてUSDCを即時(500ms未満)に送金できます。 対応ネットワークは、11のEVMチェーンとSolana(メインネットおよびテストネット)、さらにArcテストネットです。 次のような場合に使用: - チェーンを意識させないユーザー体験を実現したい場合 - 低レイテンシーまたは即時の次ブロック確定性が求められる場合 - より高い資本効率を実現するためにチェーンをまたいで資金をプールする必要がある場合 - 統合されたクロスチェーン残高を持つアプリを構築する場合 トリガーキーワード: Gateway、Gateway Wallet、Gateway Minter、gatewayMint、burn intent、unified balance、instant crosschain transfer
原文を表示
Integrate Circle Gateway to hold a unified USDC balance across multiple blockchains and transfer USDC instantly (<500ms) via permissionless deposit, burn, and mint workflows. Available on 11 EVM chains + Solana (mainnet and testnet), plus Arc testnet. Use when: enabling chain-agnostic user experiences, low-latency or instant next-block finality is required, capital needs to be pooled across chains for greater capital efficiency, or building apps with consolidated crosschain balances. Triggers on: Gateway, Gateway Wallet, Gateway Minter, gatewayMint, burn intent, unified balance, instant crosschain transfer.
ユースケース
- ✓チェーン間で統一されたUSDC残高を保持したい
- ✓低レイテンシーでUSDCを即時送金する
- ✓複数チェーン間で資金をプールして効率化する
- ✓チェーンを意識させないUX を実現する
本文(日本語訳)
概要
Circle Gatewayは、複数のブロックチェーンにわたるUSDCの統合残高管理と、500ミリ秒未満の即時クロスチェーン送金を提供します。ユーザーはサポートされている任意のチェーン上のGateway Walletにおいて、送金元チェーンのファイナリティを待つことなく、送金元チェーンでバーン、送金先チェーンでミントを行うことができます。
前提条件 / セットアップ
GatewayはコントラクトレベルのIntegrationであり、インストールするSDKはありません。オンチェーンのGateway WalletコントラクトおよびGateway Minterコントラクトと直接やり取りし、アテステーション取得にはGateway REST APIを使用します。
チェーン設定
デフォルトでは個別の設定ファイルを読み込まないでください。Gatewayに関するほとんどの作業は、ユーザーのウォレットモデルおよび送信元/送信先ネットワークに対応するシナリオリファレンスを直接参照してください。
まずシナリオリファレンスを参照し、以下の項目を確認する必要がある場合のみ追加検証を行ってください:
- Gateway REST ベースURL
- testnet:
https://gateway-api-testnet.circle.com/v1/ - mainnet:
https://gateway-api.circle.com/v1/
- testnet:
- チェーン別USDCアドレス:
https://developers.circle.com/stablecoins/usdc-contract-addresses.md - Circle Walletのブロックチェーン識別子:
https://developers.circle.com/wallets/supported-blockchains.md
検証用の正規ソースドキュメント:
- Gatewayハウツー:
https://developers.circle.com/gateway/howtos/create-unified-usdc-balance.mdhttps://developers.circle.com/gateway/howtos/manage-delegates.mdhttps://developers.circle.com/gateway/howtos/transfer-unified-usdc-balance.md
- Gatewayクイックスタート:
https://developers.circle.com/gateway/quickstarts/unified-balance-evm.mdhttps://developers.circle.com/gateway/quickstarts/unified-balance-solana.md
- Arcチュートリアル:
https://docs.arc.network/arc/tutorials/access-usdc-crosschain.md
クイックリファレンス
主要アドレス
EVM Mainnet(全チェーン共通)
- Gateway Wallet:
0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE - Gateway Minter:
0x2222222d7164433c4C09B0b0D809a9b52C04C205
EVM Testnet(全チェーン共通)
- Gateway Wallet:
0x0077777d7EBA4688BDeF3E311b846F25870A19B9 - Gateway Minter:
0x0022222ABE238Cc2C7Bb1f21003F0a260052475B
Solana Mainnet
- Gateway Wallet:
GATEwy4YxeiEbRJLwB6dXgg7q61e6zBPrMzYj5h1pRXQ - Gateway Minter:
GATEm5SoBJiSw1v2Pz1iPBgUYkXzCUJ27XSXhDfSyzVZ
Solana Devnet
- Gateway Wallet:
GATEwdfmYNELfp5wDmmR6noSr2vHnAfBPMm2PvCzX5vu - Gateway Minter:
GATEmKK2ECL1brEngQZWCgMWPbvrEYqsV6u29dAaHavr - USDC Mint:
4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
ドメインID(Mainnet)
| チェーン | ドメイン |
|---|---|
| Ethereum | 0 |
| Avalanche | 1 |
| OP | 2 |
| Arbitrum | 3 |
| Solana | 5 |
| Base | 6 |
| Polygon PoS | 7 |
| Unichain | 10 |
| Sonic | 13 |
| World Chain | 14 |
| Sei | 16 |
| HyperEVM | 19 |
ドメインID(Testnet)
| チェーン | ドメイン |
|---|---|
| Ethereum Sepolia | 0 |
| Avalanche Fuji | 1 |
| OP Sepolia | 2 |
| Arbitrum Sepolia | 3 |
| Solana Devnet | 5 |
| Base Sepolia | 6 |
| Polygon Amoy | 7 |
| Unichain Sepolia | 10 |
| Sonic Testnet | 13 |
| World Chain Sepolia | 14 |
| Sei Atlantic | 16 |
| HyperEVM Testnet | 19 |
| Arc Testnet | 26 |
コアコンセプト
統合残高(Unified Balance)
Gatewayは、サポートされている全チェーンへのUSDCデポジットを単一の統合残高として集約します。
これは会計上の抽象化であり、実際のUSDCトークンは依然として特定のブロックチェーン上に存在します。
残高が統合されているように見えても、すべての送金ではsourceDomain(バーンを行うチェーン)とdestinationDomain(ミントを行うチェーン)を指定する必要があります。
マルチ通貨の銀行口座をイメージしてください。合計残高は1つに見えますが、引き出しは特定の保有資産から行われます。統合残高内の任意のチェーンからバーンし、サポートされている任意のチェーンにミントすることができます。
例: Ethereum Sepoliaに10 USDC、Base Sepoliaに5 USDC、Solana Devnetに5 USDCをデポジットした場合、統合残高は20 USDCになります。Arc Testnetに10 USDCを送金する場合、十分な残高を持つ任意の送金元チェーンの組み合わせからバーンすることができます。
送金フロー
- デポジット -- ユーザーが任意のチェーン上のGateway WalletにUSDCをデポジットする(統合残高に追加)
- バーンインテントの作成 -- 送金元ドメイン、送金先ドメイン、受取人、金額を指定する
- 署名 -- EVMの送金元はEIP-712、Solanaの送金元はEd25519を使用
- Gateway APIへのサブミット -- バーンインテントをPOSTし、アテステーションを受け取る
- 送金先でのミント -- 送金先チェーン上でアテステーションを使用して
gatewayMintを呼び出す
実装パターン
該当するシナリオのリファレンスファイルを必ず読んでください。
- セルフマネージドEVMのリファレンスは、Node/TypeScriptスクリプトで
viemを使用します。 - セルフマネージドEVMブラウザウォレットのリファレンスは、純粋なTypeScriptとインジェクトされたEIP-1193プロバイダーを使用します。
- Circle Walletsのリファレンスは、
@circle-fin/developer-controlled-walletsを使用します。 - Solanaのリファレンスは、Anchorと関連するSolanaツールを使用します。
デポジット
references/deposit-evm.md-- セルフマネージドEVMデポジット(approve + deposit)references/deposit-evm-browser-wallet.md-- 純粋なTypeScriptによるブラウザウォレットからのセルフマネージドEVMデポジットreferences/deposit-evm-circle-wallet.md-- Circle WalletsのEVMデポジット(デベロッパー管理、サーバーサイド)references/deposit-solana.md-- セルフマネージドSolanaデポジットreferences/deposit-solana-circle-wallet.md-- Circle WalletのSolanaデポジット
EVMからの送金
references/evm-to-evm.md-- セルフマネージドEVMからEVMへの送金references/evm-to-evm-browser-wallet.md-- 純粋なTypeScriptによるブラウザウォレットからのセルフマネージドEVMからEVMへの送金references/transfer-evm-circle-wallet.md-- Circle WalletsのEVMからEVMへの送金references/transfer-evm-delegate.md-- EOAデレゲートを使用してバーンインテントに署名するEVM上のSCAデポジターreferences/evm-to-solana.md-- セルフマネージドEVMからSolanaへの送金references/evm-to-solana-circle-wallet.md-- Circle WalletsのEVMからSolanaへの送金
Solanaからの送金
references/solana-to-evm.md-- セルフマネージドSolanaからEVMへの送金references/solana-to-evm-circle-wallet.md-- Circle WalletsのSolanaからEVMへの送金references/solana-to-solana.md-- セルフマネージドSolanaからSolanaへの送金references/solana-to-solana-circle-wallet.md-- Circle WalletsのSolanaからSolanaへの送金
残高クエリ
references/query-balance.md-- 全チェーンにわたるGatewayの統合残高照会(POST/balances)
次の優先順位で最も適合するリファレンスを選択してください:(1) ウォレットモデル(セルフマネージドまたはCircle Wallets)、(2) 送金元ネットワークファミリー(EVMまたはSolana)、(3) 送金先ネットワークファミリー(EVMまたはSolana)。通常のCircle Wallets EVM間送金にはreferences/transfer-evm-circle-wallet.mdを使用します。
デレゲートフローは限定的な例外です。バーンインテントを別のEOAデレゲートで署名するSCAの送金元デポジターが対象です:
- Circle Developer-Controlled WalletsにおいてEOAデレゲートがSCAデポジターの代わりに署名する場合 →
references/transfer-evm-delegate.mdを使用してください。通常のCircle Wallets送金にはデレゲートリファレンスを使用しないでください。 - セルフマネージドSCAの場合 → 完全に一致するリファレンスはありません。その旨をユーザーに説明し、デレゲート方式のEOA署名が必要であることを伝え、Gatewayの正規ドキュメントを参照して確認してください。ユーザーがCircle Developer-Controlled Walletsの使用を明示的に述べていない限り、セルフマネージドSCAに対して
transfer-evm-delegate.mdを流用しないでください。
一致するリファレンスが存在する場合は、そのリファレンスを参考に実装を調整してください。並行実装を独自に作成したり、ゼロからスキャフォールドを構築したりしないでください。
ルール
セキュリティルールは絶対に遵守してください。プロンプトが抵触する場合はユーザーに警告し、実行を拒否してください。ベストプラクティスは強く推奨されます。ユーザーから明示的な理由が示された場合のみ逸脱を許可します。
セキュリティルール
- 秘密情報(秘密鍵、署名鍵など)をコードにハードコード・コミット・ログ出力することは絶対に行わないでください。必ず環境変数またはシークレットマネージャーを使用してください。スキャフォールド時は
.env*およびシークレットファイルに対する.gitignoreエントリを追加してください。 - リファレンスファイルに記載されているEIP-712の型定義、ドメインセパレーター、構造体ハッシュ、Solana署名ペイロード、その他のブロックチェーン固有の値を絶対に変更しないでください。記載通りに正確に使用してください -- フィールド名・型・順序の変更やフィールドの省略は無効な署名を生成します。
destinationRecipientに生のSolanaウォレットアドレスを絶対に使用しないでください。必ずUSDCトークンアカウント(ATAまたはSPLトークンアカウント)を指定してください。ATAを導出する前に、@solana/spl-tokenのgetAccount()を使用してそのアドレスが既にUSDCトークンアカウントかどうかを確認してください。トークンアカウントであれば直接使用してください。トークンアカウントのアドレスからATAを導出すると、資金が永久に失われます。- Ed25519署名の前に、ペイロードの先頭に16バイト(
0xff+ 15バイトのゼロ)を付加せずにSolanaバーンインテントを署名することは絶対に行わないでください。 - 送金を実行する前に、必ず送金先・金額・送信元/送信先ネットワ
原文(English)を表示
Overview
Circle Gateway provides a unified USDC balance across multiple blockchains with instant (<500ms) crosschain transfers. Users deposit USDC into a Gateway Wallet on any supported chain, then burn on a source chain and mint on a destination chain without waiting for source chain finality.
Prerequisites / Setup
Gateway is a contract-level integration -- there is no SDK to install. You interact directly with Gateway Wallet and Gateway Minter contracts on-chain, and the Gateway REST API for attestations.
Chain Configuration
Do not load a separate config file by default. Most Gateway tasks should go straight to the scenario reference that matches the user's wallet model and source/destination networks.
Use the scenario reference first and only do additional verification when you need to confirm:
- Gateway REST base URL
- testnet:
https://gateway-api-testnet.circle.com/v1/ - mainnet:
https://gateway-api.circle.com/v1/
- testnet:
- chain-specific USDC addresses:
https://developers.circle.com/stablecoins/usdc-contract-addresses.md - Circle Wallet blockchain identifiers:
https://developers.circle.com/wallets/supported-blockchains.md
Canonical source docs for verification:
- Gateway how-tos:
https://developers.circle.com/gateway/howtos/create-unified-usdc-balance.mdhttps://developers.circle.com/gateway/howtos/manage-delegates.mdhttps://developers.circle.com/gateway/howtos/transfer-unified-usdc-balance.md
- Gateway quickstarts:
https://developers.circle.com/gateway/quickstarts/unified-balance-evm.mdhttps://developers.circle.com/gateway/quickstarts/unified-balance-solana.md
- Arc tutorial:
https://docs.arc.network/arc/tutorials/access-usdc-crosschain.md
Quick Reference
Key Addresses
EVM Mainnet (All Chains)
- Gateway Wallet:
0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE - Gateway Minter:
0x2222222d7164433c4C09B0b0D809a9b52C04C205
EVM Testnet (All Chains)
- Gateway Wallet:
0x0077777d7EBA4688BDeF3E311b846F25870A19B9 - Gateway Minter:
0x0022222ABE238Cc2C7Bb1f21003F0a260052475B
Solana Mainnet
- Gateway Wallet:
GATEwy4YxeiEbRJLwB6dXgg7q61e6zBPrMzYj5h1pRXQ - Gateway Minter:
GATEm5SoBJiSw1v2Pz1iPBgUYkXzCUJ27XSXhDfSyzVZ
Solana Devnet
- Gateway Wallet:
GATEwdfmYNELfp5wDmmR6noSr2vHnAfBPMm2PvCzX5vu - Gateway Minter:
GATEmKK2ECL1brEngQZWCgMWPbvrEYqsV6u29dAaHavr - USDC Mint:
4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
Domain IDs (Mainnet)
| Chain | Domain |
|---|---|
| Ethereum | 0 |
| Avalanche | 1 |
| OP | 2 |
| Arbitrum | 3 |
| Solana | 5 |
| Base | 6 |
| Polygon PoS | 7 |
| Unichain | 10 |
| Sonic | 13 |
| World Chain | 14 |
| Sei | 16 |
| HyperEVM | 19 |
Domain IDs (Testnet)
| Chain | Domain |
|---|---|
| Ethereum Sepolia | 0 |
| Avalanche Fuji | 1 |
| OP Sepolia | 2 |
| Arbitrum Sepolia | 3 |
| Solana Devnet | 5 |
| Base Sepolia | 6 |
| Polygon Amoy | 7 |
| Unichain Sepolia | 10 |
| Sonic Testnet | 13 |
| World Chain Sepolia | 14 |
| Sei Atlantic | 16 |
| HyperEVM Testnet | 19 |
| Arc Testnet | 26 |
Core Concepts
Unified Balance
Gateway aggregates your USDC deposits across all supported chains into a single unified balance. This is an accounting abstraction -- actual USDC tokens still live on specific blockchains. Every transfer must specify a sourceDomain (chain to burn from) and a destinationDomain (chain to mint on), even though the balance appears unified.
Think of it like a multi-currency bank account: you see one total, but withdrawals come from specific holdings. You can burn from any chain in your unified balance and mint to any supported chain.
Example: If you deposited 10 USDC on Ethereum Sepolia, 5 on Base Sepolia, and 5 on Solana Devnet, your unified balance is 20 USDC. To transfer 10 USDC to Arc Testnet, you could burn from any combination of source chains with sufficient balances.
Transfer Flow
- Deposit -- User deposits USDC to Gateway Wallet on any chain (adds to unified balance)
- Create burn intent -- Specify source domain, destination domain, recipient, and amount
- Sign -- EIP-712 for EVM sources, Ed25519 for Solana sources
- Submit to Gateway API -- POST burn intent, receive attestation
- Mint on destination -- Call
gatewayMintwith attestation on the destination chain
Implementation Patterns
READ the reference files for the scenario(s) that apply.
- Self-managed EVM refs use
viemin Node/TypeScript scripts. - Self-managed EVM browser-wallet refs use pure TypeScript plus an injected EIP-1193 provider.
- Circle Wallets refs use
@circle-fin/developer-controlled-wallets. - Solana refs use Anchor plus the relevant Solana tooling.
Deposits
references/deposit-evm.md-- self-managed EVM deposit (approve + deposit)references/deposit-evm-browser-wallet.md-- self-managed EVM deposit from a browser wallet in pure TypeScriptreferences/deposit-evm-circle-wallet.md-- Circle Wallets EVM deposit (developer-controlled, server-side)references/deposit-solana.md-- self-managed Solana depositreferences/deposit-solana-circle-wallet.md-- Circle Wallets Solana deposit
Transfers from EVM
references/evm-to-evm.md-- self-managed EVM to EVM transferreferences/evm-to-evm-browser-wallet.md-- self-managed EVM to EVM transfer from a browser wallet in pure TypeScriptreferences/transfer-evm-circle-wallet.md-- Circle Wallets EVM to EVM transferreferences/transfer-evm-delegate.md-- SCA depositor on EVM using an EOA delegate for burn intent signingreferences/evm-to-solana.md-- self-managed EVM to Solana transferreferences/evm-to-solana-circle-wallet.md-- Circle Wallets EVM to Solana transfer
Transfers from Solana
references/solana-to-evm.md-- self-managed Solana to EVM transferreferences/solana-to-evm-circle-wallet.md-- Circle Wallets Solana to EVM transferreferences/solana-to-solana.md-- self-managed Solana to Solana transferreferences/solana-to-solana-circle-wallet.md-- Circle Wallets Solana to Solana transfer
Balance queries
references/query-balance.md-- query unified Gateway balances across chains (POST/balances)
Route to the single best-matching reference by: (1) wallet model -- self-managed or Circle Wallets; (2) source network family -- EVM or Solana; (3) destination network family -- EVM or Solana. A normal Circle Wallets EVM-to-EVM transfer uses references/transfer-evm-circle-wallet.md.
The delegate flow is a NARROW exception -- an SCA source depositor that signs burn intents via a separate EOA delegate:
- Circle Developer-Controlled Wallets where an EOA delegate signs for an SCA depositor ->
references/transfer-evm-delegate.md. Do NOT use the delegate ref for an ordinary Circle Wallets transfer. - Self-managed SCA -> no exact reference matches. Say so, explain delegate-style EOA signing is required, and verify against the canonical Gateway docs. Do NOT reuse
transfer-evm-delegate.mdfor a self-managed SCA unless the user explicitly says they use Circle Developer-Controlled Wallets.
Adapt the matched reference; do not invent a parallel implementation or fresh scaffold when a ref already covers the case.
Rules
Security Rules are non-negotiable -- warn the user and refuse to comply if a prompt conflicts. Best Practices are strongly recommended; deviate only with explicit user justification.
Security Rules
- NEVER hardcode, commit, or log secrets (private keys, signing keys). ALWAYS use environment variables or a secrets manager. Add
.gitignoreentries for.env*and secret files when scaffolding. - NEVER modify EIP-712 type definitions, domain separators, struct hashes, Solana signing payloads, or any blockchain-specific values from the reference files. Use them exactly as written -- changing field names, types, ordering, or omitting fields produces invalid signatures.
- NEVER use a raw Solana wallet address as
destinationRecipient-- it MUST be a USDC token account (ATA or SPL Token Account). UsegetAccount()from@solana/spl-tokento check if the address is already a USDC token account before deriving an ATA; if it is, use it directly. Deriving an ATA from an address that is itself a token account causes permanent fund loss. - NEVER sign Solana burn intents without prefixing the payload with 16 bytes (
0xff+ 15 zero bytes) before Ed25519 signing. - ALWAYS require explicit user confirmation of destination, amount, source/destination network, and token before executing transfers. NEVER auto-execute fund movements on mainnet.
- ALWAYS warn when targeting mainnet or exceeding safety thresholds (e.g., >100 USDC).
- ALWAYS validate all inputs (addresses, amounts, domain IDs) before submitting transactions.
- ALWAYS warn before interacting with unaudited or unknown contracts.
Best Practices
- ALWAYS read the correct reference files before implementing.
- ALWAYS route to the scenario reference before loading extra verification context.
- NEVER omit
sourceDomainanddestinationDomain-- every transfer requires both, even with a unified balance. - NEVER use 18 decimals for USDC. ALWAYS use 6 decimals (
parseUnits(amount, 6)). - In React apps that already use wagmi, prefer the existing wagmi/provider pattern instead of introducing a parallel wallet connection stack.
- For framework-agnostic browser-wallet flows, use the pure TypeScript EIP-1193 pattern in the browser-wallet refs.
- ALWAYS default to testnet. Require explicit user confirmation before targeting mainnet.
Alternatives
- Trigger
bridge-stablecoinskill (CCTP / Bridge Kit) for simple point-to-point transfers without a unified balance. Bridge Kit handles approve, burn, attestation, and mint in a singlekit.bridge()call and supports more chains than Gateway. - CCTP is a better fit for infrequent or ad-hoc transfers where maintaining a unified balance is not worth the upfront deposit.
- Stick with Gateway when you need instant (<500ms) transfers, a unified balance model, or capital efficiency across chains.
WARNING: Solana wallet compatibility is limited for Gateway. Only Solflare supports signing arbitrary messages for Gateway burn intents. Phantom and most other Solana wallets will reject the signing request.
Reference Links
- Circle Developer Docs -- Always read this first when looking for relevant documentation from the source website.
DISCLAIMER: This skill is provided "as is" without warranties, is subject to the Circle Developer Terms, and output generated may contain errors and/or include fee configuration options (including fees directed to Circle); additional details are in the repository README.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。