Токены ERC-20: основные проблемы и к чему они могут приводить

ERC-20 — стандарт токенов для платформы Ethereum, который наиболее распространен на крипторынке. Но всё же эти токены нельзя назвать идеальными. Cryptonomist разобрался в основных проблемах и недостатках, присущих ERC-20.

Базовые функции и события

Стандарт токенов ERC-20 поддерживает шесть ключевых функций:

  • totalSupply — возвращает общее количество токенов;
  • balance0f — отражает баланс учетной записи, заданный параметром address_owner;
  • transfer — позволяет передать токены с первичного адреса на адрес конкретного пользователя;
  • transferFrom — функция для передачи токенов от одного пользователя к другому;
  • approve — позволяет проверить остаток токенов на смарт-контракте и списать средства в соответствие с переданным в функцию параметром;
  • allowance — выполняет проверку на то, что в кошельке отправителя достаточно токенов для передачи получателю.

Кроме того, в стандарте ERC-20 предусматривает два типа событий:

  • transfer — передача токенов между счетами;
  • approval — событие, которое активируется при успешном выполнении функции approve.

Таким образом, благодаря правилам стандарта токены ERC-20 можно перемещать между адресами. Кроме того, функции и события дают пользователям возможность получать необходимую информацию.

Проблемы совместимости

Как только стандарт ERC-20 появился, разработчики стали активно им интересоваться и создавать свои приложения и токены на платформе Ethereum. Наличие единого стандарта, с одной стороны, упростило жизнь программистам: им больше не нужно было самостоятельно разрабатывать решения, которые бы обеспечивали совместимость с децентрализованным приложением, кошельком, блокчейном и обменником.

Но вскоре после запуска стандартов стали появляться сообщения о том, что ERC-20 несовершенен. К примеру, в десятках случаев разработчики столкнулись с утечками средств и нашли проблемы с безопасностью стандарта.

В феврале 2018 года разработчик с ником Dexaran обнаружил и описал ошибку, влияющую на токены ERC-20. Код эксплуатации уязвимости от выложил на Github.

Разработчик пояснил, что проблема связана со смарт-контрактами, которые используют ERC-20. По правилам протокола, сделка считается завершенной, если передача средств произошла успешно. Если же в процессе возникли ошибки, перевод должен быть отклонен.

Но в случае с токенами ERC-20 и смарт-контрактом, который не поддерживает новый стандарт, система не отклоняет или не принимает транзакцию. Это приводит либо к потере, либо к заморозке токенов.

Dexaran отметил, что к ошибкам может привести наступление двух ситуаций:

  • Если используется функция transfer, которая позволяет отправить токены на заданный адрес.
  • Если на смарт-контракт вносится депозит с применением комбинации функций approve и transferFrom.

Функция approve фактически позволяет смарт-контракту снять средства. После неё выполняется функция transferFrom, которая как раз отвечает за снятие средств.

Если же на смарт-контракт вносится депозит с использованием функции transfer, транзакция будет считаться успешной. Таким образом, блокчейн примет её, а смарт-контракт — нет.

В обоих случаях если смарт-контракт не поддерживает стандарт ERC-20, теряются средства. Разработчик заявил, что из-за этой проблемы экосистема Ethereum уже лишилась миллионов долларов.

Хардфорк DAO и его последствия

В 2016 году произошел печально известный взлом DAO, из-за которого в блокчейне Ethereum пришлось провести срочный хардфорк. В результате основная цепь продолжила работать под названием Ethereum, а вторая, поддерживаемся несогласными с политикой платформы, стала Ethereum Classic.

В апреле 2018 года OKEx и ряд других криптобирж вынуждены были остановить размещение и вывод токенов ERC-20. Причина — ошибка batchOverflow. Представители OKEx пояснили:

Эксплуатирующие ошибку злоумышленники могут создать огромное количество токенов и разместить их на обычных адресах, чтобы в дальнейшем манипулировать рынком.

Хардфорк в этом случае не проводили. Но, к примеру, заявление OKEx подтолкнуло биржу Poloniex принять аналогичное решение, причем в адрес всех токенов стандарта ERC-20. Площадка HitBTC запустила внутренний аудит, в ходе которого часть внесенных средств блокировалась.

Всё это — последствия уязвимостей и проблемы совместимости токенов ERC-20. И ещё одно доказательство того, что стандарт несовершенен и нуждается в доработке.

Что в итоге

ERC-20 — самый распространенный, но вовсе не универсальный и не совсем безопасный стандарт. В коде токенов есть ошибки, которые могут привести (и приводят!) к потере средств.

Выпуская токены стандарта ERC-20, разработчики не гарантируют, что они будут ценными, полезными или функциональными. К тому же из-за простоты использования стандарта ERC-20 появилось множество похожих токенов, и это усложняет жизнь инвесторам.

В итоге получается, что стартапы, выпускающие токены ERC-20, не ставят во главу угла безопасность пользователей. Они игнорируют опасения и предупреждения сторонних разработчиков.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.