Что не так с токенами стандарта ERC20

Прошлый год стал прорывом не только для рынка криптовалют, но и для организаторов ICO — до декабря 2017 года провели 234 кампании, которые собрали 3,75 млрд долларов США. Подавляющее большинство ICO прошло, и по сей день оно основано на блокчейне Ethereum, а стандартные токены ERC20 чаще всего используются для сбора средств. Однако, по мнению  некоторых разработчиков блокчейнов, этот стандарт имеет один существенный недостаток, о котором знают не все пользователи, но который уже привел к значительным потерям в миллионы долларов.

Как работает ERC20

ERC20 — это первый и наиболее широко используемый стандарт токенов, опубликованный на основе блокчейна Ethereum. Этот стандарт был впервые введен в 2015 году и переведен с английского языка (запрос на добавление Ethereum) означает «запрос на добавление комментариев в Ethereum».

Благодаря внедрению ERC20 рынок криптовалют значительно увеличил количество кампаний ICO, поскольку в нем описан конкретный список спецификаций и правил, которым должны соответствовать будущие токены. Проще говоря, токены ERC20 — это специализированные умные контракты, основанные на блокчейне Ethereum. Этот стандарт значительно упростил работу разработчиков, которым ранее приходилось разрабатывать стандарты совместимости токенов с блокчейном, кошельками, обменом и DApps. На сегодняшний день в сети Ethereum подписано 67,507 контрактов на токены ERC20. Самые популярные токены ERC20 включают EOS, Tron, Binance Coin, ICON, KuCoin, OmiseGO и SingularDTV.

Код аERC20 предоставляет 6 функций:

totalSupply определяет общее число токенов.

 balance0f показывает баланс на счету определенного адреса, заданного параметром address _owner, где _owner — интересующий адрес.

transfer реализует передачу токенов с первичного адреса на адрес частного юзера, к примеру, участника ICO.

 transferFrom используется для пересылки токенов от одного пользователя к другому.

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

 allowance гарантирует, что на адресе кошелька-отправителя достаточно токенов для их пересылки на адрес кошелька-получателя.

ERC20 также предусматривает два вида рпераций:

 transfer — перевод а токенов между счетами;

 approval — событие инициируется при успешном выполнении функции approve, описанной выше.

Эти функции и события формируют основу для того, как токены ERC20 передаются между адресами и как их владельцы могут получать информацию о своих токенах. Они также предлагают полную работу новых валют на платформе Ethereum.

Проблемы ERC20

Стандарт ERC20 является первым стандартом, разработанным в сети Ethereum, и поэтому имеет существенные недостатки. Разработчик блокчейна, известный только как Dexaran, подробно описал ошибку, из-за которой пользователи теряли средства во время транзакций.
Согласно анализу разработчика, ключевая проблема возникает при работе со смарт-контрактами. Транзакция считается завершенной, когда происходит успешный перевод средств. В случае ошибки, перевод средств должен быть отклонен. При переводе средств в эфир это именно то, что происходит: если вы отправите эфир в контракт, который не планирует работать с этой криптовалютой, транзакция будет отклонена умным контрактом получателя, и перевод средств не состоится. Однако в случае токенов ERC20 все происходит иначе: умный контракт, который не поддерживает этот стандарт, не отклоняет транзакцию, в результате чего токены замораживаются и теряются.

Это связано с тем, что для передачи токенов ERC20 должна использоваться одна из двух функций. Первая — это функция пересылки, которая позволяет отправлять токены на определенный адрес. Второй используется для внесения токенов в смарт-контракт, для которого вы должны использовать комбинацию функций Одобрить + Передача. Благодаря функции подтверждения пользователь авторизует интеллектуальный договор на вывод капитала, который осуществляется с помощью функции TransferFrom.

