ERC-223 является стандартом токенов для Ethereum и других EVM-сетей, разработанный Dexaran в 2017 году. С ним токены ведут себя как ether: когда вы отправляете токены ERC-223 на смарт-контракт, контракт получает уведомление и может принять или отклонить их, поэтому токены, отправленные не на тот контракт, не теряются. Депозит занимает одну транзакцию, без шага одобрения.
ERC-223 добавляет к переводам токенов одно правило: если получатель является смарт-контрактом, токен сначала спрашивает его. Кошельки работают как раньше.
Вы вызываете transfer(to, amount): это та же функция и сигнатура, что и в ERC-20, поэтому любой кошелёк может отправлять токены ERC-223.
Если получатель является смарт-контрактом, токен вызывает его функцию tokenReceived, так же как ether вызывает функцию receive контракта.
Контракт, рассчитанный на этот токен, обрабатывает депозит. Контракт, который на него не рассчитан, откатывает транзакцию, и токены остаются в вашем кошельке.
// Контракт-получатель ERC-223 (EIP-223)
function tokenReceived(address _from, uint _value, bytes calldata _data) external returns (bytes4)
// Функция не реализована? Перевод откатывается, и токены остаются у отправителя.ERC-20 был разработан в 2015 году. Его функция перевода ничего не сообщает получателю, поэтому контракт, который получил неподдерживаемые токены, не может их отклонить. Токены остаются заблокированными в этом контракте, обычно навсегда.
Для депозита в dApp стандарту ERC-20 также нужны две транзакции: approve, затем transferFrom. Чтобы сэкономить газ, многие биржи один раз просят неограниченное одобрение. Тогда контракт может перемещать ваши токены в любой момент, и если его взломают, одобренные токены могут украсть.
ERC-223 устраняет обе проблемы: получатель всегда получает запрос, а депозит выполняется одним переводом.
$201,690,000
в токенах ERC-20 потеряно в основной сети Ethereum из-за этого недостатка дизайна по состоянию на 29 августа 2023 года.
Посмотреть текущую сумму в калькуляторе потерь ERC-20 →| Параметр | ERC-20 | ERC-223 |
|---|---|---|
| Отправка на контракт | Контракт не получает уведомления. Неподдерживаемые токены застревают. | Контракт получает уведомление и отклоняет токены, которые не может обработать. |
| Депозит в dApp | Две транзакции: approve, затем transferFrom | Одна транзакция: transfer |
| Одобрения | Обязательны. Неограниченные одобрения подвергают средства риску. | Не нужны |
| Газ для обмена (пример) | 257K (45K одобрение + 212K обмен) | 220K, без одобрения |
| Ведёт себя как ether | Нет | Да |
| Статус стандарта | Final (EIP-20, 2015) | Final (EIP-223, 2017) |
Данные о газе взяты из измеренного обмена одного и того же токена на DEX223. Результаты зависят от токена и состояния сети.
Выбирать не нужно. Конвертер токенов EIP-7417 превращает любой токен ERC-20 в его версию ERC-223 и обратно, 1:1, в любой момент. Обе версии являются одним и тем же токеном.
Внесите версию ERC-20 и получите версию ERC-223, или наоборот. Обратная конвертация ничем не ограничена.
На DEX223 каждый пул принимает обе версии токена. Вы выбираете ERC-20 или ERC-223 для каждой стороны сделки.
Конвертация между ERC-20 и ERC-223 на DEX223 стоит только газа сети.
DEX223 стала первой децентрализованной биржей с поддержкой ERC-223. Она некастодиальная: вы торгуете со своего кошелька.
Обменивайте токены ERC-223 одной транзакцией. Без шага одобрения и с меньшим расходом газа.
Переводите любой токен между ERC-20 и ERC-223 в соотношении 1:1 встроенным конвертером.
Добавьте токен без разрешения через контракт автолистинга.
Да. В ERC-223 та же функция transfer, поэтому кошельки могут его отправлять, а конвертер EIP-7417 превращает любой токен ERC-20 в его версию ERC-223 и обратно в соотношении 1:1.
Да. EIP-223, "Token with transaction handling model", имеет статус Final в Ethereum Improvement Proposals.
Dexaran предложил ERC-223 в 2017 году. EIP создан 3 мая 2017 года.
Перевод не пройдёт, и токены останутся в вашем кошельке. С ERC-20 такая же ошибка обычно блокирует токены навсегда.
Нет. Депозит выполняется одним переводом, который обрабатывает контракт-получатель, поэтому нет шага approve и нет неограниченных одобрений, которые нужно отзывать.
Воспользуйтесь конвертером токенов в приложении DEX223. Он конвертирует 1:1 в обе стороны и не берёт комиссию протокола, только газ сети.