Что такое токен ERC-20
В чате «ERC-20» часто значит «монета, которую потом можно будет продать». В контракте это список балансов: имя, короткий символ, десятичность и объём. Кошельки и другие контракты читают список через один и тот же набор функций. Цены в списке нет, и в каталог токен сам не попадает. Этот текст не финансовая рекомендация.
Future Constructor выпускает такой контракт из вашего кошелька. Комиссия сервиса — $6 в Ethereum и $3 в Polygon, BNB Chain, Arbitrum и Base. Газ отдельно, и он меняется. Учебной сети нет: подпись идёт в живой сети и она окончательна.
Что такое ERC-20
ERC-20 — общий интерфейс, а не монета сама по себе. Кошелёк задаёт любому такому контракту одни и те же вопросы: как тебя зовут, сколько единиц существует, сколько лежит на этом адресе и переведёшь ли единицы, если попросить. Ethereum, Polygon, BNB Chain, Arbitrum и Base пользуются этим интерфейсом. Контракт, который вы выпускаете, всё равно живёт в той одной сети, где вы подписали.
Слово «токен» здесь — единицы, которые считает контракт. Это не цена, не доля в компании и не покупатель. Если нужна одна фраза для людей, которые будут держать единицы, напишите, что они с ними делают. Если в фразе будущая цена — перепишите. Контракт такое обещание не хранит, и эта страница его не даёт.
Знакомое имя не делает контракт известным активом. Личность токена — сеть плюс адрес. Два контракта могут носить один символ и не иметь друг к другу отношения.
Стандартные функции
Эти функции не набирают руками. Их вызывает кошелёк. Вместе они и есть открытая поверхность обычного ERC-20. Суммы — целые числа минимальных единиц, а не то число, которое человек произносит вслух.
| Функция | Что делает |
|---|---|
name | Возвращает имя, которое вы подписали. |
symbol | Возвращает короткий символ, который вы подписали. |
decimals | Возвращает, сколько знаков стоит справа от запятой. |
totalSupply | Возвращает, сколько минимальных единиц существует. |
balanceOf | Возвращает, сколько единиц лежит на одном адресе. |
transfer | Переводит единицы с адреса вызывающего на другой адрес. |
approve | Разрешает другому адресу перевести не больше этого числа ваших единиц. |
allowance | Возвращает, сколько единиц ещё покрывает это разрешение. |
transferFrom | Переводит единицы по разрешению из approve. |
approve — функция, которую пропускают. Другой контракт не заберёт единицы с вашего адреса, пока вы не поставили лимит. Лимит — число сырых единиц, не сумма в долларах. Адрес и размер выбираете вы. Ничего не двигается, пока тот адрес не вызовет transferFrom. Лимит на адрес, который вы не узнаёте, всё равно можно потратить.
Десятичность и объём
Форма спрашивает целое число токенов и десятичность от 0 до 30. Контракт хранит объём в минимальных единицах: умножает введённое число на 10 в степени десятичности. Обычно ставят 18, и форма открывается с этим значением. Десятичность 0 значит, что дробную часть одного токена контракт не представит.
| Вы вводите | Десятичность | Единицы в контракте |
|---|---|---|
| 1000 | 18 | 1000 × 10^18 |
| 1000 | 6 | 1000 × 10^6 |
| 1000 | 0 | 1000 |
Кошелёк, который читает decimals, делит баланс перед показом: 1000 при десятичности 18 выглядит как 1000. Экран, который печатает сырое целое, показывает гораздо более длинное число. Объём не вырос. Экран пропустил десятичность.
transfer считает в тех же сырых единицах. Вызов, который отправляет 1 при десятичности 18, двигает 0,000000000000000001 токена, а не один токен. Кошелёк переводит число, которое вы ввели. Скрипт, который забыл про перевод, — нет.
Одно и то же введённое число при разной десятичности — не один размер в сети. 1 при десятичности 18 — это 10^18 единиц. 1 при десятичности 6 — это 10^6 единиц. Десятичность выбирают до подписи. Обычный контракт потом её не меняет.
Если умножение не помещается в число контракта, выпуск не проходит. Так обычно случается, когда огромный объём сочетают с высокой десятичностью. Форма ждёт человеческое число, а не уже умноженное целое.
Что входит в токен Constructor
Форма создания выпускает этот обычный токен. Вы задаёте имя, символ, десятичность, объём и адрес, который получит объём. Код вы не пишете. Имя и символ — латиница и цифры. Символ — от 2 до 11 знаков. Они остаются теми, что вы подписали.
Весь объём выпускается один раз, на адрес в поле владельца. Поле с самого начала заполнено кошельком, который подписывает. В обычном контракте это получатель объёма, а не роль, которая сможет выпустить токены ещё раз. Дополнительного выпуска нет, сжигания нет, паузы нет, и с перевода комиссия не снимается. Переводы другим адресам меняют, кто держит единицы.totalSupply от этого не меняется.

