Стандарт токенов

Что такое ERC-223?

ERC-223 является стандартом токенов для Ethereum и других EVM-сетей, разработанный Dexaran в 2017 году. С ним токены ведут себя как 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. Чтобы сэкономить газ, многие биржи один раз просят неограниченное одобрение. Тогда контракт может перемещать ваши токены в любой момент, и если его взломают, одобренные токены могут украсть.

ERC-223 устраняет обе проблемы: получатель всегда получает запрос, а депозит выполняется одним переводом.

$201,690,000

в токенах ERC-20 потеряно в основной сети Ethereum из-за этого недостатка дизайна по состоянию на 29 августа 2023 года.

Посмотреть текущую сумму в калькуляторе потерь ERC-20 →

Сравнение

ERC-20 и ERC-223

ПараметрERC-20ERC-223
Отправка на контрактКонтракт не получает уведомления. Неподдерживаемые токены застревают.Контракт получает уведомление и отклоняет токены, которые не может обработать.
Депозит в dAppДве транзакции: approve, затем transferFromОдна транзакция: transfer
ОдобренияОбязательны. Неограниченные одобрения подвергают средства риску.Не нужны
Газ для обмена (пример)257K (45K одобрение + 212K обмен)220K, без одобрения
Ведёт себя как etherНетДа
Статус стандартаFinal (EIP-20, 2015)Final (EIP-223, 2017)

Данные о газе взяты из измеренного обмена одного и того же токена на DEX223. Результаты зависят от токена и состояния сети.

Совместимость

Используйте ERC-20 и ERC-223 вместе

Выбирать не нужно. Конвертер токенов EIP-7417 превращает любой токен ERC-20 в его версию ERC-223 и обратно, 1:1, в любой момент. Обе версии являются одним и тем же токеном.

Любой токен, в обе стороны

Внесите версию ERC-20 и получите версию ERC-223, или наоборот. Обратная конвертация ничем не ограничена.

Один пул ликвидности

На DEX223 каждый пул принимает обе версии токена. Вы выбираете ERC-20 или ERC-223 для каждой стороны сделки.

Без комиссии протокола

Конвертация между ERC-20 и ERC-223 на DEX223 стоит только газа сети.

Уже сегодня

ERC-223 на DEX223

DEX223 стала первой децентрализованной биржей с поддержкой ERC-223. Она некастодиальная: вы торгуете со своего кошелька.

Обмен без одобрений

Обменивайте токены ERC-223 одной транзакцией. Без шага одобрения и с меньшим расходом газа.

Конвертация в приложении

Переводите любой токен между ERC-20 и ERC-223 в соотношении 1:1 встроенным конвертером.

Листинг любого токена

Добавьте токен без разрешения через контракт автолистинга.

FAQ

Вопросы об ERC-223

Совместим ли ERC-223 с ERC-20?

Да. В ERC-223 та же функция transfer, поэтому кошельки могут его отправлять, а конвертер EIP-7417 превращает любой токен ERC-20 в его версию ERC-223 и обратно в соотношении 1:1.

Является ли ERC-223 официальным стандартом Ethereum?

Да. EIP-223, "Token with transaction handling model", имеет статус Final в Ethereum Improvement Proposals.

Кто создал ERC-223?

Dexaran предложил ERC-223 в 2017 году. EIP создан 3 мая 2017 года.

Что будет, если отправить токены ERC-223 на контракт, который их не поддерживает?

Перевод не пройдёт, и токены останутся в вашем кошельке. С ERC-20 такая же ошибка обычно блокирует токены навсегда.

Нужны ли токенам ERC-223 одобрения?

Нет. Депозит выполняется одним переводом, который обрабатывает контракт-получатель, поэтому нет шага approve и нет неограниченных одобрений, которые нужно отзывать.

Как конвертировать токены ERC-20 в ERC-223?

Воспользуйтесь конвертером токенов в приложении DEX223. Он конвертирует 1:1 в обе стороны и не берёт комиссию протокола, только газ сети.