Что такое ERC-20?
ERC-20 — это стандарт токенов Ethereum, определяющий общий интерфейс для взаимозаменяемых криптоактивов, созданных с помощью смарт-контрактов.Взаимозаменяемость означает, что равные единицы одного и того же токена можно обменивать друг на друга согласно правилам учета контракта.Например, одна целая единица обычного токена ERC-20 имеет те же определенные контрактом свойства, что и другая целая единица этого токена.Официальная спецификация ERC-20 определяет функции проверки предложения и балансов токенов, их передачи и предоставления третьим сторонам разрешения расходовать токены.
Она также определяет стандартизированные события, позволяющие кошелькам и приложениям отслеживать переводы и изменения разрешений.ERC-20 — окончательный стандарт Ethereum Request for Comments и по-прежнему основная техническая основа взаимозаменяемых токенов в экосистемах, совместимых с Ethereum.Стандарт повышает совместимость: кошельки, смарт-контракты, обозреватели блокчейна, системы хранения активов и другие криптоприложения могут использовать одни и те же базовые методы для множества разных токенов.ERC-20 не определяет цену токена, политику предложения, юридическую классификацию, полезность, обеспечение залогом, права управления или инвестиционные качества.Что означает ERC?
ERC — это сокращение от Ethereum Request for Comments.ERC описывает стандарт или соглашение на уровне приложений, которое разработчики могут реализовать в смарт-контрактах Ethereum и связанном программном обеспечении.Число 20 обозначает предложение, в котором был представлен этот интерфейс для взаимозаменяемых токенов.Оно не указывает на количество токенов, десятичных разрядов, поддерживаемых сетей или функций контракта.ERC-20 также часто называют EIP-20, поскольку соответствующий документ входит в процесс предложений по улучшению Ethereum.Зачем был создан ERC-20?
До появления общего стандарта взаимозаменяемых токенов каждый смарт-контракт мог использовать разные названия и правила для проверки баланса, переводов и делегированного расходования.Для работы с каждым токеном кошельку требовалась собственная интеграция.Децентрализованное приложение не могло безопасно предполагать, что два контракта токенов поддерживают одинаковые операции.ERC-20 создал минимальный общий интерфейс, позволяющий одному приложению взаимодействовать со множеством взаимозаменяемых токенов.Благодаря этой совместимости балансы токенов стали использоваться в платежах, управлении, кредитовании, системах ликвидности, хранилищах, играх, программах вознаграждений и других криптоприложениях.Стандарт намеренно ограничен базовыми функциями, чтобы разработчики могли добавлять специализированное поведение, не меняя основной интерфейс.Как работает ERC-20
Токен ERC-20 управляется смарт-контрактом, развернутым в Ethereum или совместимом блокчейне.Контракт фиксирует количество единиц токена, принадлежащих каждому адресу.Он также учитывает общее предложение токенов и разрешения, предоставленные владельцами расходующим их адресам.При действительном переводе контракт уменьшает баланс отправителя и увеличивает баланс получателя.Контракт генерирует событие
Когда владелец одобряет расходующий адрес, контракт обновляет разрешение и генерирует событие
Основные функции ERC-20
Обязательный интерфейс ERC-20 включает шесть основных функций.Это
Стандарт также описывает необязательные функции метаданных
Функция totalSupply
Функция
Вместо того чтобы считать
Функция balanceOf
Функция
Функция transfer
Функция
При успешном переводе должно генерироваться событие
Приложения не должны считать, что возвращаемое значение
Многие современные реализации при ошибке отменяют транзакцию, а не возвращают
Функция approve
Функция
Вместо этого контракт записывает разрешение, которое расходующий адрес может позднее использовать через
Функция allowance
Функция
Значение может уменьшаться, когда расходующий адрес использует
Функция transferFrom
Функция
При перемещении токенов функция должна генерировать событие
События ERC-20
Стандарт ERC-20 определяет события
Событие Transfer
Событие
Спецификация ERC-20 требует, чтобы при создании предложения реализация генерировала событие
Событие Approval
Событие
Оно позволяет расходующему адресу использовать
Название и символ ERC-20
Функции
Что такое decimals ERC-20?
Необязательная функция
Восемнадцать десятичных знаков используются часто и являются значением по умолчанию в актуальной реализации ERC-20 OpenZeppelin, но токены ERC-20 могут использовать и другие значения.
Модели предложения ERC-20
ERC-20 не предписывает, каким образом должно создаваться предложение токена.Токен с фиксированным предложением может выпустить все токены при развертывании и не предоставлять функцию дальнейшего выпуска.Токен с ограниченным предложением может разрешать выпуск до достижения заданного контрактом максимума.Токен без ограничения предложения может позволять авторизованному аккаунту или процессу протокола создавать дополнительные единицы без постоянного максимума.Алгоритмический токен может изменять предложение в соответствии с запрограммированными условиями.Обеспеченный токен может выпускать единицы при внесении базового актива и сжигать их при его выводе.В официальном руководстве по предложению ERC-20 объясняется, что логику предложения необходимо добавить в базовую реализацию с помощью подходящего механизма выпуска.
Выпуск токенов ERC-20
Выпуск создает новые единицы токена и увеличивает общее предложение.Основной интерфейс ERC-20 не определяет публичную функцию выпуска и не указывает, кто может ее вызывать.Токен может ограничить выпуск полномочиями администратора, процессом управления, мостом, системой стейкинга, хранилищем или другим предусмотренным контрактом механизмом авторизации.Небезопасные права на выпуск могут размыть доли существующих держателей или нарушить предположения о залоге.Пользователям следует выяснить, возможен ли выпуск, кто его контролирует, существует ли лимит и можно ли обновить реализацию.Заявление о фиксированном предложении токена следует проверять по логике развернутого контракта и привилегированным разрешениям.Сжигание токенов ERC-20
Сжигание уничтожает единицы токена и обычно уменьшает общее предложение.Основной стандарт не требует наличия у держателей публичной функции сжигания.Реализация может разрешить держателям сжигать собственные токены либо одобренным расходующим адресам — сжигать токены на основании разрешения.В других системах токены сжигаются только при погашении, расчетах или выполнении операций протокола.Отправка токенов на недоступный адрес не всегда равнозначна сжиганию на уровне контракта, поскольку указанное общее предложение может не измениться.Прежде чем делать выводы о предложении, пользователям следует изучить фактическую логику сжигания токена.Разрешения ERC-20 и гонка при изменении разрешения
Прямая замена ненулевого разрешения другим ненулевым значением может создать риск, связанный с порядком выполнения транзакций.Расходующий адрес может использовать старое разрешение до подтверждения нового, а затем получить новое разрешение.В исходной спецификации ERC-20 отмечено, что пользовательским интерфейсам следует сначала обнулить разрешение и только потом присваивать другое ненулевое значение.Сам контракт токена не должен требовать такой последовательности, поскольку это снизило бы совместимость со старыми приложениями.Вспомогательные функции для аккуратного уменьшения или увеличения разрешения могут упростить работу, однако их поддержка зависит от реализации.Пользователям не следует оставлять разрешения больше тех, которые обоснованно нужны приложению.Неограниченные разрешения на токены
Неограниченное разрешение обычно устанавливается в максимальное значение, поддерживаемое 256-битным беззнаковым целым числом.Это избавляет от необходимости отправлять новую транзакцию одобрения перед каждым взаимодействием.Одновременно расходующий адрес получает постоянное право распоряжаться текущими и будущими балансами этого токена.Если контракт расходующего адреса взломают, вредоносно обновят или скомпрометируют его администратора, разрешение может позволить вывести токены держателя.Удобство следует сопоставлять с размером и сроком действия разрешения.Ограниченное разрешение может уменьшить максимальные потери при компрометации одного расходующего адреса.Что такое ERC-2612 Permit?
ERC-2612 — это расширение, позволяющее владельцу ERC-20 создать разрешение с помощью подписанного сообщения.Подписанное разрешение может быть отправлено в блокчейн другим аккаунтом или смарт-контрактом.Это позволяет объединить одобрение и действие приложения в один пользовательский процесс.Официальная спецификация ERC-2612 Permit добавляет к ERC-20 функции
Риски подписи Permit
Подпись Permit может разрешить расходование токенов, хотя ее подписание само по себе не отправляет ончейн-транзакцию владельца.Фишинговые сайты могут представлять Permit как вход в систему, проверку или безобидное сообщение без комиссии за газ.Расходующий адрес может позднее отправить действительный Permit и использовать полученное разрешение до истечения его срока.Перед подписанием пользователям следует проверить токен, расходующий адрес, сумму, сеть, nonce и срок действия.Запрос подписи не становится безопасным лишь потому, что кошелек сообщает об отсутствии комиссии за газ.Кошелькам на базе смарт-контрактов может требоваться дополнительная поддержка проверки подписей помимо базового механизма для внешних аккаунтов.Поддерживает ли ERC-20 автоматические обратные вызовы получателю?
Базовые функции перевода ERC-20 не требуют, чтобы смарт-контракт получателя подтверждал прием токенов.Поэтому перевод может завершиться успешно, даже если в контракте-получателе нет функции учета или возврата токенов.Из-за этого активы могут застрять в несовместимых контрактах.Обычный перевод также не вызывает автоматически код получателя в ERC-20.Расширение ERC-1363 добавляет операции перевода и одобрения с обратным вызовом для приложений, которым требуется такое поведение.
Расширения с обратными вызовами добавляют внешние вызовы, поэтому необходимо проверять связанные с ними риски повторного входа и безопасности получателя.SafeERC20 и нестандартные токены
Согласно спецификации ERC-20, вызывающая сторона должна обрабатывать возвращаемое значение
Другие реализации при ошибке отменяют операцию, а не возвращают
Актуальная вспомогательная библиотека SafeERC20 оборачивает операции с токенами и обрабатывает как токены, возвращающие
Токены с комиссией за перевод
Токен с комиссией за перевод взимает комиссию при перемещении токенов.Получатель получает меньше токенов, чем указал отправитель или вызывающий контракт.Если протокол зачисляет запрошенную сумму, а не фактически полученную, его обеспечение может оказаться недостаточным.Если приложение поддерживает такое поведение токенов, при переводе ему следует сравнивать балансы до и после операции.Правила комиссии также могут измениться, если контракт можно обновить или контролирует администратор.Стандартные названия функций ERC-20 не гарантируют фиксированный результат перевода.Ребейзинговые токены ERC-20
Ребейзинговый токен изменяет балансы аккаунтов согласно определенному контрактом механизму корректировки.Отображаемый функцией
Обеспеченные токены ERC-20
Обеспеченный токен ERC-20 представляет другой актив через смарт-контракт или механизм хранения активов.Пользователи могут внести базовый актив и получить соответствующее количество единиц ERC-20.При погашении обычно сжигаются или возвращаются обеспеченные единицы, а базовый актив высвобождается.Стоимость обернутого актива зависит от доступности и надежности механизма обеспечения.Эксплойты смарт-контрактов, сбои хранения, ошибки моста, замороженное обеспечение или неправильный учет могут нарушить ожидаемое соотношение.Соответствие ERC-20 подтверждает только совместимость интерфейса, но не наличие достаточного обеспечения.Токены управления ERC-20
Токен ERC-20 можно расширить, чтобы он представлял право голоса в системе ончейн-управления.Право голоса может зависеть от текущих балансов, делегированных балансов или исторических контрольных точек баланса.В актуальной библиотеке реализации ERC-20 есть расширение ERC-20 для голосования, поддерживающее делегирование и запросы исторических данных о голосах.
Владение токенами управления не обязательно автоматически активирует право голоса: некоторые системы требуют делегирования.На результаты голосования держателей токенов могут влиять концентрация владения, заемные активы, низкая явка и полномочия администратора.Основной стандарт ERC-20 не определяет правила управления.Доли хранилищ ERC-20
Токены ERC-20 могут представлять доли токенизированного хранилища.Каждая доля представляет пропорциональное право требования на активы под управлением хранилища, а не фиксированное количество базового токена.Стандарт токенизированных хранилищ ERC-4626 расширяет ERC-20 стандартизированными функциями депозита, вывода, выпуска, погашения и конвертации.
Стоимость долей в базовом активе может расти или снижаться в зависимости от результатов стратегии, комиссий, убытков и правил учета.Одной совместимости с ERC-20 недостаточно, чтобы понять, чем обеспечен токен долей и как его можно погасить.Сообщения об ошибках ERC-20
Исходный стандарт ERC-20 появился до пользовательских ошибок Solidity и не определяет стандартизированный набор сообщений об ошибках.Разные токены могут возвращать
Окончательный стандарт ERC-6093 определяет структурированные пользовательские ошибки для распространенных проблем с токенами.
Примеры таких ошибок: недостаточный баланс, недействительный отправитель или получатель, недостаточное разрешение, недействительный одобряющий адрес и недействительный расходующий адрес.Стандартизированные ошибки помогают кошелькам и приложениям объяснять причины сбоев более единообразно.ERC-6093 не меняет основной интерфейс ERC-20 и не обязывает все существующие токены использовать эти ошибки.Использует ли ERC-20 ERC-165?
Исходный стандарт ERC-20 не требует обнаружения интерфейсов ERC-165.Приложению нельзя полагаться на то, что вызов
ERC-20 и нативный ETH
ETH — нативный криптоактив Ethereum, и сам по себе он не является токеном ERC-20.Аккаунты Ethereum могут отправлять нативный ETH посредством переводов ценности на уровне протокола.Балансы ERC-20 учитываются в отдельных смарт-контрактах.Для оплаты комиссий за транзакции Ethereum необходим ETH, даже если переводится токен ERC-20, если только отдельная система не оплачивает или не абстрагирует комиссию.Для приложений, которым требуется интерфейс токена, можно создать представление ETH в формате ERC-20, но такой обернутый актив отличается от нативного ETH.ERC-20 и ERC-721
ERC-20 представляет балансы взаимозаменяемых токенов, а ERC-721 — индивидуально идентифицированные невзаимозаменяемые токены.Аккаунт ERC-20 владеет количеством взаимозаменяемых единиц.Аккаунт ERC-721 владеет отдельными token ID.В ERC-20 обычно используется форматирование десятичных знаков, а один токен ERC-721, как правило, передается целиком.ERC-721 также включает проверку получателя при безопасной передаче, которой нет в основном стандарте ERC-20.ERC-20 и ERC-1155
Интерфейс контракта ERC-20 управляет одним типом взаимозаменяемого токена.ERC-1155 позволяет одному контракту управлять множеством token ID с отдельными балансами.Token ID ERC-1155 могут представлять взаимозаменяемые, полувзаимозаменяемые или уникальные активы.ERC-1155 также определяет пакетные операции передачи и обратные вызовы получателя.Выбор стандарта зависит от того, нужен ли проекту один взаимозаменяемый актив или один контракт для управления несколькими типами активов.Распространенные сценарии использования ERC-20
Токены со стабильной стоимостью могут использовать ERC-20 для представления передаваемых единиц, связанных с резервом, системой обеспечения или алгоритмическим механизмом.Системы управления могут использовать балансы ERC-20 или делегированные единицы в качестве права голоса.Блокчейн-игры могут применять токены ERC-20 для взаимозаменяемых валют, вознаграждений или ресурсов.Хранилища и системы стейкинга могут выпускать токены ERC-20, подтверждающие внесенные позиции.Обеспеченные активы могут использовать ERC-20 для представления требований на активы, хранящиеся в другом месте.Проекты также могут использовать стандарт для бонусных баллов, кредитов доступа, платежных единиц или токенизированных финансовых требований.Интерфейс не определяет, является ли конкретный вариант использования законным, полностью обеспеченным, децентрализованным или экономически устойчивым.Риски смарт-контрактов ERC-20
В реализации ERC-20 могут быть ошибки в логике перевода, разрешений, выпуска, сжигания, налогообложения или контроля доступа.Администратор с расширенными правами может иметь возможность приостанавливать переводы, замораживать балансы, блокировать адреса, выпускать токены, менять комиссии или обновлять контракт.Обновление прокси может изменить поведение токена после того, как держатели его приобретут.Внешние вызовы в пользовательской логике токена могут создавать риски повторного входа или отказа в обслуживании.Ошибки интеграции могут привести к потере средств, даже если сам токен действует в соответствии со своим кодом.Соответствие стандарту повышает совместимость, но не заменяет аудит, тестирование, проверку исходного кода и анализ разрешений.Фишинг с запросом разрешения на токены
При фишинге с запросом разрешения пользователя пытаются убедить уполномочить вредоносный расходующий адрес.Интерфейс может представлять операцию как проверку, подключение, подтверждение права на вознаграждение или восстановление аккаунта.После подтверждения разрешения расходующий адрес может использовать
Мошенничество с переводом токенов
Мошенники могут отправлять неизвестные токены ERC-20 в кошелек без разрешения владельца.Название, символ или метаданные токена могут содержать вводящий в заблуждение веб-сайт или утверждение.Переход на рекламируемый сайт может привести к предоставлению вредоносных разрешений или подписанию опасных сообщений.Злоумышленники также могут создавать адреса, визуально похожие на адреса из истории транзакций пользователя.Пользователям следует копировать проверенные адреса из надежных источников, а не выбирать адрес назначения только по совпадающим первым и последним символам.Для получения неизвестного токена владельцу кошелька не нужно взаимодействовать с ним.Как разработчикам реализовать ERC-20
Разработчикам, как правило, следует начать с проверенной и активно поддерживаемой реализации.В актуальном руководстве по разработке ERC-20 представлены основные контракты и расширения для Permit, ограничения предложения, сжигания, приостановки, голосования, обертывания, хранилищ и других функций.
Создание предложения должно быть явным и защищенным надлежащим контролем доступа.Изменения логики переводов должны сохранять инварианты баланса, предложения, событий и разрешений.Разработчикам следует тестировать переводы нулевых и максимальных сумм, недостаточные балансы и разрешения, выпуск, сжигание, одобрения и переводы с необычными адресами.Если приложение поддерживает такие активы, интеграции также следует тестировать с токенами, возвращающими
Как пользователям оценить токен ERC-20
Сначала проверьте сеть блокчейна и полный адрес контракта токена.Затем изучите текущее предложение, заявления о максимальном предложении и полномочия на выпуск.Проверьте права администратора, возможность приостановки, заморозки и блокировки адресов, комиссии и права на обновление.Установите, обеспечен ли токен другим активом и как работает его погашение.Изучите комиссии за перевод, поведение при ребейзинге, ограничения и необычные эффекты для кошелька.Проверьте аудиты, верифицированный исходный код и историю инцидентов, не считая аудит гарантией.Изучите концентрацию держателей, доступную ликвидность и условия, при которых ликвидность может исчезнуть.Разберитесь в реальном источнике спроса или доходности, а не полагайтесь на брендирование токена.Проверяйте разрешения до и после взаимодействия с незнакомыми смарт-контрактами.Прежде чем подвергать риску значительные средства, протестируйте новый токен или контракт на небольшой сумме.Пример перевода ERC-20
Предположим, Алисе принадлежит 500 единиц токена ERC-20, и она хочет отправить Бобу 75 единиц.Кошелек Алисы подтверждает правильность блокчейна, контракта токена, адреса получателя, суммы и комиссии за транзакцию.Кошелек отправляет транзакцию с вызовом функции токена
Контракт создает событие
Пример разрешения ERC-20
Предположим, Алиса хочет, чтобы контракт хранилища внес от ее имени 100 единиц токена ERC-20.Сначала Алиса проверяет адрес контракта хранилища и токен, который он будет расходовать.Она вызывает
Контракт токена записывает разрешение и создает событие
Хранилище использует
Распространенные ошибки при работе с ERC-20
Распространенная ошибка — определять токен только по названию или символу.Другая ошибка — считать, что у всех токенов ERC-20 18 десятичных знаков.Третья ошибка — предоставлять неограниченное разрешение ненадежному контракту.Четвертая ошибка — думать, что отключение кошелька отзывает разрешения на токены.Пятая ошибка — игнорировать логическое возвращаемое значение или нестандартное поведение переводов токенов.Шестая ошибка — зачислять депозит токена с комиссией за перевод по запрошенной, а не фактически полученной сумме.Седьмая ошибка — считать
FAQ
Что означает ERC-20?
ERC-20 — это стандарт Ethereum, определяющий общие функции и события для взаимозаменяемых токенов смарт-контрактов.Является ли ERC-20 криптовалютой?
ERC-20 — это технический стандарт, а отдельный контракт, реализующий его, может создавать токен криптовалюты.Является ли ERC-20 тем же самым, что Ethereum?
Нет, Ethereum — это сеть блокчейна, а ERC-20 — интерфейс смарт-контракта для токенов, работающих в этой сети.Является ли ETH токеном ERC-20?
Нет, ETH — нативный актив Ethereum, и сам по себе он не использует интерфейс контракта ERC-20.Взаимозаменяемы ли токены ERC-20?
Да, равные единицы одного обычного токена ERC-20 взаимозаменяемы согласно правилам учета контракта.Каковы шесть основных функций ERC-20?
Это
Какие события определяет ERC-20?
Стандарт определяет события
Обязательны ли name, symbol и decimals?
Нет, в исходной спецификации ERC-20 все три функции метаданных необязательны.У всех ли токенов ERC-20 18 десятичных знаков?
Нет, 18 знаков используются часто, но у каждого токена может быть другое значение.Что делает разрешение ERC-20?
Оно позволяет расходующему адресу переводить токены от имени владельца в пределах заданной суммы.Для чего используется transferFrom?
Функция позволяет авторизованному расходующему адресу перевести токены от владельца получателю.Что такое неограниченное разрешение ERC-20?
Это разрешение, заданное очень большим максимальным значением, благодаря которому расходующий адрес может продолжать переводить токены без повторных одобрений.Отзывает ли отключение кошелька разрешения?
Нет, ончейн-разрешения остаются активными, пока их не изменят через контракт токена или они не утратят силу иным образом.Что такое Permit ERC-20?
Permit — это необязательное подписанное сообщение ERC-2612, которое создает или изменяет разрешение без необходимости самостоятельно отправлять транзакцию одобрения.Можно ли выпускать токены ERC-20?
Да, если в реализации есть механизм выпуска и его может использовать уполномоченная сторона или условие протокола.Можно ли сжигать токены ERC-20?
Да, если реализация включает логику контракта для уничтожения единиц токена.Требует ли ERC-20 фиксированного предложения?
Нет, политика предложения определяется реализацией конкретного токена.Может ли при переводе ERC-20 взиматься комиссия?
Да, пользовательские токены могут удерживать комиссию за перевод, хотя базовый стандарт этого не требует.Может ли баланс ERC-20 измениться без перевода?
Да, ребейзинг и другие пользовательские модели учета могут менять отображаемые балансы без обычных переводов держателя.Могут ли токены ERC-20 застрять в контракте?
Да, базовая функция перевода не требует от контрактов-получателей подтверждения, что они могут обрабатывать или возвращать токены.Поддерживает ли ERC-20 обнаружение интерфейсов ERC-165?
Нет, исходная спецификация ERC-20 не требует ERC-165.Гарантирует ли ERC-20 наличие обеспечения токена?
Нет, стандарт не проверяет резервы, обеспечение, права на погашение или платежеспособность.Делает ли соответствие ERC-20 токен безопасным?
Нет, у совместимого токена все равно могут быть опасные разрешения, ошибки в коде, недостаточное обеспечение, низкая ликвидность или злоумышленные операторы.Как определить правильный токен ERC-20?
Пользователям следует проверить сеть блокчейна и полный адрес контракта по авторитетному источнику.В чем главное преимущество ERC-20?
Главное преимущество — совместимость благодаря общему интерфейсу, понятному множеству криптокошельков и смарт-контрактов.Заключение
ERC-20 — базовый стандарт Ethereum для взаимозаменяемых токенов смарт-контрактов.Он определяет общие методы проверки предложения и балансов, перевода токенов и предоставления делегированных полномочий на расходование.События
Разрешения остаются одним из главных рисков для пользователей: вредоносный расходующий адрес может использовать активное разрешение через
Разработчикам необходимо учитывать возвращаемое значение
Вам также может быть интересно
ZK-Rollup
ZK-Rollup-as-a-Service
zk-SNARK
В тренде
Трендовые криптовалюты, которые в настоящее время привлекают значительное внимание рынка
ТОП по объему
Криптовалюты с наибольшим объемом торгов
Недавно добавленные
Криптовалюты недавно внесенные в листинг и доступные для торговли

