Настройка роялти NFT на OpenSea

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Настройка роялти NFT на OpenSea
Простая
~2-3 часа
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1058
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Настройка роялти NFT на OpenSea

С конца 2022 года роялти NFT перестали быть гарантированными. Blur запустил агрессивную политику нулевых роялти для привлечения трейдеров, OpenSea был вынужден ответить — и в 2023 году оба маркетплейса сделали creator royalties опциональными на уровне платформы. Результат: большинство вторичных продаж проходит с нулевыми роялти, если коллекция не использует on-chain enforcement механизмы.

Два подхода к роялти и их реальность

Off-chain роялти (стандарт маркетплейсов)

EIP-2981 — стандарт on-chain объявления роялти. Контракт реализует royaltyInfo(tokenId, salePrice), возвращает (receiver, royaltyAmount). OpenSea, Blur, Rarible читают эту информацию и отображают в UI.

Но исполнение — на усмотрение маркетплейса. Технически любой смарт-контракт для торговли может игнорировать EIP-2981 и не перечислять роялти. Что большинство агрегаторов и делает.

On-chain enforcement через transfer restrictions

Единственный способ гарантировать роялти — ограничить трансфер токена: разрешать его только через whitelist'ed контракты (маркетплейсы), которые платят роялти. Это Operator Filter Registry, который Yuga Labs ввела для BAYC в 2022 году.

Проблема: рестрикции на трансфер конфликтуют с ERC-721 стандартом. Агрегаторы, не попавшие в whitelist, не могут торговать токенами. Часть пользователей воспринимает это как ограничение прав на собственный актив. В итоге Yuga Labs и OpenSea к 2024 году отказались от Operator Filter как механизма.

На практике: большинство новых коллекций реализуют EIP-2981 для корректного отображения в маркетплейсах, но не ограничивают трансферы. Роялти — джентльменское соглашение с маркетплейсом.

Практическая настройка

Контракт

OpenZeppelin предоставляет ERC2981 extension:

import "@openzeppelin/contracts/token/common/ERC2981.sol";

contract MyNFT is ERC721, ERC2981 {
    constructor() {
        _setDefaultRoyalty(msg.sender, 500); // 5% = 500 basis points
    }
}

_setDefaultRoyalty устанавливает роялти для всей коллекции. _setTokenRoyalty(tokenId, receiver, feeNumerator) — для отдельного токена (актуально для 1/1 арта с разными авторами).

OpenSea collection settings

Помимо on-chain EIP-2981, OpenSea позволяет настроить роялти в Collection Settings:

  • Процент (до 10%)
  • Адрес получателя
  • Верификация через подпись владельца контракта

Если в контракте нет EIP-2981 — OpenSea берёт настройки из панели. Если есть — on-chain данные имеют приоритет (в зависимости от версии интерфейса).

Сплитование роялти между несколькими получателями

Если роялти нужно делить между командой — не пишем логику сплита в NFT-контракте. Используем 0xSplits или Splits Protocol: деплоим сплит-контракт с долями, его адрес указываем как receiver в EIP-2981. При поступлении ETH на адрес сплита любой может вызвать distribute() — средства разделяются по настроенным долям автоматически.

Ориентиры по срокам

Настройка EIP-2981 в существующем контракте (если нет) и верификация в OpenSea — 2-3 часа. Включает: проверку текущего контракта, добавление EIP-2981 если отсутствует (или деплой нового), настройку в OpenSea Collection Settings, проверку отображения роялти.