Насколько хороши токены стандарта ERC-20
ERC-20 — это первый и самый распространенный стандарт токенов, работающих на блокчейне Ethereum, который был представлен еще в 2015 году.
Стандартный код ERC-20 предоставляет 6 функций:
- totalSupply определяет общее количество токенов;
- balance0f показывает баланс учетной записи, заданный параметром address_owner, где _owner — адрес;
- transfer реализует передачу токенов с первичного адреса на адрес конкретного пользователя;
- transferFrom используется для передачи токенов от одного пользователя к другому;
- approve проверяет, остались ли на смарт-контракте токены, и обеспечивает списание средств со счета в размере, не превышающем величину, определяемую параметром функции.
- allowance проверяет, что в кошельке отправителя достаточно токенов, чтобы передать их получателю.
Также ERC-20 предусматривает два типа событий:
- transfer — передача токенов между счетами;
- approval — это событие активируется при успешном выполнении функции approve.
Из этих функций и событий видно, как токены ERC-20 передаются между адресами, и как их владельцы получают необходимую информацию. Кроме того, они обеспечивают работоспособность новых токенов на платформе Ethereum.
После появления этого стандарта рынок ICO начал очень быстро расти, поскольку в ERC-20 содержится список правил, которым должны соответствовать будущие токены. Это упростило жизнь разработчикам, которым ранее приходилось каждый раз создавать для токенов стандарты совместимости с блокчейном, кошельком, обменником и DApps.
Что же случилось дальше?
Стандарт ERC-20 был первым, и со временем выяснилось, что он несовершенен: еще в 2017 году появились сообщения о потерянных в ходе транзакций средствах, а в феврале 2018-го разработчик с псевдонимом Dexaran описал ошибку, влияющую на токены ERC-20, и предупредил о ней пользователей Github.
По его словам, основная проблема была связана со смарт-контрактами. Дело в том, что сделка считается завершенной, когда происходит успешная передача средств. Если возникает ошибка, перевод должен быть отклонен, а в случае с токенами ERC-20 и смарт-контрактом, не поддерживающим этот стандарт, система не отклоняет или не принимает транзакцию, и в результате токены замораживаются или теряются.
Это происходит в двух ситуациях
Используя функцию approve, пользователь дает смарт-контракту разрешение на снятие средств, что и выполняется с помощью функции transferFrom.
В случаях, когда пользователь вносит депозит на смарт-контракт с использованием функции transfer, транзакция будет считаться успешной, и сеть воспримет ее нормально, а вот сам смарт-контракт ее не признает — и из-за этой ошибки экосистема Ethereum уже потеряла миллионы долларов.
Эффект домино
Пользователям платформы Ethereum и раньше приходилось сталкиваться с проблемами безопасности, вспомнить хотя бы печально известный взлом проекта DAO в 2016 году. Чтобы устранить его последствия и вернуть средства в сеть, был проведен хардфорк, причем новый блокчейн продолжил работать под именем Ethereum, а участники сети, не согласные с таким решением, сохранили старый блокчейн под названием Ethereum Classic.
В апреле 2018 года некоторые криптообменные биржи (например, OKEx) приостановили размещение и вывод токенов ERC-20 из-за ошибки batchOverflow. Представители OKEx писали об этом:
«Эксплуатирующие ошибку злоумышленники могут создать огромное количество токенов и разместить их на обычных адресах, чтобы в дальнейшем манипулировать рынком».
После OKEx биржа Poloniex приняла аналогичное решение, относящееся ко всем токенам стандарта ERC-20, а в HitBTC инициировали внутренний аудит, в ходе которого часть внесенных средств блокировалась.
Что будет дальше?
Токены ERC-20 эффективны и удобны, но в их коде есть ошибки, которые могут привести к потере средств. Протокол ERC-20 не всегда подходит для целей создателей конкретного токена, и, конечно, никто не гарантирует, что созданный токен будет полезным, ценным или функциональным.
Кроме того, один из недостатков стандарта ERC-20 — очень простое создание токенов, что облегчает проведение ICO и приводит к обилию похожих токенов, а значит, значительно усложняет жизнь инвесторам.
Но, несмотря на все опасения и предупреждения, число ICO, использующих ERC-20, по-прежнему растет. Какой из этого можно сделать вывод? Что стартапам важнее привлечь деньги, чем обеспечить безопасность своих активов.
Источник: cryptocurrency.tech