ERC-721 NFT контракт: создание и деплой

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

erc-721nftOpenZeppelin

ERC-721 — это стандарт NFT в сети Ethereum и EVM-совместимых блокчейнах. Он нужен, когда каждому токену требуется уникальный идентификатор: коллекционные изображения, игровые предметы, пропуски, сертификаты, права доступа.

Что должно быть в ERC-721 контракте

  • name и symbol — имя и тикер коллекции
  • ownerOf(tokenId) — кто владеет токеном
  • balanceOf(address) — сколько NFT у адреса
  • transferFrom / safeTransferFrom — передача токена
  • approve и setApprovalForAll — разрешения на управление
  • tokenURI(tokenId) — ссылка на метаданные NFT

На практике чаще не пишут контракт с нуля, а используют OpenZeppelin — проверенные реализации стандартов. Это снижает риск багов и уязвимостей. 🔐

Базовый стек для создания

  • Solidity
  • Remix или Hardhat
  • OpenZeppelin Contracts
  • MetaMask
  • Testnet: Sepolia, Polygon Amoy и др.

Минимальная логика контракта

Обычно контракт наследуется от ERC721 и Ownable, а для выпуска токенов добавляется функция mint. Часто используют:

  • ERC721URIStorage — если каждому NFT нужна своя metadata URI
  • Counters или инкремент tokenId
  • onlyOwner — если минтить может только владелец контракта

Как выглядит процесс

  1. Установить зависимости OpenZeppelin
  2. Создать контракт на Solidity
  3. Реализовать конструктор с name и symbol
  4. Добавить функцию mint(address to, string memory uri)
  5. Скомпилировать контракт
  6. Задеплоить в тестовую сеть
  7. Проверить mint и отображение NFT в обозревателе/маркетплейсе

Пример структуры контракта

  • наследование от ERC721URIStorage, Ownable
  • переменная nextTokenId
  • функция safeMint(to, uri)
  • _setTokenURI(tokenId, uri)

На что обратить внимание перед деплоем ⚠️

  • Метаданные: JSON-файл должен содержать name, description, image
  • Хранение файлов: лучше IPFS/Arweave, а не централизованный URL
  • Комиссии: деплой в Ethereum mainnet дорогой, для старта часто выбирают Polygon
  • Безопасность: ограничьте mint, если не нужен публичный выпуск
  • Совместимость: используйте safeMint, чтобы токен не “завис” на контракте без поддержки ERC-721
  • Верификация: после деплоя подтвердите исходный код в Etherscan/Polygonscan 🛠️

Типичные ошибки

  • хранение картинок на сервере, который может отключиться
  • отсутствие контроля доступа к mint
  • путаница между ERC-721 и ERC-1155
  • деплой сразу в mainnet без тестов
  • неверный tokenURI, из-за чего NFT не отображается

Когда выбирать ERC-721

• каждый токен уникален
• важна индивидуальная metadata
• нужна совместимость с NFT-маркетплейсами
Если токены массовые и полу-взаимозаменяемые, иногда выгоднее ERC-1155 📦

Итог: для создания ERC-721 NFT-контракта сегодня оптимально брать OpenZeppelin, тестировать в testnet, хранить metadata в децентрализованном хранилище и только потом деплоить в продакшн. Это быстрее, безопаснее и дешевле на старте. ✅

👀 Загляните в подборку каналов про IT — там полезные материалы по блокчейну, разработке и инфраструктуре.

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же