Тот, кто знаком с виртуальными валютами, наверняка слышал о токенах стандарта ERC20 от Ethereum, на которых построено огромное количество криптовалют. Но есть также менее известный стандарт ERC223 и новый ERC777, который имеет все шансы стать самым популярным в индустрии.
ERC расшифровывается как Ethereum Request for Comment (запрос от Ethereum на обсуждение), цифра означает номер предложения, вынесенного разработчиками на дискуссию в GitHub. Сперва давайте взглянем на самый распространенный формат ERC20.
Что собой представляет стандарт ERC20?
Изобретение токенов ERC20 стало настоящим прорывом для криптовалютного рынка, именно благодаря этой технологии в 2017 году можно было увидеть появление гигантского количества новых проектов, проводящих ICO.
Сам стандарт появился ещё в 2015 году, он представляет собой «шаблон» с набором правил, который упрощает программную работу над созданием новых виртуальных валют. Примерами проектов на базе ERC20 являются Tether, Augur, OmiseGo и множество других криптовалют.
По состоянию на июнь этого года платформа, созданная Ethereum, стала основой для 66 тыс. проектов. Одним из преимуществ такой универсальной платформы является простота листинга новых криптовалют на биржах. Благодаря этому отрасль цифровых валют смогла решить проблему ликвидности и ускорить капитализацию рынка, что запустило взрывной рост котировок в прошлом году.
Главная проблема ERC20 — наличие критической ошибки
ERC20 стал первым стандартом Ethereum и, как это часто случается с новыми разработками, он содержит некоторое количество багов. Главным из них стала ошибка с депозитом токенов на смарт-контракты.
В ERC20 реализованы две функции транзакций токенов. Первой из них является трансфер на адрес получателя. Вторая — депозит на смарт-контракты, для которого используется сочетание функций approve и trasferfrom. Но разработчики не закрыли выполнение депозита через функцию трансфера, что приводило к успешной отправке, при этом контракт получателя не мог распознать получение токенов.
Примером может быть ситуация с пополнением счётов на биржах, с которой столкнулись многие пользователи. При депозите на децентрализованную биржу токены списывались со счёта отправителя и оказывались в сети получателя, но баланс в личном кабинете не менялся. Если биржа не поддерживала функцию срочного возврата средств, они оказывались потерянными навсегда. Эта ошибка со временем привела к тому, что невнимательные или неопытные пользователи потеряли миллионы долларов.
ERC20 всё ещё активно используется
Одним из первых вышеупомянутый баг заметил пользователь Reddit с ником Dexaran, который также является разработчиком более продвинутого контракта ERC223. Он рассказал, почему таким несовершенным стандартом пользуются до сих пор:
- Разработчики ведут себя безответственно и строят новые проекты на заведомо ненадежном решении.
- Компания Ethereum Foundation, стоящая за второй по величине криптовалютой, продолжает продвигать ERC20, невзирая на ошибки в его коде.
- Создатели новых цифровых валют ставят своей целью получение прибыли, а не вывод на рынок качественного продукта.
- Использование нескольких видов смарт-контрактов разными валютами приведет к последствиям для работоспособности сетей. И это не то, что стоит делать, когда Ethereum испытывает немалые проблемы с масштабируемостью.
Стандарт ERC223 — лучше ERC20, но не идеален
Более продвинутый стандарт токенов ERC223 был создан для того, чтобы избавиться от ошибки с транзакциями, присутствовавшей в ERC20. Операции в ERC223 проходили так же, как в сети Ethereum, что позволило защитить пользователя от потери токенов в результате ошибочной отправки. Критическая ошибка в них была решена — когда держатель токенов пытается провести некорректную транзакцию, он получает сообщение об ошибке и криптовалюта не исчезает в неизвестном направлении.
Этого удалось добиться благодаря тому, что сеть «научили» определять, является ли конечная точка отправки смарт-контрактами. Если это так, то функция transferFrom не выполняется, а вместо неё запускается функция tokenFallback, которая «отзывает» токены обратно.
Стандарт ERC223 ввел новые параметры данных, что позволило проводить более сложные операции, чем простая отправка токенов.
ERC777 — самый современный стандарт
Новейшим стандартом токенов является ERC777, который построен с учётом предложения ERC820 (Контракт реестра псевдо-самоанализа) и, также, как и ERC223, направлен на решение проблем с транзакциями и исчезновениями токенов в ERC20.
Новый стандарт предложил множество вариантов проведения транзакций, в отличие от ERC223, основной целью разработчики ставили не столько безопасность, сколько создание платформы, которая поможет проникновению криптовалют.
Преимущества стандарта ERC777
Главным недостатком сети Ethereum является невозможность определения функций, поддерживаемых контрактом. Эта проблема была решена в ERC820, а внедрена в ERC777.
Главным преимуществом ERC777 является возможность распознавания интерфейса контрактов. Для работы сети необходим центральный реестр контрактов, создание и принципы которого описаны в предложении ERC820. Система может обращаться к этому реестру для того, чтобы узнать, какие функции поддерживает конкретный адрес. Это поможет запретить пользователю выполнение действий, которые могут привести к нежелательным результатам вроде потери токенов.
Внедрение ERC777 может гарантировать существенное улучшение функциональности сети и помочь проекту, построенному на этих токенах, быстрее пройти листинг на бирже. Это привлечет множество разработчиков: как показывает практика, большинство из них в первую очередь интересуется получением прибыли, для чего необходим листинг на бирже.
Торговые площадки охотнее будут принимать проекты на ERC777, так как он является улучшенной версией хорошо знакомого ERC20, но с закрытыми «дырами» в коде. Это поспособствует более широкому внедрению таких токенов, чего не хватало ERC223.
В ERC777 полностью переработаны функции и их логика: вместо команды transfer, в коде прописан send, вместо approve теперь используется authorizeOperator, вместо tokenFallback активируется tokenReceived. Новые функции позволяют не «пересекаться» с другими стандартами токенов, при этом делая ERC777 совместимым с технологиями, предложенными в ERC820.
Недостатки и проблемы с безопасностью
В ERC777 внедрена команда authorizeOperator, которая позволяет дать «доверенному лицу» возможность управления токенами. Пользователь Reddit под ником @Dexaran, участвовавший в разработке считает такой функционал опасным и утверждает, что его не стоит использовать.
Также в новом стандарте существует опция, которая позволяет предотвратить потерю токенов благодаря проверке интерфейса ITokenRecepient, определяющей, находится ли адрес в белом списке. Поскольку функция ориентирована на безопасность, она должна быть не опциональной, а работающей постоянно.
ERC777 работает на центральном реестре смарт-контрактов, что тоже может быть угрозой безопасности. Он упрощает жизнь разработчикам, но может быть источником больших проблем при взломе, как это было с проектом Parity. Все множественные подписи Parity работали с центральной библиотекой кода, в которой был баг.
Стандарты ERC777 и ERC223 предназначены для решения проблем в ERC20, но каждый из них делает это по-своему. ERC223 уже нашёл своё применение в Ethereum Classic, ERC777 имеет лучшие перспективы и в будущем можно будет увидеть множество проектов, построенных на нём.
Отзывы пользователей
@3esmit
Я предлагаю также добавить логический возврат tokenFallback, а контракт-токен требует верного возврата для принятия транзакции.
@Svolrich
Интересно, чем этот новый стандарт erc-777 реально поможет криптоиндустрии, будут ли транзакции быстрее или комиссии меньше?
@dev-zl
Зачем централизовать что-то, когда цель всей технологии blockchain — децентрализация. Контракт должен быть автономным.