代币标准

什么是 ERC-223?

ERC-223 是由 Dexaran 于 2017 年编写的以太坊及其他 EVM 链代币标准。它让代币的行为与 ether 一致:当你把 ERC-223 代币发送到智能合约时,合约会收到通知,并可以接受或拒绝这些代币,因此发往错误合约的代币不会丢失。存入只需一笔交易,无需授权步骤。

工作原理

行为与 ether 一致的代币

ERC-223 为代币转账增加了一条规则:如果接收方是智能合约,代币会先询问它。钱包的使用方式保持不变。

  1. 你发送代币

    你调用 transfer(to, amount),其函数名和签名与 ERC-20 相同,因此任何钱包都可以发送 ERC-223 代币。

  2. 合约收到通知

    如果接收方是智能合约,代币会调用它的 tokenReceived 函数,就像 ether 会触发合约的 receive 函数一样。

  3. 接受或拒绝

    为该代币设计的合约会处理这笔存入。未为其设计的合约会回滚交易,代币仍留在你的钱包中。

// ERC-223(EIP-223)接收合约
function tokenReceived(address _from, uint _value, bytes calldata _data) external returns (bytes4)
// 未实现该函数?转账会回滚,代币仍归发送方所有。

问题所在

为什么 ERC-20 代币会丢失

ERC-20 设计于 2015 年。它的转账函数不会通知接收方,因此收到不支持代币的合约无法拒绝它们。这些代币会被锁在该合约中,通常是永久锁定。

向 dApp 存入时,ERC-20 还需要两笔交易:先 approve,再 transferFrom。为了节省 gas,许多交易所会要求一次性的无限授权。这样合约可以随时转移你的代币,一旦合约被攻击,已授权的代币可能被盗。

ERC-223 同时解决了这两个问题:接收方总会被询问,存入也只需一次转账。

$201,690,000

价值的 ERC-20 代币因这一设计缺陷在以太坊主网上丢失(截至 2023 年 8 月 29 日)。

在 ERC-20 损失计算器中查看最新总额 →

对比

ERC-20 与 ERC-223

特性ERC-20ERC-223
发送到合约合约不会收到通知,不支持的代币会被卡住。合约会收到通知,并拒绝无法处理的代币。
存入 dApp两笔交易:先 approve,再 transferFrom一笔交易:transfer
授权必需。无限授权会让资金面临风险。不需要
一次兑换的 gas(示例)257K(授权 45K + 兑换 212K)220K,无需授权
行为与 ether 一致否是
标准状态Final(EIP-20,2015)Final(EIP-223,2017)

gas 数据来自在 DEX223 上对同一代币进行的一次实测兑换。实际结果因代币和网络状况而异。

兼容性

同时使用 ERC-20 和 ERC-223

你不必二选一。EIP-7417 代币转换器可随时把任何 ERC-20 代币按 1:1 转换为其 ERC-223 版本,也可以转换回来。两个版本是同一种代币。

任何代币,双向转换

存入 ERC-20 版本即可获得 ERC-223 版本,反之亦然。转换回来没有任何限制。

同一个流动性池

在 DEX223 上,每个池都同时接受代币的两个版本。你可以为交易的每一方选择 ERC-20 或 ERC-223。

无协议费用

在 DEX223 上进行 ERC-20 与 ERC-223 之间的转换,只需支付网络 gas。

立即使用

在 DEX223 上使用 ERC-223

DEX223 是首个支持 ERC-223 的去中心化交易所。它是非托管的:你从自己的钱包进行交易。

无需授权的兑换

一笔交易即可兑换 ERC-223 代币。无需授权步骤,gas 更低。

在应用内转换

使用内置转换器,将任何代币在 ERC-20 与 ERC-223 之间按 1:1 转换。

上线任何代币

通过自动上线合约,无需许可即可上线代币。

常见问题

关于 ERC-223 的问题

ERC-223 与 ERC-20 兼容吗?

兼容。ERC-223 保留了相同的 transfer 函数,因此钱包可以发送它;EIP-7417 转换器还能把任何 ERC-20 代币按 1:1 转换为其 ERC-223 版本,并可转换回来。

ERC-223 是以太坊的官方标准吗?

是的。EIP-223「Token with transaction handling model」在以太坊改进提案(EIP)中的状态为 Final。

ERC-223 是谁创建的?

Dexaran 于 2017 年提出 ERC-223。该 EIP 创建于 2017 年 5 月 3 日。

如果我把 ERC-223 代币发送到不支持它的合约,会发生什么?

转账会失败,代币仍留在你的钱包中。而使用 ERC-20 时,同样的错误通常会让代币被永久锁定。

ERC-223 代币需要授权吗?

不需要。存入只是一次由接收合约处理的转账,因此没有 approve 步骤,也没有需要撤销的无限授权。

如何把 ERC-20 代币转换为 ERC-223?

使用 DEX223 应用中的代币转换器。它支持 1:1 双向转换,不收取协议费用,只需支付网络 gas。