О коде: построено на OpenZeppelin Contracts v5; исходный код фабрики верифицирован на Sourcify; независимого аудита не было. Верификация на Sourcify значит, что опубликованный исходник фабрики совпадает с кодом в сети. О цели вашего токена она ничего не говорит. Риск остаётся на вас.
Отдельная расширенная форма может добавить функции, которых в обычном токене нет: выпуск администратором, сжигание администратором, паузу переводов, комиссию с перевода или разделение начального объёма. Это другой код, и это не выпуск за $6 или $3, о котором здесь речь. Комиссия той формы — сумма, которую форма показывает до подписи. Эта страница её не называет.
На обычной форме платят два разных счёта. Комиссия сервиса — $6 в Ethereum и $3 в Polygon, BNB Chain, Arbitrum и Base. Она не возвращается. Форма переводит сумму в долларах в монету сети через Chainlink. Газ — плата самой сети, кошелёк показывает его ещё раз в момент подписи. Комиссия сервиса $3 не задаёт газ и не выбирает сеть за вас. Какая это сеть и какой монетой платится газ — в тексте как выбрать сеть.
После выпуска
На руках остаётся адрес контракта в той одной сети, которую вы выбрали. Объём лежит на адресе, который вы указали. Дальше переводы идут в этот контракт токена. Через фабрику они больше не проходят.
У задеплоенного токена есть публичная страница: сеть, адрес контракта и объём. Это не цена и не листинг. Путь страницы — /ru/token/{chain}/{address} и /en/token/{chain}/{address}. В кошелёк токен добавляют по этому адресу, и кошелёк должен стоять в той же сети. Пока этого нет, кошелёк может ничего не показать, хотя объём в контракте уже лежит.
Людям отправляют название сети вместе с адресом. Имени недостаточно. То же имя в другой сети было бы другим контрактом: другая подпись, другая комиссия сервиса и другой газ.
Пул, каталог и заявка на биржу — шаги, которые вы делаете сами и позже, если они входят в план. Выпуск их не подаёт, и эта страница не называет площадку. Маршрут из десяти пунктов, от фразы о цели до адреса: как запустить токен с нуля.
Частые ошибки
- Читать введённое число как сырой счётчик единиц. Сеть хранит объём × 10^десятичность.
- Поставить десятичность 0 и ждать, что уйдёт дробная часть одного токена.
- Отправить из скрипта
1и ждать целый токен, когда десятичность равна 18. - Ждать, что после обычного выпуска изменятся имя, символ, десятичность или объём.
- Принять комиссию сервиса $6 или $3 за газ. Газ отдельно, и сеть за $3 всё равно живая.
- Отправить в чат имя без сети и без адреса.
- Считать, что один выпуск существует во всех пяти сетях. Вторая сеть — второй контракт.
- Поставить approve на адрес, которым вы не собирались пользоваться, или ввести сид-фразу на сайт или в личный чат. Constructor её не просит.
- Описывать токен будущей ценой. В контракте цены нет. Это не финансовая рекомендация.
Куда дальше
Остальные материалы лежат в разделе Learn. До выбора одной из пяти сетей откройте как выбрать сеть. Когда фраза о цели уже есть — как запустить токен с нуля. Что незнакомый человек сверяет по адресу — в тексте как вызвать доверие к своему новому токену.
Живые страницы сетей:
Когда имя, десятичность, объём и сеть уже решены, откройте форму.
Вопросы
ERC-20 бывает только в Ethereum?
Интерфейс написан для Ethereum. Те же функции работают в других сетях EVM. Future Constructor выпускает контракт в Ethereum, Polygon, BNB Chain, Arbitrum и Base. Сам контракт всё равно живёт только в одной из них.
Почему кошелёк показывает не то число, что сырой баланс?
Контракт хранит целые минимальные единицы. Кошелёк делит их на 10 в степени десятичности и уже потом показывает баланс. При десятичности 18 сырой баланс 1000 × 10^18 выглядит как 1000.
Можно ли после обычного выпуска поменять имя или объём?
Нет. Обычный контракт выпускает объём один раз, на адрес, который вы указали. В нём нет функции, которая довыпустит токены, сожжёт их, остановит переводы или изменит имя, символ и десятичность.
Выпуск ERC-20 назначает цену или ставит токен в каталог?
Нет. Выпуск создаёт контракт и публичную страницу: сеть, адрес и объём. Пул, каталог и заявку на биржу, если они входят в план, делаете вы сами и позже. Этот текст не финансовая рекомендация.
Зачем нужна функция approve?
approve разрешает другому адресу перевести не больше указанного числа ваших единиц. Число — в сырых единицах, не в долларах. Ничего не уходит, пока тот адрес не вызовет transferFrom. Лимит ставьте только адресу, которым вы сами собираетесь пользоваться.
Был ли независимый аудит?
Построено на OpenZeppelin Contracts v5; исходный код фабрики верифицирован на Sourcify; независимого аудита не было. Риск остаётся на вас.
Если выпустить в одной сети, тот же токен появится в остальных?
Нет. Вторая сеть — второй контракт: ещё одна подпись, ещё одна комиссия сервиса, ещё один газ и другой адрес. В чат отправляют название сети вместе с адресом.
Эта страница — финансовая рекомендация?
Нет. Здесь разобрано, как обычный ERC-20 считает балансы. Текст не говорит, сколько токен будет стоить, и не советует его выпускать.
Future Constructor — технический инструмент. Он выпускает обычный ERC-20 из вашего кошелька: комиссия сервиса $6 в Ethereum и $3 в Polygon, BNB Chain, Arbitrum и Base. Газ сети оплачивается отдельно и меняется. Контракты собраны на OpenZeppelin Contracts v5.4.0 и независимый аудит не проходили. Этот текст не является финансовой, инвестиционной или юридической рекомендацией. За сценарий токена и за законы вашей страны отвечаете вы. Комиссия сервиса не возвращается. Транзакции окончательны.