Існуючі стандарти ERC та що варто про них знати
CryptoHacker говорить про різні види стандартів ERC, їх особливості та існуючі імплементації.
Блокчейн-індустрія розвивається з астрономічною швидкістю, і на шляху цього розвитку неминуче виникають проблеми, які необхідно вирішувати. Як зазначалося в попередній статті, введення стандарту ERC-20 стало переломною подією в криптовалютному світі. Простота платформи Ethereum, відкритий код і наявність безлічі сервісів привели до формування і поширення тисяч нових токенів.
У попередній статті згадувалися проблеми, які виникли під час використання традиційного стандарту ERC-20. Однією з найбільш серйозних вразливостей виявилася відсутність регулюючого механізму відправки токенів, створених на основі стандарту 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. Почасти це викликано популярністю другого і недостатньою обізнаністю про перший, а також недовірою творців проектів до інших варіантів стандартів. Важливим фактором є і те, що згадані баги досить рідкісні і сама мережа 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, для використання в різних проектах з децентралізації.
Обробка: Vinci