Но что, если пользователь случайно подписывает интеллектуальный контракт с первой функцией передачи? Транзакция считается успешной, и сеть распознает ее. Однако сам смарт-контракт не видит эту транзакцию и, следовательно, не учитывает ее. Например, если вы отправляете токены децентрализованному биржевому контракту таким образом, контракт получит эти средства, но они не появятся в балансе. Кроме того, если такое соглашение не может выполнять функцию экстренного снятия токенов, невозможно вернуть отправленные средства. Из-за этой ошибки экосистема Эфириума уже потеряла миллионы долларов. По словам Дексарана, только следующие семь крупных контрактов для сети Ethereum потеряли более 1,3 миллиона долларов:

 EOS — $684,987

 GNT — $68,300

 ZRX — $77,331

 Tronix — $189,995

 DGD — $173,335

 OMG — $101,647

 STORJ — $51,095

Также известно, что токены заморозили в следующих контрактах:

 В контракте Golem утеряно 310,067 токенов GNT

 В контракте Augur 242 токена REP

 В контракте Digix DAO 814 токенов DGD

 В контракте FirstBlood 14,506 токенов 1ST

Возможные решения

Как отметил Майкл Малдерс, разработчик блокчейна Ledger, для борьбы с этой проблемой члены сообщества Ethereum выпустили альтернативные стандарты токенов, которые могут заменить ERC20 в будущем.

Стандарт ERC223

ERC223 был разработан пользователем Dexaran, который детально проанализировал работу токенов стандарта ERC20 и выпустил свой, как альтернативу, в марте 2017 года. ERC223 позволяет транзакциям с токенами вести себя так же, как и в случае с эфиром — в случае ошибки функции transfer транзакция отменяется, и средства остаются у отправителя. Для этого стандарт ERC223 вводит новые функции, которых нет в ERC20, а именно:

ERC223 был разработан пользователем Dexaran, который подробно проанализировал работу стандартных токенов ERC20 и опубликовал свой собственный в качестве альтернативы в марте 2017 года. С ERC223 транзакции с токенами могут вести себя точно так же, как в случае Ether — в случае ошибки в функции передачи транзакция отменяется, и деньги остаются у отправителя. Для этой цели стандарт ERC223 вводит новые функции, которые не включены в ERC20, а именно:
 Передаточная функция (вместо Transfer и TransferFrom) с тремя параметрами адреса _to, uint _value, байтами данных.
 Функция tokenFallBack для принимающего контракта, которая определяет тип отправляемых монет.

Стандарт ERC777

ERC777  был выпущен в ноябре прошлого года, и его основной целью является решение проблем ERC20 в виде отсутствия механизмов обработки транзакций. Поэтому этот стандарт токенов предлагает широкий спектр инструментов для обработки токенов. Для этого в стандарте ERC777 используется новый набор функций:
 Вместо функции передачи предоставляется одна функция отправки;
 Вместо подтверждения используйте authoriseOperator;
 Вместо tokenFallback получаются токены.

Такой подход гарантирует, что эти функции не мешают, не блокируют и не блокируют функции других стандартов токенов. Однако среди недостатков разработчики отмечают, что новые функции токена ERC777 могут косвенно предполагать ошибки токена ERC20, поскольку они не будут их блокировать.

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

Другие стандарты

Кроме того, разработчики представили такие стандарты, как ERC827, который сочетает в себе преимущества ERC223 с функциями ERC20. Или стандарт ERC664, который позволяет обновлять токен-контракты, но содержит критическую ошибку ERC20.
Внедрение нового стандарта токенов — это кропотливый процесс, в котором должны участвовать не только члены сообщества шифрования Ethereum, но также биржи, портфолио и разработчики DApp, планирующие работать с новыми токенами. Тем не менее, работа по устранению проблем и ошибок ERC20 уже началась, что означает, что изменения в экосистеме Ethereum неизбежны.

bit44.org

Обязательно подпишитесь на наш Telegram канал

ПОДПИСЫВАЮСЬ
ПОТОМ