ERC-721

Материал из Decimal Wiki
Перейти к навигации Перейти к поиску
Пример кода смарт-контракта NFT стандарта ERC-721 на основе библиотеки OpenZeppelin.

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

См. также