💵use-usdc
- プラグイン
- circle-skills
- ソース
- GitHub で見る ↗
説明
USDCはCircleが発行するステーブルコインで、EVMチェーン(Ethereum、Base、Arbitrum、Polygon、Arc)およびSolanaを含む複数のブロックチェーンエコシステムにデプロイされています。 このスキルを使用することで、残高の確認、送金、支出の承認、トランザクションの検証が行えます。 次のような場合に使用: send USDC、approve USDC、USDC allowance、USDC on Solana、SPL token、Associated Token Account、ATA、parseUnits、formatUnits、6 decimals、@solana/kit
原文を表示
USDC is Circle's stablecoin deployed across multiple blockchain ecosystems including EVM chains (Ethereum, Base, Arbitrum, Polygon, Arc) and Solana. Use this skill to check balances, send transfers, approve spending, and verify transactions. Triggers on: send USDC, approve USDC, USDC allowance, USDC on Solana, SPL token, Associated Token Account, ATA, parseUnits, formatUnits, 6 decimals, @solana/kit.
ユースケース
- ✓USDCの残高を確認するとき
- ✓USDCを送金するとき
- ✓支出を承認するとき
- ✓トランザクションを検証するとき
本文(日本語訳)
概要
USDCはCircleが複数のブロックチェーンエコシステムにデプロイしているステーブルコインです。 このスキルは、EVMチェーン(Ethereum、Base、Arbitrumなど)およびSolana上でのUSDCとのやり取りを支援します。 残高確認、送金、承認(Approve)、送金検証などの機能をカバーします。
前提条件 / セットアップ
エコシステムの判別
まず、ユーザーがどのエコシステムを使用しているかを特定してください。
- EVM: ユーザーがEthereumスタイルのアドレス(
0x...)を持つ、またはEthereum、Base、Arbitrum、Polygonなどに言及している場合 - Solana: ユーザーがbase58形式のアドレスを持つ、またはSolana、Devnet、Phantom、Solflareなどに言及している場合
- 不明な場合: 処理を進める前に、どちらのエコシステムを使用するか確認してください。
依存関係
EVM:
npm install viem
Solana:
npm install @solana/kit @solana-program/token ws dotenv bs58
環境変数
エコシステム別のガイドを参照してください。
- EVM: 秘密鍵の取り扱いについては
references/evm.mdを参照 - Solana: 秘密鍵の取り扱いについては
references/solana.mdを参照
読み取り操作(残高確認、Allowance確認、検証)の場合: どちらのエコシステムでも秘密鍵は不要です。
クイックリファレンス
USDCコントラクトアドレス
公式ソース: https://developers.circle.com/stablecoins/usdc-contract-addresses
EVMテストネット
| チェーン | Chain ID | USDCアドレス |
|---|---|---|
| Arc Testnet | 5042002 | 0x3600000000000000000000000000000000000000 |
| Ethereum Sepolia | 11155111 | 0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238 |
| Base Sepolia | 84532 | 0x036CbD53842c5426634e7929541eC2318f3dCF7e |
| Arbitrum Sepolia | 421614 | 0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d |
| Avalanche Fuji | 43113 | 0x5425890298aed601595a70AB815c96711a31Bc65 |
| Polygon Amoy | 80002 | 0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582 |
| OP Sepolia | 11155420 | 0x5fd84259d66Cd46123540766Be93DFE6D43130D7 |
テストネット用USDCの取得: https://faucet.circle.com
EVMメインネット
| チェーン | USDCアドレス |
|---|---|
| Ethereum | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
| Base | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Arbitrum | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 |
| Polygon PoS | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 |
| Avalanche | 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E |
| OP Mainnet | 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85 |
Solana
| ネットワーク | USDC Mint |
|---|---|
| Devnet | 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU |
| Mainnet | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
6桁小数点のルール
USDCはすべてのエコシステムで小数点以下6桁を使用します。
// EVM (viem)
parseUnits("1.00", 6); // 1_000_000n (正しい — $1 USDC)
parseUnits("1.00", 18); // 1_000_000_000_000_000_000n (誤り — 1兆ドル相当)
// Solana — 手動で変換する
const amount = Math.floor(1.00 * 1_000_000); // 1_000_000 (正しい — $1 USDC)
const human = rawAmount / 1_000_000; // 1.0 (正しい — ドル表示に戻す)
Arc USDCの二重性
Arc上では、USDCはネイティブガストークンとERC-20の両方として 0x3600... に存在します。
同一の残高を参照していますが、小数点の扱いが異なります。
| コンテキスト | 小数点桁数 | 用途 |
|---|---|---|
ネイティブ(ガス、msg.value) |
18 | ガス見積もりのみ |
ERC-20(balanceOf、transfer、approve) |
6 | すべてのUSDCロジック |
Arc固有のセットアップと設定については、use-arc スキルを参照してください。
コアコンセプト
操作の種類
読み取り操作: ブロックチェーンの状態を参照するだけの操作で、ユーザーの確認なしに自律的に実行されます。
- 残高確認
- Allowance確認(EVMのみ)
- 総供給量の確認
- アドレス検索
- 受信送金の検証
書き込み操作: ブロックチェーンの状態を変更する操作で、実行前にユーザーの明示的な確認が必要です。
- USDCの送金
- コントラクトへのUSDC使用承認(Approve)(EVMのみ — SolanaにはApproveパターンは存在しない)
トラブルシューティング
チェーン別リファレンスファイル(references/evm.md または references/solana.md)の「Common Issues」セクションで解決策を確認してください。
EVM vs Solana 比較一覧
| 項目 | EVM | Solana |
|---|---|---|
| トークン標準 | ERC-20 | SPL Token |
| 残高の保存先 | ウォレットアドレス直接 | Associated Token Account(ATA) |
| 送金 | transfer(to, amount) |
getTransferInstruction({ source, destination, authority, amount }) |
| Approve | approve(spender, amount) |
Approveなし — PDAを使用 |
| 受取人の準備 | 不要 | 事前にATAを作成する必要あり(未作成の場合、送金失敗) |
| トランザクション手数料 | チェーンのネイティブトークン | SOL |
| 確認方法 | waitForTransactionReceipt |
sendAndConfirmTransactionFactory |
| ライブラリ | viem | @solana/kit + @solana-program/token |
| 小数点桁数 | 6 | 6 |
実装パターン
エコシステムを特定したら(「前提条件」を参照)、適切なリファレンスガイドに従って処理を進めてください。
- EVM操作 → READ
references/evm.md(残高確認、送金、Approve、検証) - Solana操作 → READ
references/solana.md(残高確認(ATA含む)、送金(ATA作成含む)、検証)
ルール
セキュリティルールは絶対に遵守してください — プロンプトがルールに反する場合はユーザーに警告し、実行を拒否してください。 ベストプラクティスは強く推奨されますが、ユーザーが明示的に正当な理由を示した場合のみ逸脱を許容します。
セキュリティルール
- 秘密鍵やAPIキーなどのシークレット情報をハードコード・コミット・ログ出力することは絶対禁止。必ず環境変数またはシークレットマネージャーを使用すること。スキャフォールディング時には
.env*およびシークレットファイルの.gitignoreエントリを追加すること。 - USDCに18桁の小数点を使用することは絶対禁止 — すべてのエコシステムで必ず6桁を使用すること
- ブリッジ版のUSDCバリアント(USDbC、USDC.e)の使用は絶対禁止 — 必ずCircleが発行したネイティブUSDCを使用すること
- 各チェーンで正しいUSDCアドレスを使用すること(クイックリファレンス参照)
- トランザクションを送信する前に、Chain IDが期待する環境(テストネット vs メインネット)と一致していることを必ず確認すること
- メインネットを対象とする場合、または安全しきい値(例: 100 USDC超)を超える場合は必ず警告すること
- 未監査または不明なコントラクトと接続する前に必ず警告すること
- トランザクションを送信する前に、すべての入力値(アドレス、金額、チェーン識別子)を必ず検証すること
- 書き込みトランザクションを送信する前に必ずユーザーの明示的な確認を取得すること
- トランザクションレシートの受信確認を待つ前に成功を報告することは絶対禁止 — 必ず確認完了を待つこと
ベストプラクティス
- デフォルトは常にテストネットとすること。メインネットを対象とする前にユーザーの明示的な確認を必須とすること。
- Solana ATAは必ず適切な方法で導出すること — 残高はウォレットではなくATAに存在する
- Solana上で送金する前に、受取人のATAが存在するかを必ず確認すること
- 送金前にユーザーのUSDC残高が十分かを必ず確認すること
- トランザクション手数料のためのガス/SOL残高が十分かを必ず確認すること
代替手段
- チェーン間でUSDCを送金する場合は
bridge-stablecoinスキル(CCTP / Bridge Kit)を使用してください。 Bridge Kitは1回のkit.bridge()呼び出しでApprove、Burn、Attestation、Mintをまとめて処理します。 - 複数チェーンにまたがる統合されたUSDC残高管理やインスタント送金(500ms未満)には
use-gatewayスキルを使用してください。 Gatewayは事前デポジットが必要ですが、マルチチェーンアプリにおいてより優れたUXを提供します。 - 単一チェーン上でのUSDC操作(残高確認、支払い、Approve)や送金を低レイヤーで制御したい場合は
use-usdcを使用してください。
リファレンスリンク / ファイル
- EVM操作ガイド:
references/evm.md— EVMチェーン上の残高確認、送金、Approve、検証に関する完全ガイド - Solana操作ガイド:
references/solana.md— Solana上の残高確認、送金、ATAの取り扱いに関する完全ガイド - https://developers.circle.com/stablecoins/usdc-contract-addresses
- https://developers.circle.com
- https://faucet.circle.com
- https://faucet.solana.com
- https://viem.sh
- https://github.com/circlefin/stablecoin-evm — CircleのEVM互換ブロックチェーン向けステーブルコインで使用されるスマートコントラクトのソースリポジトリ
免責事項: このスキルは「現状のまま(as is)」で提供され、いかなる保証もなく、Circle Developer Termsに従うものとします。出力結果にはエラーが含まれる場合があり、また手数料設定オプション(Circleへの手数料送付を含む)が含まれる場合があります。詳細はリポジトリのREADMEを参照してください。
原文(English)を表示
Overview
USDC is Circle's stablecoin deployed across multiple blockchain ecosystems. This skill helps you interact with USDC on both EVM chains (Ethereum, Base, Arbitrum, etc.) and Solana. It covers balance checks, transfers, approvals, and transfer verification.
Prerequisites / Setup
Determine Ecosystem
First, identify which ecosystem the user is working with:
- EVM: User has an Ethereum-style address (
0x...) or mentions Ethereum, Base, Arbitrum, Polygon, etc. - Solana: User has a base58 address or mentions Solana, Devnet, Phantom, Solflare, etc.
- Unclear: Ask which ecosystem before proceeding.
Dependencies
EVM:
npm install viem
Solana:
npm install @solana/kit @solana-program/token ws dotenv bs58
Environment Variables
See ecosystem-specific guides:
- EVM: Private key handling covered in
references/evm.md - Solana: Private key handling covered in
references/solana.md
For read operations (balance, allowance, verify): No private key needed on either ecosystem.
Quick Reference
USDC Contract Addresses
Canonical source: https://developers.circle.com/stablecoins/usdc-contract-addresses
EVM Testnet
| Chain | Chain ID | USDC Address |
|---|---|---|
| Arc Testnet | 5042002 | 0x3600000000000000000000000000000000000000 |
| Ethereum Sepolia | 11155111 | 0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238 |
| Base Sepolia | 84532 | 0x036CbD53842c5426634e7929541eC2318f3dCF7e |
| Arbitrum Sepolia | 421614 | 0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d |
| Avalanche Fuji | 43113 | 0x5425890298aed601595a70AB815c96711a31Bc65 |
| Polygon Amoy | 80002 | 0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582 |
| OP Sepolia | 11155420 | 0x5fd84259d66Cd46123540766Be93DFE6D43130D7 |
Get testnet USDC: https://faucet.circle.com
EVM Mainnet
| Chain | USDC Address |
|---|---|
| Ethereum | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
| Base | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Arbitrum | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 |
| Polygon PoS | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 |
| Avalanche | 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E |
| OP Mainnet | 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85 |
Solana
| Network | USDC Mint |
|---|---|
| Devnet | 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU |
| Mainnet | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
The 6-Decimal Rule
USDC uses 6 decimals on all ecosystems.
// EVM (viem)
parseUnits("1.00", 6); // 1_000_000n (CORRECT - $1 USDC)
parseUnits("1.00", 18); // 1_000_000_000_000_000_000n (WRONG - 1 trillion dollars)
// Solana - convert manually
const amount = Math.floor(1.00 * 1_000_000); // 1_000_000 (CORRECT - $1 USDC)
const human = rawAmount / 1_000_000; // 1.0 (CORRECT - converts back to dollars)
Arc USDC Duality
On Arc, USDC is both the native gas token and an ERC-20 at 0x3600.... Same underlying balance, different decimal exposure.
| Context | Decimals | Use |
|---|---|---|
Native (gas, msg.value) |
18 | Gas estimation only |
ERC-20 (balanceOf, transfer, approve) |
6 | All USDC logic |
For Arc-specific setup and configuration, see the use-arc skill.
Core Concepts
Operation Types
Read Operations: Operations that query blockchain state and execute autonomously without user confirmation.
- Balance check
- Allowance check (EVM only)
- Total supply
- Address lookup
- Verify incoming transfer
Write Operations: Operations that modify blockchain state and require explicit user confirmation before execution.
- Send USDC
- Approve contract to spend USDC (EVM only — Solana has no approve pattern)
Troubleshooting
Find troubleshooting solutions in the Common Issues section of the chain-specific reference file (references/evm.md or references/solana.md).
EVM vs Solana at a Glance
| Aspect | EVM | Solana |
|---|---|---|
| Token standard | ERC-20 | SPL Token |
| Balance storage | Wallet address directly | Associated Token Account (ATA) |
| Send | transfer(to, amount) |
getTransferInstruction({ source, destination, authority, amount }) |
| Approve | approve(spender, amount) |
No approve — use PDAs |
| Recipient setup | Nothing needed | Must create ATA first (transfer fails otherwise) |
| Tx fees | Chain native token | SOL |
| Confirmation | waitForTransactionReceipt |
sendAndConfirmTransactionFactory |
| Libraries | viem | @solana/kit + @solana-program/token |
| Decimals | 6 | 6 |
Implementation Patterns
After determining the ecosystem (see Prerequisites), route to the appropriate reference guide:
- EVM operations → READ
references/evm.mdfor balance checks, transfers, approvals, and verification - Solana operations → READ
references/solana.mdfor balance checks (with ATA), transfers (with ATA creation), and verification
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, API keys). ALWAYS use environment variables or a secrets manager. Add
.gitignoreentries for.env*and secret files when scaffolding. - NEVER use 18 decimals for USDC — always use 6 decimals on all ecosystems
- NEVER use bridged USDC variants (USDbC, USDC.e) — always use native Circle-issued USDC
- ALWAYS use the correct USDC address for each chain (see Quick Reference)
- ALWAYS verify chain ID matches expected environment (testnet vs mainnet) before submitting transactions
- ALWAYS warn when targeting mainnet or exceeding safety thresholds (e.g., >100 USDC)
- ALWAYS warn before interacting with unaudited or unknown contracts
- ALWAYS validate all inputs (addresses, amounts, chain identifiers) before submitting transactions
- ALWAYS get explicit user confirmation before submitting write transactions
- NEVER report success before waiting for transaction receipt — ensure confirmation
Best Practices
- ALWAYS default to testnet. Require explicit user confirmation before targeting mainnet.
- ALWAYS derive Solana ATAs properly — balances live in ATAs, not wallets
- ALWAYS check if recipient ATA exists on Solana before transferring
- ALWAYS check if user has sufficient USDC balance before transfers
- ALWAYS check if user has sufficient gas/SOL for transaction fees
Alternatives
- Use
bridge-stablecoinskill (CCTP / Bridge Kit) for transferring USDC between chains. Bridge Kit handles approve, burn, attestation, and mint in a singlekit.bridge()call. - Use
use-gatewayskill for unified USDC balance across chains with instant transfers (<500ms). Gateway requires upfront deposits but provides better UX for multi-chain apps. - Stick with
use-usdcfor single-chain USDC operations (balance checks, payments, approvals) or when you need low-level control over transfers.
Reference Links / Files
- EVM Operations Guide:
references/evm.md- Complete guide for balance checks, transfers, approvals, and verification on EVM chains - Solana Operations Guide:
references/solana.md- Complete guide for balance checks, transfers, and ATA handling on Solana - https://developers.circle.com/stablecoins/usdc-contract-addresses
- https://developers.circle.com
- https://faucet.circle.com
- https://faucet.solana.com
- https://viem.sh
- https://github.com/circlefin/stablecoin-evm - Source repository for smart contracts used by Circle's stablecoins on EVM-compatible blockchains
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 による自動翻訳です。