Купить крипто
Рынки
Спот
ФьючерсыBTC
Сбережения
Центр событий
Хаб наград
Еще
Фестиваль с 0 комиссией
ERC-20: Что такое ERC-20?ERC-20 — это стандарт токенов Ethereum, определяющий общий интерфейс для взаимозаменяемых криптоактивов, созданных с помощью смарт-контрактов.Взаимозаменяемость означает, что равные еERC-20: Что такое ERC-20?ERC-20 — это стандарт токенов Ethereum, определяющий общий интерфейс для взаимозаменяемых криптоактивов, созданных с помощью смарт-контрактов.Взаимозаменяемость означает, что равные е

ERC-20

2026/10/13 15:30
#Intermediate
Humanity
H$0.05575-5.28%
PX
PX$0.0128-3.03%
TokenFi
TOKEN$0.001987-5.82%
Blobacoin
BLOB$0.00081-51.78%
Солана
SOL$107.71-0.48%

Что такое 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 или совместимом блокчейне.

Контракт фиксирует количество единиц токена, принадлежащих каждому адресу.

Он также учитывает общее предложение токенов и разрешения, предоставленные владельцами расходующим их адресам.

При действительном переводе контракт уменьшает баланс отправителя и увеличивает баланс получателя.

Контракт генерирует событие

Transfer
, чтобы внешнее программное обеспечение могло отслеживать перемещение.

Когда владелец одобряет расходующий адрес, контракт обновляет разрешение и генерирует событие

Approval
.

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

У контракта токена нет отдельного блокчейна: он работает в рамках состояния и модели безопасности базовой сети.

Основные функции ERC-20

Обязательный интерфейс ERC-20 включает шесть основных функций.

Это

totalSupply
,
balanceOf
,
transfer
,
allowance
,
approve
и
transferFrom
.

Стандарт также описывает необязательные функции метаданных

name
,
symbol
и
decimals
.

Основной интерфейс не требует функций выпуска, сжигания, приостановки, налогообложения, голосования, заморозки или ограничения предложения.

Токен может поддерживать эти функции с помощью пользовательской логики или стандартизированных расширений.

Функция totalSupply

Функция

totalSupply
возвращает количество единиц токена, включенных в указанное контрактом текущее предложение.

Значение выражено в минимальных внутренних единицах токена.

Оно автоматически не раскрывает максимально возможное предложение.

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

Токен также может поддерживать сжигание, уменьшающее текущее общее предложение.

Вместо того чтобы считать

totalSupply
доказательством постоянной редкости, пользователям следует проверить права на выпуск и механизмы контроля предложения.

Функция balanceOf

Функция

balanceOf
возвращает записанный в контракте баланс токена для указанного адреса.

Результат выражен в минимальных внутренних единицах токена.

Отображаемый в кошельке баланс обычно рассчитывается форматированием этого целого числа в соответствии с настройкой десятичных знаков токена.

Функция сообщает только баланс в рамках одного контракта токена.

Она не включает одноименные токены, созданные по другим адресам контрактов или в других сетях.

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

Функция transfer

Функция

transfer
переводит указанное количество токенов с баланса вызывающего на адрес получателя.

У вызывающего должно быть достаточно токенов для выполнения операции.

При успешном переводе должно генерироваться событие

Transfer
.

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

Согласно стандарту функция возвращает логическое значение успешного выполнения.

Приложения не должны считать, что возвращаемое значение

false
невозможно.

Многие современные реализации при ошибке отменяют транзакцию, а не возвращают

false
, однако интеграциям необходимо учитывать поведение конкретного токена.

Функция approve

Функция

approve
позволяет владельцу токена задать количество токенов, которое расходующий адрес может перевести с баланса владельца.

Токены не передаются расходующему адресу немедленно.

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

transferFrom
.

Разрешение относится к одному владельцу, одному расходующему адресу и одному контракту токена.

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

Пользователям следует воспринимать транзакции одобрения как предоставление финансовых полномочий, а не как безобидное подключение кошелька.

Функция allowance

Функция

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

Значение может уменьшаться, когда расходующий адрес использует

transferFrom
.

Владелец может изменить сумму другой транзакцией одобрения.

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

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

Пользователям следует проверять разрешения и отзывать те, которые больше не нужны.

Функция transferFrom

Функция

transferFrom
позволяет одобренному расходующему адресу переводить токены от владельца получателю.

У расходующего адреса должно быть достаточное разрешение, а у владельца — достаточный баланс.

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

При перемещении токенов функция должна генерировать событие

Transfer
.

Такая модель делегированного перевода позволяет смарт-контрактам собирать платежи, принимать депозиты, блокировать залог и выполнять другие одобренные операции.

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

