Погрузитесь в изучение мира криптовалют

Что такое токен ERC20 на Ethereum?

Стандарт ERC20 для токенов Ethereum

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

Этот стандарт используется для создания сменных токенов – то есть токенов, которые все одинаковы. Например, Bitcoin или Ethereum являются сменными токенами, евро или доллары являются сменными деньгами, так как каждый токен или каждый евро или доллар имеет одинаковую стоимость. Антоним сменного токена – не сменный токен (NFT), который, напротив, имеет свою собственную, единичную стоимость как уникальное цифровое произведение. 

ERC20 был самым успешным стандартом во время “пузыря” ICO 2017 года – в то время почти все криптовалютные сборы фондов проводились именно на этом стандарте. С тех пор при выпуске новых токенов используются два стандарта: не только ERC20, но и ERC721, который предназначен для NFT (non-fungible token).

ERC20 был предложен в ноябре 2015 года разработчиком Ethereum Фабианом Фогельштеллером. Полный список доступных токенов ERC20 можно найти по этому адресу.

Операционные расходы за транзакции ERC20 и Ether (ETH)

Как это уже было представлено в этой статье, для оплаты транзакционных комиссий необходимо использовать газ, поэтому для отправки токенов ERC20 из одного кошелька в другой или для отправки средств в смарт-контракт необходимо оплатить нативный токен Ethereum в Ether.

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

Стандарт определяет такие функции, как:

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

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

Каждый пользователь указан публичным ключом Ethereum:

В этой таблице – список держателей и соответствующий баланс их токенов. Именно так смарт-контракты узнают, сколько у вас токенов, например, Tether (USDT), Chainlink (LINK) или Uniswap (UNI).

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

Изображения предоставлены Ethereum.org

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

Преимущество стандарта ERC20 следующее: он даёт возможность предсказать, что именно токены ERC20 могут делать, а что нет. Это позволяет создать чёткий периметр для разработки таких приложений, как криптокошельки, функционирующие с токенами ERC20 (например, Metamask или Ledger), или блокчейн-эксплореры (например, Etherscan).

ERC20 также облегчает управление токенами одного стандарта для децентрализованных приложений (dAPP), таких как Uniswap, AAVE, Sushiswap, 1inch и др.

ERC20 также ограничивает количество ошибок и упрощает аудит компьютерного кода, используемого для заключения контрактов. Каждый авторитетный токен ERC20 проходит через аудит компаний, которые специализированы на безопасности смарт-контрактов (например, Certik).

Несколько спецификаций стандарта ERC20 для гиков

А вот список функций и событий, которые токен ERC20 способен обрабатывать:

  • [name] – показывает имя токена (например, Chainlink или Uniswap или VariabL Contribution Token) ;
  • [symbol] показывает символ маркера (например, “LINK” – символ маркера Chainlink, “UNI” – символ Uniswap);
  • [decimals] показывает количество знаков после запятой, которое будет учитываться для маркера. В контрактах ERC20 балансы токенов обрабатываются без десятичных знаков – например, для пользователя с 1 токеном с 18 знаками после запятой, функция balanceOf (которая описана ниже) покажет 100000000000000000000. Как правило, для токена ERC20 выбираются 18 знаков после запятой.
  • [totalSupply] показывает общее количество имеющихся токенов;
  • [balanceOf] показывает количество токенов, находящихся на счету;
  • [allowance] показывает количество токенов, который пользователь может удалить из контракта на токены;
  • [transfer] – это функция, которая позволяет учетной записи с токенами отправлять токены на другую учетную запись
  • [transferFrom] позволяет передавать токены с одного адреса на другой, при этом адрес, отправляющий транзакцию, не должен принадлежать владельцу токенов
  • [approve] – функция, позволяющая владельцу контракта на токен одобрить снятие средств на определенную сумму с определенного счета (изменяет [allowance] этого счета).

Эти функции также приводят к двум событиям:

  • -Transfer- se déclenche pour chaque appel à la fonction [transfer] ou [transferFrom]
  • -Approval- se déclenche à chaque appel à la fonction [approve]

Как видите, стандарт ERC20 — это своего рода стандартизированный API, призванный облегчить работу разработчиков

Отдельное спасибо Ethereum.org за документацию, предоставленную для этой статьи.