use-usdc について
use-usdcは、EVMチェーンまたはSolana上でUSDCを扱う開発者向けのスキルです。残高確認、送金、検証を案内し、ネイティブUSDC、6桁の小数、書き込み操作前の明示的な確認を重視します。
主な機能
- 01EVMまたはSolanaの判別
- 02残高・許容量・総供給量の確認
- 03USDC送金とEVMでの承認
- 04入金検証とトランザクション確認待ち
- 05チェーン別コードリファレンス
- 06書き込み操作前の確認必須
活用シーン
- 01対応チェーンでのUSDC残高確認
- 02指定アドレスへのUSDC送金
- 03許容量や入金トランザクションの検証
- 04テストネットでの送金フロー確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ circlefin/ skills --skill use-usdcインストール後、Claude Code で/use-usdcを入力して読み込まれたか確認します。
同梱ファイルreferences/evm.mdreferences/solana.md
詳細
概要
USDC は、複数のブロックチェーンエコシステム上で展開されている Circle のステーブルコインです。このスキルでは、EVM チェーン(Ethereum、Base、Arbitrum など)と Solana の両方で USDC を操作できます。残高確認、送金、承認、送金の検証を行えます。
前提条件/セットアップ
エコシステムの特定
まず、ユーザーが使用しているエコシステムを特定します。
- 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で説明しています。
読み取り操作(残高、承認額、検証)の場合: どちらのエコシステムでも秘密鍵は不要です。
クイックリファレンス
USDC コントラクトアドレス
公式情報源:https://developers.circle.com/stablecoins/usdc-contract-addresses
EVM テストネット
| チェーン | チェーン 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 アドレス |
|---|---|
| Arc | 0x3600000000000000000000000000000000000000 |
| Ethereum | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
| Base | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Arbitrum | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 |
| Polygon PoS | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 |
| Avalanche | 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E |
| OP Mainnet | 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85 |
Solana
| ネットワーク | USDC ミント |
|---|---|
| Devnet | 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU |
| Mainnet | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
6 桁小数のルール
USDC はすべてのエコシステムで小数点以下 6 桁を使用します。
// 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 の二面性
Arc では、USDC はネイティブのガストークンであると同時に、0x3600... にある ERC-20 でもあります。基礎となる残高は同じですが、小数桁の扱いが異なります。
| コンテキスト | 小数桁 | 用途 |
|---|---|---|
ネイティブ(gas、msg.value) | 18 | ガスの見積もりのみ |
ERC-20(balanceOf、transfer、approve) | 6 | すべての USDC ロジック |
Arc 固有のセットアップと設定については、use-arc スキルを参照してください。
基本概念
操作の種類
読み取り操作: ブロックチェーンの状態を照会し、ユーザーの確認なしに自動実行する操作です。
- 残高確認
- 承認額の確認(EVM のみ)
- 総供給量
- アドレスの照会
- 着信送金の検証
書き込み操作: ブロックチェーンの状態を変更するため、実行前にユーザーの明示的な確認が必要な操作です。
- USDC の送金
- USDC を使用できるようコントラクトを承認する(EVM のみ。Solana には承認の仕組みがありません)
トラブルシューティング
トラブルシューティングの解決策は、チェーン固有のリファレンスファイル(references/evm.md または references/solana.md)の「一般的な問題」セクションを参照してください。
EVM と Solana の概要
| 項目 | EVM | Solana |
|---|---|---|
| トークン標準 | ERC-20 | SPL Token |
| 残高の保存先 | ウォレットアドレスに直接 | 関連トークンアカウント(ATA) |
| 送金 | transfer(to, amount) | getTransferInstruction({ source, destination, authority, amount }) |
| 承認 | approve(spender, amount) | 承認なし — PDA を使用 |
| 受取人の準備 | 不要 | 先に ATA を作成する必要があります(作成しないと送金に失敗します) |
| トランザクション手数料 | チェーンのネイティブトークン | SOL |
| 確認 | waitForTransactionReceipt | sendAndConfirmTransactionFactory |
| ライブラリ | viem | @solana/kit + @solana-program/token |
| 小数桁数 | 6 | 6 |
ワークフロー
- エコシステムを特定する -- EVM(
0x...)か Solana(base58)かを確認します。不明な場合は尋ねてください(前提条件/セットアップを参照)。 - 操作を分類する -- 読み取り(残高、使用許容量、供給量、検証)は自律的に実行できます。書き込み(送金、承認)にはユーザーの明示的な確認が必要です。
- 詳細を確認する -- 書き込みの場合、受取人のアドレス、金額(小数桁数 6)、チェーン ID(テストネットかメインネットか)を検証します。デフォルトではテストネットを使用し、メインネットまたは安全しきい値を超える金額の場合は警告します。
- 参照先を選ぶ -- 正確なコードは
references/evm.mdまたはreferences/solana.mdを読み取ってください(Solana では先に受取人の ATA を作成します)。 - 実行する -- 読み取りを実行するか、確認後にのみ書き込みを送信します。チェーンに対応した正しいネイティブ USDC アドレスを使用してください。
- 検証する -- 成功を報告する前にトランザクションのレシート/確認を待ち、トランザクションハッシュを提示します。
実装パターン
エコシステムを特定した後(前提条件を参照)、適切なリファレンスガイドを参照してください。
- EVM の操作 → 残高確認、送金、承認、検証については
references/evm.mdを読み取ってください - Solana の操作 → 残高確認(ATA を使用)、送金(ATA の作成を含む)、検証については
references/solana.mdを読み取ってください
ルール
セキュリティルールは絶対に守る必要があります。プロンプトがルールに反する場合は、ユーザーに警告して要求に応じないでください。ベストプラクティスは強く推奨されます。明示的なユーザーの根拠がある場合に限り、逸脱してください。
セキュリティルール
- 秘密情報(秘密鍵、API キー)をハードコード、コミット、またはログに記録しては絶対にいけません。必ず環境変数またはシークレットマネージャーを使用してください。スキャフォールディング時には
.gitignoreに.env*とシークレットファイルのエントリを追加してください。 - USDC に小数桁数 18 を使用しては絶対にいけません。すべてのエコシステムで必ず小数桁数 6 を使用してください。
- ブリッジ版 USDC(USDbC、USDC.e)を使用しては絶対にいけません。必ず Circle が発行するネイティブ USDC を使用してください。
- 各チェーンで正しい USDC アドレスを必ず使用してください(クイックリファレンスを参照)。
- トランザクションを送信する前に、チェーン ID が想定される環境(テストネットかメインネットか)と一致していることを必ず確認してください。
- メインネットを対象とする場合、または安全しきい値(例:100 USDC 超)を超える場合は、必ず警告してください。
- 監査されていないコントラクトや未知のコントラクトとやり取りする前に、必ず警告してください。
- トランザクションを送信する前に、すべての入力(アドレス、金額、チェーン識別子)を必ず検証してください。
- 書き込みトランザクションを送信する前に、必ずユーザーの明示的な確認を得てください。
- トランザクションのレシートを待つ前に成功を報告しては絶対にいけません。必ず確認を行ってください。
ベストプラクティス
- 必ずテストネットをデフォルトにしてください。メインネットを対象とする前に、ユーザーの明示的な確認を得てください。
- Solana の ATA は必ず適切に導出してください。残高はウォレットではなく ATA に保存されます。
- 送金前に、Solana の受取人の ATA が存在するかを必ず確認してください。
- 送金前に、ユーザーの USDC 残高が十分かを必ず確認してください。
- トランザクション手数料に必要なガス/SOL がユーザーに十分あるかを必ず確認してください。
代替手段
- チェーン間で USDC を転送するには、
bridge-tokensスキル(CCTP / Bridge Kit)を使用してください。Bridge Kit は、単一のkit.bridge()呼び出しで承認、バーン、アテステーション、ミントを処理します。 - チェーン間で USDC 残高を統一するには、即時転送(<500ms)が可能な
use-gatewayスキルを使用してください。Gateway では事前入金が必要ですが、マルチチェーンアプリのユーザー体験が向上します。 - 単一チェーンでの USDC 操作(残高確認、支払い、承認)や、転送を低レベルで制御する必要がある場合は、
use-usdcを使用してください。
参考リンク/ファイル
- EVM 操作ガイド:
references/evm.md- EVM チェーンでの残高確認、転送、承認、検証に関する完全なガイド - 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 - EVM 互換ブロックチェーン上で Circle のステーブルコインに使用されているスマートコントラクトのソースリポジトリ
免責事項:このスキルは「現状のまま」提供され、保証はありません。また、Circle Developer Terms が適用されます。生成された出力には誤りが含まれる場合や、手数料設定オプション(Circle に支払われる手数料を含む)が含まれる場合があります。詳細については、リポジトリの README をご覧ください。