

Ethereum заснував Віталік Бутерін у 2014 році. Платформа є відкритим ресурсом для запуску децентралізованих застосунків (DApps). Бутерін створив новий блокчейн через обмежену гнучкість протоколу Bitcoin.
Після запуску блокчейн Ethereum залучив розробників, компанії та підприємців. Це призвело до розвитку індустрії, де користувачі запускають смартконтракти та розподілені застосунки.
У статті розглядається стандарт ERC-20 — ключова основа для створення токенів. Він специфічний для мережі Ethereum, але став прикладом для інших блокчейн-стандартів на різних платформах.
В Ethereum ERC — це Ethereum Request for Comments. Такі документи визначають стандарти програмування для мережі Ethereum. Вони відрізняються від Ethereum Improvement Proposals (EIP), які, як BIP у Bitcoin, пропонують зміни протоколу. ERC встановлюють правила для зручної взаємодії застосунків і контрактів.
Авторами стандарту є Віталік Бутерін і Фабіан Фогельштеллер (2015). ERC-20 пропонує простий формат для токенів на Ethereum. Розробники, що дотримуються стандарту, використовують перевірену основу — створювати рішення з нуля не потрібно.
Нові токени ERC-20 автоматично сумісні з сервісами, які підтримують цей стандарт: програмними гаманцями, апаратними гаманцями та біржами.
Стандарт ERC-20 пізніше оформили як EIP (зокрема, EIP-20). Перехід відбувся через широке застосування. Однак назва «ERC-20» залишилася стандартною у галузі.
Токени ERC-20, на відміну від ETH, не зберігаються на акаунтах безпосередньо. Вони існують лише у контракті, який виконує роль самостійної бази даних. Контракт визначає правила токену (ім’я, символ, подільність) і веде список балансів користувачів за адресами Ethereum.
Щоб переказати токени, користувач надсилає контракту транзакцію із запитом на переказ частини балансу іншому користувачу. Наприклад, Аліса хоче переказати 5 000 токенів Бобу — вона викликає функцію у смартконтракті.
Виклик міститься у стандартній транзакції Ethereum, яка сплачує 0 ETH на адресу токен-контракту. У додатковому полі транзакції вказується, що саме Аліса хоче зробити — у цьому випадку, переказати токени Бобу.
Хоча ефір не переказується, Аліса повинна сплатити комісію в ETH, щоб транзакцію включили у блок. Якщо ETH немає, його потрібно придбати перед переказом токенів.
Після основ розглянемо структуру типового контракту ERC-20.
Контракт, що відповідає стандарту ERC-20, має містити шість обов’язкових функцій: totalSupply, balanceOf, transfer, transferFrom, approve і allowance. Додатково можна додати необов’язкові функції: name, symbol, decimal.
function totalSupply() public view returns (uint256)
Виклик цієї функції повертає загальну кількість токенів у контракті.
function balanceOf(address _owner) public view returns (uint256 balance)
Функція balanceOf приймає параметр — адресу. Після виклику повертає баланс токенів цієї адреси. Оскільки акаунти в Ethereum відкриті, будь-хто може перевірити баланс, знаючи адресу.
function transfer(address _to, uint256 _value) public returns (bool success)
Функція transfer переказує токени між користувачами. Викликаючий вказує адресу одержувача і кількість токенів.
Виклик transfer генерує подію (event transfer), яка фіксує цю транзакцію у блокчейні.
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
Функція transferFrom — альтернатива transfer для розширеної програмованості. Вона також призначена для переказу токенів, але вони можуть належати іншому користувачу, а не тому, хто викликає контракт.
Користувач може надати дозвіл іншій особі чи контракту переказувати кошти від його імені. Це зручно для сервісів із підпискою — програма може здійснювати платежі автоматично.
Ця функція генерує таку саму подію, як і transfer.
function approve(address _spender, uint256 _value) public returns (bool success)
Функція approve дозволяє обмежити кількість токенів, які смартконтракт може списати з балансу користувача. Без цієї функції існує ризик, що контракт працюватиме некоректно або буде скомпрометований і спише всі кошти.
Наприклад, якщо користувач має багато токенів і хоче налаштувати щотижневу оплату підписки, він може автоматизувати процес.
Якщо баланс перевищує потреби для підписки, через approve можна встановити ліміт. Якщо підписка коштує один токен на тиждень — ліміт двадцять токенів дозволить оплачувати протягом п’яти місяців.
У разі проблем користувач втратить лише двадцять токенів, а не весь баланс.
Виклик approve генерує подію approval, яка записується у блокчейн.
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
Функція allowance використовується разом із approve. Коли користувач дозволив контракту керувати токенами, він може перевірити, скільки токенів ще доступно для списання. Наприклад, якщо підписка використала дванадцять із двадцяти дозволених токенів, виклик allowance поверне вісім.
Обов’язкові функції описані вище. Функції name, symbol, decimal необов’язкові, але підвищують зручність для користувачів. Вони дозволяють додати ім’я токену, встановити символ (ETH, BTC, інші) і визначити подільність. Для токенів-валют це дає змогу підвищити подільність порівняно з токенами права власності.
З наведених функцій формується робочий контракт ERC-20. Користувачі можуть перевіряти загальну пропозицію токенів, баланси, здійснювати перекази й надавати дозвіл іншим DApps керувати токенами від їхнього імені.
Головна перевага ERC-20 — гнучкість. Стандарт не обмежує функціонал, розробники можуть додавати нові можливості та параметри для конкретних завдань.
Стабільні токени (прив’язані до фіатних валют) часто використовують стандарт ERC-20. Більшість основних stablecoins існують у цьому форматі.
Для фіатного stablecoin емітент зберігає резерви фіатної валюти. На кожну одиницю резерву випускається відповідний токен. Наприклад, $10 000 у сховищі — емітент створює 10 000 токенів, кожен із яких можна обміняти на $1.
Така схема легко реалізується технічно. Емітент запускає контракт із потрібною кількістю токенів і розподіляє їх користувачам, обіцяючи можливість викупу на пропорційну суму фіату.
Користувачі можуть оплачувати товари, використовувати токени у DApps чи вимагати викуп у емітента. Під час викупу емітент спалює повернуті токени та вилучає відповідну суму фіату з резерву.
Контракт цієї системи простий. Запуск стабільного токену потребує додаткової роботи щодо логістики та регуляторних вимог.
Токени-цінні папери схожі на stablecoins за структурою. Контракт може працювати однаково. Відмінність — на рівні емітента. Такі токени відображають цінні папери: акції, облігації, фізичні активи. Зазвичай вони дають долю власності у бізнесі чи активі.
Утилітарні токени — найпоширеніші в криптопросторі. Вони не мають забезпечення зовнішніми активами. Якщо токени з активами — це акції компанії, утилітарні — це програми лояльності. Вони служать конкретній функції, але не мають зовнішньої вартості. Їх використовують як ігрову валюту, «паливо» для застосунків, бонусні бали тощо.
ETH можна майнити, токени не майнять — їх емітують при створенні. Після запуску контракту розробники розподіляють токени згідно з планом.
Зазвичай розподіл відбувається через Initial Coin Offering (ICO), Initial Exchange Offering (IEO), Security Token Offering (STO). Варіації абревіатур існують, але суть однакова. Інвестори надсилають ETH на адресу контракту й отримують нові токени. Кошти йдуть на розвиток проєкту. Користувачі використовують токени або перепродають їх із прибутком у міру розвитку проєкту.
Розподіл токенів не завжди автоматизований. Краудфандингові кампанії дозволяють оплату різними цифровими валютами. Баланси розподіляють на вказані адреси.
ERC-20 — взаємозамінний токен. Кожна одиниця ідентична іншій. Користувач може обміняти токен на будь-який інший — вони однакові, як готівка чи золото.
Ця властивість оптимальна для токенів-валют. Користувачам не потрібні індивідуальні ознаки, які зробили б токен невзаємозамінним. Це могло б призвести до різної цінності й порушити функцію засобу обміну.
ERC-20 можна налаштовувати для багатьох застосувань: ігрова валюта, програми лояльності, цифрові колекції, представлення мистецтва чи прав власності.
ERC-20 популярний у криптоіндустрії. Багато бірж, гаманців і смартконтрактів вже сумісні з новими токенами. Підтримка розробників і документація широко доступні.
Ethereum має проблеми масштабування. У поточному вигляді мережа працює неефективно — транзакції під час навантаження призводять до високих комісій і затримок. Якщо токен ERC-20 запускати у період завантаження мережі, його використання буде ускладнене.
Це не унікально для Ethereum. Це типовий компроміс у безпечних розподілених системах. Спільнота планує оновлення для вирішення цієї проблеми.
Технологія не винна, але простота запуску токену — певний недолік. Створити ERC-20-токен може будь-хто, незалежно від мети.
Користувачам слід бути обережними. Серед проєктів багато пірамід та схем «Ponzi». Перед вкладенням важливо перевірити легітимність.
ERC-20 — перший і найпопулярніший стандарт токенів Ethereum, але не єдиний. З’явилися й інші — для вдосконалення чи інших цілей.
Менш поширені стандарти застосовують для NFT. Для унікальних токенів із різними властивостями це корисно. Якщо потрібно токенізувати унікальний витвір мистецтва чи ігровий актив, альтернативний контракт підходить краще.
ERC-721 використовували для DApp CryptoKitties. Контракт надає API для емісії NFT та запису метаданих (зображень, описів).
ERC-1155 — вдосконалення ERC-721 й ERC-20. Стандарт підтримує як взаємозамінні, так і невзаємозамінні токени в одному контракті.
Інші варіанти — ERC-223, ERC-621 — покращують зручність. ERC-223 впроваджує захист від випадкових переказів. ERC-621 додає функції зміни кількості токенів.
ERC-20 домінує у сфері криптоактивів багато років. Стандарт дозволяє швидко запускати контракти для різних цілей — утилітарних токенів, stablecoins. Однак ERC-20 не має деяких функцій інших стандартів. Чи змінить це індустрію — покаже час.
Токени ERC-20 — стандартизовані цифрові активи на блокчейні Ethereum, створені за технічними правилами. Відмінність від нативних криптовалют, таких як Bitcoin: ERC-20 створюють смартконтракти для використання всередині мережі Ethereum, забезпечуючи гнучку токеноміку та різні сценарії застосування.
ERC-20 працюють через смартконтракти Ethereum. Вони дотримуються стандартного протоколу для переказу токенів, відстеження балансу та затвердження операцій. Кожна транзакція фіксується у блокчейні — це гарантує прозорість, безпеку та зручний обмін.
ERC-20 визначає інтерфейс для взаємозамінних токенів у мережі Ethereum. Основні можливості: переказ токенів між адресами, механізм затвердження витрат, відстеження балансу, управління загальною кількістю токенів і логування подій. Стандарт забезпечує сумісність із гаманцями та децентралізованими застосунками.
Використовуйте смартконтракти Solidity у мережі Ethereum. Розгорніть контракт через Remix IDE або Hardhat, реалізуйте інтерфейс ERC-20 із функціями емісії та переказу, опублікуйте у основній мережі. Для розгортання потрібна оплата газу.
ERC-20 — стандарт взаємозамінних токенів Ethereum. BEP-20 — еквівалент для Binance Smart Chain. ERC-721 створює NFT (NFT) з унікальними властивостями. Головна різниця: ERC-20 — ідентичні й діляться, ERC-721 — унікальні й не діляться.
Основні ризики: вразливість смартконтракту, фішинг, крадіжка приватних ключів, шахрайські токени. Використовуйте безпечні гаманці, перевіряйте адреси контрактів, активуйте двофакторну автентифікацію, працюйте тільки з легітимними платформами — це захистить активи.











