跳转到主要内容
在本文档中,我们将解释 CW20 适配器合约,该合约允许将 CW-20 代币与 Injective 发行的原生代币(使用 TokenFactory 模块)进行交换,反之亦然。有关 CW-20 适配器 GitHub 仓库,请参阅这里

背景

CW-20 是 CosmWasm 中可替代代币的规范,大致基于 ERC-20 规范。它允许在 CosmWasm 中创建和处理任意可替代代币,指定创建、铸造、销毁和在账户之间转移这些代币的方法。适配器合约将确保只有授权的源 CW-20 合约可以铸造代币(以避免创建”假冒”代币)。 虽然 CW-20 标准相对成熟和完整,但代币完全存在于 CosmWasm 上下文中,并完全由发行合约管理(包括跟踪账户余额)。这意味着它们无法直接与 Injective 的原生模块交互(例如,无法通过 Injective exchange 模块交易它们,或在不涉及发行合约的情况下进行转账)。 考虑到上述情况,有必要提供一个解决方案,作为 CW20 和 Injective bank 模块之间的桥梁。 合约的工作流程是
  • 注册新的 CW-20 代币
  • 将 X 数量的 CW-20 代币交换为 Y 数量的 TokenFactory 代币(原始 CW-20 代币将由合约持有)
  • 将 Y 数量的 TF 代币交换回 X 数量的 CW-20 代币(CW-20 代币被释放,TokenFactory 代币被销毁)

消息

RegisterCw20Contract { addr: Addr }

注册一个新的 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 代币并将 CW-20 代币转移给接收者。如果未提供接收者,它们将发送给消息发送者。

RedeemAndSend { recipient: String, submessage: Binary }

赎回附加的 TokenFactory 代币并将 CW-20 代币发送到接收者合约。调用者可以提供可选的子消息。

UpdateMetadata { addr : Addr}

将查询 CW-20 地址(如果已注册)的元数据,并将在 bank 模块中调用 setMetadata(使用 TokenFactory 访问方法)。
最后修改于 2026年3月30日