このチュートリアルでは、以下を行います:Documentation Index
Fetch the complete documentation index at: https://docs.injective.network/llms.txt
Use this file to discover all available pages before exploring further.
- CCTPのburn-attest-mintプロトコルの仕組みを学ぶ
- クロスチェーン送金を開始するために、ソースチェーン上でUSDCをburnする
- デスティネーションチェーン上でのmintを認可するCircleのattestationを取得する
- デスティネーションチェーン上でUSDCをmintして送金を完了する
- ソースチェーン上でUSDCをburnする。
- attestation を受け取る。
- デスティネーションチェーン上で同等量のUSDCをmintする。
前提条件
このチュートリアルを始める前に、以下がインストールされていることを確認してください:| ツール | 最低バージョン | 確認 | インストール |
|---|---|---|---|
| Node.js | 22+ | node --version | nodejs.org |
| npm | 11+ | npm --version | Node.jsに同梱 |
- ブラウザにインストールされた MetaMask
- Injective Testnetに接続済み
- Sepoliaにも接続済み
- Injective Faucet または Google Cloud Faucet から取得したテストネットINJ
- Sepolia faucet から取得したテストネットSepolia ETH
- Circle Faucet から取得したテストネットUSDC
はじめに
このチュートリアルに付属するコードは USDC CCTP demo リポジトリで利用可能です。 リポジトリをクローンし、依存関係をインストールします:http://localhost:5173 を開いてdAppを表示します。
CCTPはどのように動作するか?
CCTPは、ソースチェーン上でUSDCをburnし、CircleのAPIから署名付きattestationを取得し、デスティネーションチェーン上で同等量をmintすることで、チェーン間でUSDCを移転します。 CCTPは以下の3ステップでUSDCをチェーン間で移転します:- Burn:
ソースチェーンの
TokenMessengerV2コントラクトが指定されたUSDC量をburnします。 その後、送金詳細を含むMessageSentイベントを発行します。 - Attest: CircleのIris APIがオンチェーンイベントを監視し、メッセージに署名します。 burnの確定後、attestationを生成します。
- Mint:
デスティネーションチェーンの
MessageTransmitterV2コントラクトがattestationを検証し、同等量のUSDCをrecipientアドレスへmintします。
dAppは各ステップを以下の呼び出しで実装しています:
Injective上で使用されるコントラクトアドレスについては、Injective上のUSDC を参照してください。
ソースチェーン上でUSDCをburnする
dAppがhttp://localhost:5173 で開かれた状態で:
- Connect Wallet を選択し、MetaMaskの接続プロンプトを承認します。
- ソースチェーン(例えば Ethereum Sepolia)とデスティネーションチェーン(Injective EVM Testnet)を選択し、移転するUSDC量を入力します。
- Approve USDC を選択し、MetaMaskで承認トランザクションを確認します。
- Burn USDC を選択し、burnトランザクションを確認します。
Burn USDC を選択すると、dAppは
TokenMessengerV2 コントラクトの depositForBurn を呼び出します:minFinalityThreshold の値はどのように選べばよいですか?
minFinalityThreshold の値はどのように選べばよいですか?
minFinalityThreshold の値は以下のように設定する必要があります:- 値が1000以下の場合は「fast」メッセージとなり、
- 値が1000より大きい場合は「standard」メッセージとなります。
Circle attestationとは?
Circle attestationは、ソースチェーン上でUSDCのburnが発生したことを証明する、CircleのIris APIからの暗号学的署名です。 attestationは、デスティネーションチェーン上での対応するmintを認可するために使用されます。 burnの後、CircleのIris APIは ソースチェーン 上のMessageSent イベントを監視します。
必要な数のブロック確認が完了すると、Circleはメッセージに署名し、attestationを発行します。
attestationの所要時間はソースチェーンによって異なります:
- Ethereum Sepolia (standardモード): 15〜20分
- Injective EVM Testnet: 通常数分
Sepoliaからの送金は、待ち時間を大幅に短縮するfastモードをサポートしていますが、十分な
maxFee の設定が必要です。
手数料が低すぎる場合、送金はstandardモードへフォールバックします。attestationを待つ
このdAppは自動的にIris APIをポーリングします。 ページを離れる必要はありません。 attestationの準備が整うと、UIが通知します。dAppはburnステップのトランザクションハッシュを使ってattestationを取得します:
デスティネーションチェーン上でUSDCをmintする
dAppに「Attestation received」が表示されたら:- プロンプトが表示されたら、MetaMaskを デスティネーションチェーン に切り替えます。
- Mint USDC を選択し、MetaMaskでトランザクションを確認します。
- dApp上に表示される残高、または Injective Testnet Blockscout もしくは Sepolia Etherscan でアドレスを確認することで、デスティネーションチェーン上のUSDC残高を確認します。
Mint USDC を選択すると、dAppは
MessageTransmitterV2 コントラクトの receiveMessage を呼び出します:次のステップ
Injective上でCCTPを使った初めてのクロスチェーンUSDC送金、おつかれさまでした! このチュートリアルで学んだ内容は以下の通りです:- CCTPのburn-attest-mintプロトコルが、wrappingやbridgingを 行わずに USDCを1:1でチェーン間で移転する方法
- クロスチェーン送金を開始するために、ソースチェーン上でUSDCをburnする方法
- Circleのattestationを取得し、それを使ってデスティネーションチェーン上でUSDCをmintする方法
- Injective上のUSDC: コントラクトアドレス、テストネットfaucet、よくある質問。
- MultiVM Token Standard: bridgingなしで、Injective上のEVMとCosmosの両方でUSDCを使用します。
