メインコンテンツへスキップ
このドキュメントでは、CW-20トークンとInjectiveが発行するネイティブトークン(TokenFactoryモジュールを使用)を相互に交換できるCW20 Adapter Contractについて解説します。CW-20 AdapterのGitHubリポジトリはこちらを参照してください。

背景

CW-20はCosmWasmにおけるfungibleトークンの仕様で、ERC-20仕様を緩やかに参考にしています。CosmWasm内で任意のfungibleトークンを作成・管理することを可能にし、これらのトークンの作成、ミント、バーン、およびアカウント間の転送のメソッドを規定します。adapter contractは、認可されたソースのCW-20コントラクトのみがトークンをミントできるように保証します(「偽造」トークンの作成を防ぐため)。 CW-20標準は比較的成熟し完成されている一方、トークンはCosmWasmのコンテキスト内のみに存在し、発行側のコントラクトによって完全に管理されます(アカウント残高の追跡を含む)。つまり、これらのトークンはInjectiveのネイティブモジュールと直接相互作用できません(例えば、Injective exchange moduleでの取引や、発行コントラクトを介さずに転送することはできません)。 上記を踏まえると、CW20とInjective bank moduleの橋渡しとして機能するソリューションを提供する必要があります。 コントラクトのワークフローは以下のとおりです:
  • 新しいCW-20トークンを登録する
  • X個のCW-20トークンをY個のTokenFactoryトークンと交換する(元のCW-20トークンはコントラクトが保持)
  • Y個のTFトークンをX個のCW-20トークンに戻す(CW-20トークンが解放され、TokenFactoryトークンはバーンされる)

Messages

RegisterCw20Contract { addr: Addr }

adapterで処理される新しいCW-20コントラクト(addr)を登録し、factory/{adapter_contract}/{cw20_contract}形式の新しいTokenFactoryトークンを作成します。

Receive { sender: String, amount: Uint128, msg: Binary }

Receiver CW-20インターフェースの実装。
CW-20コントラクトからのみ呼び出される必要があります。

RedeemAndTransfer \{ recipient: Option\<String\> \}

添付されたTokenFactoryトークンをredeemし、対応するCW-20トークンをrecipientに転送します。 recipientが指定されない場合、メッセージ送信者に送付されます。

RedeemAndSend { recipient: String, submessage: Binary }

添付されたTokenFactoryトークンをredeemし、CW-20トークンをrecipientのコントラクトに送信します。 呼び出し元は任意のsubmessageを付与することができます。

UpdateMetadata { addr : Addr}

(登録済みであれば)CW-20アドレスにメタデータをクエリし、bankモジュールのsetMetadataを呼び出します(TokenFactoryのアクセスメソッドを使用)。
最終更新日 2026年5月11日