ERC20 — стандарт для выпуска токенов на блокчейне Ethereum, обычно используется для проведения ICO.
ERC расшифровывается как Ethereum Request for Comments, то есть обсуждаемое решение для Эфириума. 20 — потому, что это был 20-й вопрос для обсуждения по порядку. Сначала ERC-20 был неофициальным соглашением между разработчиками, но сейчас является стандартом.
Чтобы “смарт-контракт управления токенами” соответствовал стандарту ERC-20, он должен:
- При вызове функции totalSupply(), то есть отправке такого сообщения смарт-контракту, сообщать общее количество выпущенных монет.
- На balanceOf(address _owner) сообщать количество токенов на адресе _owner (вместо _owner нужно указать адрес).
- При вызове transfer(address _to, uint256 _value) отправить с адреса вызывающего сумму _value на адрес _to.
- При вызове transferFrom(address _from, address _to, uint256 _value) отправить с адреса _from на адрес _to количество токенов _value. У вызывающего должно быть разрешение на перевод средств от владельца адреса _from, которое устанавливается следующей функцией.
- При вызове approve(address _spender, uint256 _value) передать право пользователю с адресом _spender переводить с адреса вызывающего функцию количество токенов _value. Используется для передачи права распоряжаться токенами.
- При вызове allowance(address _owner, address _spender) сообщать, сколько монет _owner разрешил переводить со своего счёта пользователю _spender.
- Включать в свой смарт-контракт переменные name (полное название токена), symbol (короткое название токена) и decimals (сколько знаков после запятой учитывается в количестве).
- Вызывать два события Transfer (при любом перемещении токенов) и Approval (при передачи права перевода чужих токенов).
Это все правила стандарта. То есть, если вы знаете, что какой-то токен соответствует стандарту ERC-20, вы можете пообщаться со смарт-контрактом, который им управляет, с помощью этих команд. Команд может быть больше, но вышеперечисленные должны присутствовать все, и отвечать на них токен должен так, как велит стандарт.
Но стандарт нужен не для людей, а для машин, ведь токены ERC-20 очень легко подключать к биржам, кошелькам, обменникам и другим автоматизированным системам. Не нужно разбираться и объяснять скрипту биржи, как переводить токены со счёта на счёт для каждого нового токена — достаточно объяснить один раз, а потом будут использоваться те же самые методы.
Если привести аналогию, представьте, что не существовало бы стандарта для органов управления автомобилем. Каждый раз, садясь в новую машину, вы бы искали педали газа и тормоза, а они могли быть на руле, или над коленями. Вместо руля мог быть джойстик, а поворотники включались бы кнопками на подлокотниках. Для каждой машины приходилось бы учиться водить заново. К счастью, существуют стандарты, благодаря которым водители не ощущают особого дискомфорта при смене автомобиля.