События ERC-20

Стандарт ERC-20 определяет события

Transfer
и
Approval
.

События — это журналы транзакций, которые офчейн-приложения могут эффективно индексировать.

Кошельки, аналитические инструменты, системы учета и обозреватели блокчейна используют эти журналы для отслеживания операций с токенами.

Событие всегда следует рассматривать вместе с адресом контракта, который его создал.

Вредоносный контракт может использовать привычные названия событий, не представляя подлинный или ценный токен.

Событие Transfer

Событие

Transfer
фиксирует отправителя, получателя и количество токенов.

При обычных переводах используются ненулевые адреса отправителя и получателя.

Создание токенов обычно отображается как перевод с нулевого адреса получателю.

Уничтожение токенов обычно отображается как перевод от держателя на нулевой адрес.

Спецификация ERC-20 требует, чтобы при создании предложения реализация генерировала событие

Transfer
с нулевого адреса для новых токенов.

Наблюдаемое событие выпуска не доказывает невозможность выпуска в будущем.

Событие Approval

Событие

Approval
фиксирует владельца, расходующий адрес и сумму разрешения.

Приложения могут отслеживать с его помощью изменения делегированных полномочий на расходование.

Само по себе разрешение не переводит токены и не меняет владельца.

Оно позволяет расходующему адресу использовать

transferFrom
в пределах разрешенной суммы.

Отзыв разрешения не отменяет переводы токенов, совершенные, пока оно действовало.

Название и символ ERC-20

Функции

name
и
symbol
предоставляют понятную пользователю информацию о токене.

Название может описывать актив, а символ служит краткой меткой для отображения.

В исходной спецификации ERC-20 обе функции необязательны.

Названия и символы не уникальны.

Любой может развернуть токен с названием и символом другого актива.

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

Что такое decimals ERC-20?

Необязательная функция

decimals
сообщает приложениям, как отображать минимальные единицы токена в удобном для чтения виде.

Если у токена 18 десятичных знаков, для стандартного отображения внутреннее целое значение делится на 10 в степени 18.

Например, внутреннее значение в 1 000 000 единиц соответствует одному токену, если в нем используется шесть десятичных знаков.

Десятичные знаки не превращают баланс в блокчейне в число с плавающей точкой.

Смарт-контракты ведут учет токенов с помощью целых чисел.

Значение decimals влияет на отображение и номинал, а не на базовую модель арифметических операций.

Восемнадцать десятичных знаков используются часто и являются значением по умолчанию в актуальной реализации 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
,
nonces
и
DOMAIN_SEPARATOR
.

Каждый успешно использованный permit увеличивает nonce, чтобы подпись, как правило, нельзя было использовать повторно.

Срок действия ограничивает период, в течение которого подпись остается действительной.

Поддержка Permit необязательна и не входит в исходный основной интерфейс ERC-20.

Риски подписи Permit

Подпись Permit может разрешить расходование токенов, хотя ее подписание само по себе не отправляет ончейн-транзакцию владельца.

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

Расходующий адрес может позднее отправить действительный Permit и использовать полученное разрешение до истечения его срока.

Перед подписанием пользователям следует проверить токен, расходующий адрес, сумму, сеть, nonce и срок действия.

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

Кошелькам на базе смарт-контрактов может требоваться дополнительная поддержка проверки подписей помимо базового механизма для внешних аккаунтов.

Поддерживает ли ERC-20 автоматические обратные вызовы получателю?

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

Поэтому перевод может завершиться успешно, даже если в контракте-получателе нет функции учета или возврата токенов.

Из-за этого активы могут застрять в несовместимых контрактах.

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

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

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

SafeERC20 и нестандартные токены

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

false
.

На практике некоторые старые или необычные контракты токенов не возвращают логическое значение, даже если перевод прошел успешно.

Другие реализации при ошибке отменяют операцию, а не возвращают

false
.

Прямой вызов интерфейса, предполагающий только один вариант поведения, может завершиться ошибкой или привести к неверной интерпретации результата.

Актуальная вспомогательная библиотека SafeERC20 оборачивает операции с токенами и обрабатывает как токены, возвращающие

false
, так и некоторые токены без возвращаемого значения.

Обертка улучшает совместимость, но не делает экономически безопасным вредоносный токен.

Токены с комиссией за перевод

Токен с комиссией за перевод взимает комиссию при перемещении токенов.

Получатель получает меньше токенов, чем указал отправитель или вызывающий контракт.

Если протокол зачисляет запрошенную сумму, а не фактически полученную, его обеспечение может оказаться недостаточным.

