ERC-721 — стандарт, на котором держатся NFT — что это простыми словами | IceAI

ERC-721 — стандарт, на котором держатся NFT

ERC-721: какие функции обязан иметь NFT-контракт, зачем нужен tokenURI и почему setApprovalForAll отдаёт дренажеру всю коллекцию.

Обновлено: 2026-11-01

В феврале я покупала NFT из коллекции на 10 000 картинок. На последнем шаге кошелёк попросил подписать setApprovalForAll — разрешение распоряжаться всеми токенами коллекции. Я закрыла окно и полезла читать контракт. Внутри оказался ERC-721: набор функций, по которому маркетплейс понимает, как показывать и продавать токен.

ERC-721 — стандарт, на котором держатся NFT Контракт коллекции ERC-721 #0001 · свой tokenURI #0002 · свой tokenURI #0003 · свой tokenURI Один контракт — тысячи токенов с разными номерами

Что обязан уметь контракт

Стандарт зафиксировали в EIP-721 в январе 2018 года. До него каждый проект писал NFT-контракт по-своему, и площадкам приходилось разбираться с каждым отдельно. Минимум такой: ownerOf(tokenId) — кто владеет токеном, balanceOf(owner) — сколько токенов у адреса, transferFrom — перевод, approve и setApprovalForAll — права для маркетплейса, tokenURI — ссылка на метаданные. Плюс события Transfer и Approval: по ним кошельки собирают историю.

Один контракт — вся коллекция, а не один токен. У каждого экземпляра свой номер tokenId: от 1 до 10 000. Владелец хранится в маппинге внутри контракта, поэтому перевод NFT — это новая строка в смарт-контракте, а не перемещение файла с картинкой.

tokenURI: где на самом деле живёт картинка

Функция возвращает ссылку на JSON с полями name, description, image и attributes. Площадка читает файл и рисует карточку. Если ссылка ведёт на сервер проекта, картинка живёт ровно столько, сколько живёт домен. Если на IPFS — пока кто-то платит за пиннинг. Я видела коллекции, где через год после минта вместо изображения открывался пустой квадрат: домен не продлили.

Approve и setApprovalForAll

approve выдаёт права на один токен по его id. setApprovalForAll — сразу на все токены контракта, и именно его просит маркетплейс при первом выставлении лота. Ошибка дорогая: дренажер, получивший такое разрешение, выводит всю коллекцию одним вызовом, а газ платит владелец. Проверить и отозвать права можно на revoke.cash или в разделе Approvals у Etherscan. С тех пор я открываю его раз в месяц.

Чем отличается от ERC-1155

В 721 каждый токен уникален и имеет собственный tokenURI. В 1155 один контракт держит много типов: у каждого id своё количество копий, метаданные общие на тип. Тысяча одинаковых мечей для игры — это 1155, уникальные картинки — 721. Для взаимозаменяемых монет есть ERC-20: там у токена нет номера вообще.

Сколько стоит выпуск

Минт одного токена — 50 000–100 000 газа. При 20 gwei: 100 000 × 20 = 2 000 000 gwei, то есть 0,002 ETH и около 6 долларов при курсе 3 000. Деплой контракта — порядка 2 000 000 газа, 0,04 ETH или примерно 120 долларов. Роялти по EIP-2981 обычно 5%: с продажи за 1 ETH автору уходит 0,05 ETH, но площадка вправе их не платить — Blur сделал роялти необязательными в 2023 году.

Коротко

  • ERC-721 — стандарт уникальных токенов, EIP-721, январь 2018.
  • Один контракт = одна коллекция, у токенов номера tokenId.
  • tokenURI ведёт на JSON с картинкой; без пиннинга метаданные пропадут.
  • setApprovalForAll открывает всю коллекцию — проверяйте и отзывайте.
  • 721 — уникальные экземпляры, 1155 — тиражи, ERC-20 — взаимозаменяемые монеты.
  • Минт около 6 долларов при 20 gwei, деплой контракта около 120.

Остались вопросы? Спросите ИИ-ассистента — объяснит другими словами.

Спросить