ERC-721
ERC-721 (англ.Ethereum Request for Comments, «Запрос комментариев Ethereum» #721) — стандарт смарт-контрактов в блокчейне Ethereum, предназначенный для создания невзаимозаменяемых токенов (NFT). Данный стандарт создан Уильямом Энтрикеном, Дитером Ширли, Джейкобом Эвансом и Настасьей Сакс в 2018 году, чтобы преодолеть ограничения интерфейса ERC-20, облегчить создание NFT и обеспечить безопасную передачу этих уникальных активов и владение ими.
Особенности ERC-721
В отличие от более общего протокола ERC-20, ERC-721 содержит набор инструкций по созданию уникальных токенов. Стандарт предусматривает, что созданные на нём цифровые активы существуют в единичном экземпляре и не могут быть обменены один к одному (как обычные токены или монеты), поскольку обладают неповторимыми свойствами и могут быть привязаны к конкретному собственнику.
В контексте Web3 ERC-721 предоставляет платформу для создания децентрализованных приложений, которые используют NFT для различных целей, от виртуальных миров до платформ децентрализованных финансов (DeFi).
Стандарт ERC-721 написан на языке Solidity и состоит из набора функций, которые разработчики могут реализовать в своих смарт-контрактах для создания токенов с уникальными метаданными, что делает их отличимыми друг от друга.
На блокчейне Decimal реализована собственная продвинутая версия этого стандарта — DRC-721, обладающая более расширенным функционалом.
Характеристики токенов ERC-721
- Имя токена. Каждый токен ERC-721 имеет поле имени, которое указывает имя токена для внешних приложений или контрактов.
- Право собственности. Шаблон токена имеет поле функций, которое определяет право собственности на базовый токен и дает указания о том, как передать это право собственности.
- Отслеживание токенов. Шаблон токена имеет поле «tokenOfOwnerByIndex», которое позволяет разработчикам отслеживать токены с помощью уникального идентификатора.
Функции смарт-контракта ERC-721
balanceOf
— возвращает баланс адреса.ownerOf
— возвращает адрес владельца токена.safeTransferFrom
— отвечает за перенос токена с одного адреса на другой с проверками, чтобы убедиться, что получатель может принять токен, и тот не сгорит или не потеряется.transferFrom
— перевод токена с одного адреса на другой (нерекомендуемая функция). Функция отвечает за указание правильного адреса получателя.approve
— одобрить любой другой адрес для отправки транзакции со счета владельца токена на любой другой аккаунт.setApprovalForAll
— разрешить или запретить любому адресу (в основном кошелькам и биржам) отправлять все токены с адреса владельца на любой другой адрес.getApproved
— возвращает адрес, по которому разрешено передавать токен владельцам. Возвращает 0, если адрес не задан.isApprovedForAll
— возвращает true, если данный оператор (любой адрес) одобрен владельцем.