Если приложение поддерживает такое поведение токенов, при переводе ему следует сравнивать балансы до и после операции.

Правила комиссии также могут измениться, если контракт можно обновить или контролирует администратор.

Стандартные названия функций ERC-20 не гарантируют фиксированный результат перевода.

Ребейзинговые токены ERC-20

Ребейзинговый токен изменяет балансы аккаунтов согласно определенному контрактом механизму корректировки.

Отображаемый функцией

balanceOf
баланс может вырасти или снизиться без обычного перевода, инициированного держателем.

Положительный ребейз увеличивает отображаемые балансы, а отрицательный — уменьшает их.

В некоторых системах используются внутренние доли, а видимые балансы рассчитываются по обменному курсу.

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

Пользователям следует разобраться, представляет ли токен фиксированное количество единиц или изменяющееся пропорциональное требование.

Обеспеченные токены 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 и не определяет стандартизированный набор сообщений об ошибках.

Разные токены могут возвращать

false
, отменять операцию с текстовым сообщением или пользовательской ошибкой либо работать некорректно.

Окончательный стандарт ERC-6093 определяет структурированные пользовательские ошибки для распространенных проблем с токенами.

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

Стандартизированные ошибки помогают кошелькам и приложениям объяснять причины сбоев более единообразно.

ERC-6093 не меняет основной интерфейс ERC-20 и не обязывает все существующие токены использовать эти ошибки.

Использует ли ERC-20 ERC-165?

Исходный стандарт ERC-20 не требует обнаружения интерфейсов ERC-165.

Приложению нельзя полагаться на то, что вызов

supportsInterface
позволит обнаружить каждый токен ERC-20.

Совместимость обычно определяют по ABI контракта, верифицированному исходному коду, известным спискам токенов, данным реестра и прямому тестированию функций.

Наличие знакомых селекторов функций не подтверждает полное соответствие стандарту.

Вредоносный контракт может имитировать часть интерфейса и при этом выполнять опасные или неожиданные действия.

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 могут быть ошибки в логике перевода, разрешений, выпуска, сжигания, налогообложения или контроля доступа.

Администратор с расширенными правами может иметь возможность приостанавливать переводы, замораживать балансы, блокировать адреса, выпускать токены, менять комиссии или обновлять контракт.

Обновление прокси может изменить поведение токена после того, как держатели его приобретут.

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

Ошибки интеграции могут привести к потере средств, даже если сам токен действует в соответствии со своим кодом.

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

Фишинг с запросом разрешения на токены

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

Интерфейс может представлять операцию как проверку, подключение, подтверждение права на вознаграждение или восстановление аккаунта.

После подтверждения разрешения расходующий адрес может использовать

transferFrom
для перевода токенов в пределах разрешенной суммы.

Подпись Permit может предоставить аналогичные полномочия без немедленной ончейн-транзакции одобрения со стороны жертвы.

Пользователям следует проверять контракт токена, адрес расходующего лица, сумму разрешения, сеть и назначение каждого разрешения или Permit.

Для отмены разрешения ERC-20 нельзя вводить сид-фразу или приватный ключ в приложение.

Мошенничество с переводом токенов

Мошенники могут отправлять неизвестные токены ERC-20 в кошелек без разрешения владельца.

Название, символ или метаданные токена могут содержать вводящий в заблуждение веб-сайт или утверждение.

Переход на рекламируемый сайт может привести к предоставлению вредоносных разрешений или подписанию опасных сообщений.

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

Пользователям следует копировать проверенные адреса из надежных источников, а не выбирать адрес назначения только по совпадающим первым и последним символам.

Для получения неизвестного токена владельцу кошелька не нужно взаимодействовать с ним.

Как разработчикам реализовать ERC-20

Разработчикам, как правило, следует начать с проверенной и активно поддерживаемой реализации.

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

Создание предложения должно быть явным и защищенным надлежащим контролем доступа.

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

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

Если приложение поддерживает такие активы, интеграции также следует тестировать с токенами, возвращающими

false
или не возвращающими значение, взимающими комиссию за перевод, ребейзинговыми, приостановленными и поддерживающими обратные вызовы.

Как пользователям оценить токен ERC-20

Сначала проверьте сеть блокчейна и полный адрес контракта токена.

Затем изучите текущее предложение, заявления о максимальном предложении и полномочия на выпуск.

Проверьте права администратора, возможность приостановки, заморозки и блокировки адресов, комиссии и права на обновление.

Установите, обеспечен ли токен другим активом и как работает его погашение.

Изучите комиссии за перевод, поведение при ребейзинге, ограничения и необычные эффекты для кошелька.

