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, если данный оператор (любой адрес) одобрен владельцем.