Блокчейн-індустрія розвивається з астрономічною швидкістю, і на шляху цього розвитку неминуче виникають проблеми, які необхідно вирішувати. Введення стандарту ERC-20 стало переломною подією в криптовалютному світі. Простота платформи Ethereum, відкритий код і наявність безлічі сервісів призвели до формування і поширення тисяч нових токенів.
Однією з найбільш серйозних вразливостей виявилося відсутність регулюючого механізму відправки токенів, створених на основі стандарту ERC-20, на інші адреси, які цей стандарт не підтримують. Всі передані таким чином токени згоряють.
Детальніше цей механізм можна описати так: користувачі, які використовують у контракті функцію під назвою transfer при відправці монет ERC-20 контракти, які не очікують надходження та не розпізнають входячі токени, втрачають свої кошти, так як вони просто йдуть в нікуди. Ця функція відрізняється від функції автоматичної передачі transferFrom, введеної раніше, яка не призводить до втрати коштів. Стандарт ERC20 використовує обидві функції — transfer і transferFrom. Підсумком обговорення даної проблеми в мережі розробників GitHub стало створення інших видів стандартів для смарт-контрактів.
Стандарт ERC-223
У 2017 році користувач з ніком Dexaran виклав у відкритий доступ GitHub код пропозиції нового стандарту ERC-223, який був покликаний вирішити описану вище проблему невідповідності. Елегантне рішення містило в собі об’єднання двох функцій transfer і transferFrom стандарту ERC-20 в одну функцію під назвою transfer, але тепер з трьома параметрами — address _to, unit _value, bytes data. Ці параметри дозволили виключити можливість неправильного використання функції користувачами.
Іншим важливим удосконаленням стало введення функції tokenFallback, яка готує контракт для прийняття будь-якого відправленого виду монет і запобігає їх відправку, якщо не отримує відповіді від адреси одержувача. На даний момент платформа Ethereum має схожу функцію для всієї мережі — модифікатор контрактів payable, який готує контракти до отримання монет Ether.
На ділі імплементація стандарту ERC-223 йде повільно, і більшість проектів продовжують користуватися стандартом ERC-20. Це викликано популярністю ERC 20 і недостатньою обізнаністю про ERC-223, а також недовірою творців проектів до інших варіантів стандартів. Важливим фактором є й те, що згадані баги досить рідкісні і сама мережа Ethereum тепер є додатковим захисним фактором від такого роду помилок.
Тим не менше серед проектів, що використовують стандарт ERC-223, можна відзначити кілька цікавих: AmigoCoin, CargoCoin, Expercoin.
Стандарт ERC-777
Створену в кінці 2017 року нову пропозицію стандарту було покликано вирішити відразу кілька завдань. Завдяки новій функції tokenReceived, яка дозволяла не використовувати повторну функцію схвалення (second verifying transaction), час транзакції скорочувалася в два рази. Також в даному стандарті з’явилася можливість позначати неблагонадійні або несумісні адреси, які можуть бути пов’язані з хакерами або шахраями. Даний стандарт вирішив і проблему несумісності шляхом використання методу зворотної сумісності, що зробило його крос-стандарт сумісним на платформі Ethereum.
Серед мінусів цього досить нового стандарту можна назвати його код, який все ще зазнає змін, а також створення великої кількості взаємозалежних викликів контрактів у разі його використання, що може створити проблеми з безпекою в майбутньому. Одним з проектів, що використовують токен цього стандарту, є ORCA.
Стандарт ERC-721
Цей стандарт з’явився в 2017 році завдяки грі Cryptokitties, де можна обмінюватися і збирати колекції віртуальних кошенят, що володіють унікальними генотипами або 256-бітними беззнаковими кодами. Незвичайним у цій грі стало те, що кожне кошеня було унікальною криптовалютою різної ціни, в залежності від його популярності і рідкості.
Стандарт ERC-721 став першим прикладом non-fungible tokens (NFT) — унікальних або невзаємозамінних токенів, який був запропонований для електронних предметів колекціонування. Fungibility — це характерна особливість валюти, кожна грошова одиниця якої може бути замінена іншою точно такою же. Наприклад, 5 або 20 доларів гарні точно так само, як і будь-які інші 5 і 20 доларів.
Всі фіатні гроші є взаємозамінними, а також подільними. Друге означає, що валюта має подільність до певної межі. Наприклад, у долара це 1/100, що означає, що кожен долар ділиться на 100, в його випадку центів.
Функції approve і takeOwnership, а також два види подій: Transfer і Approval роблять транзакції більш захищеними від випадкової втрати коштів, як у випадку зі стандартом ERC-20.
Даний вид стандарту зараз зазнає справжній вибух використання, не тільки через популярності криптокотят, але ще й тому, що багато критики побачили важливість створення унікальних токенів не тільки для процесу колекціонування, але й для застосування в реальному житті, наприклад, для нерухомості, реальних цінних предметів або захисту інтелектуальної власності.
Серед інших проектів, створених на основі стандарту ERC-721, варто згадати: CryptoPunks, Decentraland, Rare Pepes, WePower і Cryptocup.
Стандарти ERC-821 і ERC-875
Ставшіпродовженням стандарту ERC-721, стандарти ERC-821 і ERC-875, кожен по-своєму, підійшли до поліпшення смарт-контрактів для невзаємозамінних токенів.
ERC-821 має таку ж, як у ERC-777 функцію transferAndCall, яка дозволяє контрактам реагувати на вхідні токени. Також він запропонував використовувати більш конкретизований неймінг, щоб не викликати плутанини між різними видами предметів колекціонування. Сигнали сумісності з усіма іншими стандартами зараз знаходяться в розробці.
ERC-875 запропонував можливість відправки кількох NFT (non-fungible tokens) в одній транзакції, за допомогою присвоєння кожному з них персонального індексу. Стандарт також передбачає безпечні відправку і обмін токенів, як і у випадку з ERC-721.
Висновок
На даний момент можна виділити два основних типи стандартів. До першого ставляться всі пропозиції, створені для поліпшення ERC-20, а до другого стандарти що займаються уніфікацією NFT або електронних предметів колекціонування.
Кожен стандарт вимагає часу на розробку, а також перевірку, схвалення та імплементацію співтовариством платформи. Ці і багато інших стандартів платформи Ethereum виступають рушіями розвитку всієї криптоекосистеми і покликані зробити взаємодію в мережі легшою, безпечнішою і дешевшою.
Можливо, вже незабаром ми побачимо каталогізацію сумісних і перевірених стандартів ERC, для використання в різних проектах по децентралізації.