Проверьте аудиты, верифицированный исходный код и историю инцидентов, не считая аудит гарантией.

Изучите концентрацию держателей, доступную ликвидность и условия, при которых ликвидность может исчезнуть.

Разберитесь в реальном источнике спроса или доходности, а не полагайтесь на брендирование токена.

Проверяйте разрешения до и после взаимодействия с незнакомыми смарт-контрактами.

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

Пример перевода ERC-20

Предположим, Алисе принадлежит 500 единиц токена ERC-20, и она хочет отправить Бобу 75 единиц.

Кошелек Алисы подтверждает правильность блокчейна, контракта токена, адреса получателя, суммы и комиссии за транзакцию.

Кошелек отправляет транзакцию с вызовом функции токена

transfer
.

Контракт токена проверяет, есть ли у Алисы не менее 75 единиц.

Он уменьшает баланс Алисы до 425 единиц и увеличивает баланс Боба на 75 единиц.

Контракт создает событие

Transfer
, содержащее адреса Алисы и Боба, а также количество переведенных токенов.

Валидаторы Ethereum включают транзакцию в блок, а узлы независимо проверяют изменение состояния.

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

Пример разрешения ERC-20

Предположим, Алиса хочет, чтобы контракт хранилища внес от ее имени 100 единиц токена ERC-20.

Сначала Алиса проверяет адрес контракта хранилища и токен, который он будет расходовать.

Она вызывает

approve
и предоставляет хранилищу разрешение на 100 единиц.

Контракт токена записывает разрешение и создает событие

Approval
.

Затем Алиса вызывает функцию депозита хранилища.

Хранилище использует

transferFrom
, чтобы переместить 100 единиц с баланса Алисы в хранилище.

Перед выполнением перевода контракт токена проверяет баланс Алисы и разрешение хранилища.

После перевода использованное разрешение обычно уменьшается в соответствии с реализацией токена.

Распространенные ошибки при работе с ERC-20

Распространенная ошибка — определять токен только по названию или символу.

Другая ошибка — считать, что у всех токенов ERC-20 18 десятичных знаков.

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

Четвертая ошибка — думать, что отключение кошелька отзывает разрешения на токены.

Пятая ошибка — игнорировать логическое возвращаемое значение или нестандартное поведение переводов токенов.

Шестая ошибка — зачислять депозит токена с комиссией за перевод по запрошенной, а не фактически полученной сумме.

Седьмая ошибка — считать

totalSupply
доказательством постоянного ограничения предложения.

Восьмая ошибка — считать соответствие ERC-20 доказательством наличия обеспечения или стоимости погашения.

Девятая ошибка — подписывать Permit, не проверив расходующий адрес, сумму и срок действия.

Десятая ошибка — считать аудит или верифицированный исходный код гарантией того, что токен не может перестать работать.

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?

Это

totalSupply
,
balanceOf
,
transfer
,
allowance
,
approve
и
transferFrom
.

Какие события определяет ERC-20?

Стандарт определяет события

Transfer
и
Approval
.

Обязательны ли 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 для взаимозаменяемых токенов смарт-контрактов.

Он определяет общие методы проверки предложения и балансов, перевода токенов и предоставления делегированных полномочий на расходование.

События

Transfer
и
Approval
позволяют криптоприложениям отслеживать перемещение токенов и разрешения.

Необязательные функции метаданных предоставляют название токена, символ и настройку десятичных знаков, но эти сведения не подтверждают подлинность.

Стандарт не определяет, как создается предложение, обеспечены ли токены, кто контролирует администратора и имеет ли актив финансовую ценность.

Расширения могут добавлять подписанные разрешения Permit, голосование, приостановку, лимиты, обратные вызовы, функции хранилищ, стандартизированные ошибки и другие возможности.

Разрешения остаются одним из главных рисков для пользователей: вредоносный расходующий адрес может использовать активное разрешение через

transferFrom
.

Разработчикам необходимо учитывать возвращаемое значение

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

Пользователям следует проверять адреса контрактов и разрешения, выяснять, кто уполномочен выпускать токены и обновлять контракт, а также изучать обеспечение и экономическую модель токена.

Совместимость ERC-20 создает общий технический язык, но не заменяет безопасность смарт-контрактов, внимательную проверку транзакций и самостоятельный финансовый анализ.
Откат или возможность?
Откат или возможность?Откат или возможность?
Почему BTC ETF привлекли 2,4 млрд $ при ликвидациях

В тренде

Трендовые криптовалюты, которые в настоящее время привлекают значительное внимание рынка

Недавно добавленные

Криптовалюты недавно внесенные в листинг и доступные для торговли