Настройка роялти NFT на Magic Eden
Война роялти 2022-2023 годов разрушила ожидания большинства NFT-проектов: Blur ввёл опциональные роялти, объём торгов утёк с OpenSea, и многие коллекции потеряли основной источник дохода команды. Magic Eden прошёл через несколько итераций политики роялти. Сейчас ситуация стабилизировалась, но настройка роялти — это не одна кнопка, а набор решений на уровне контракта и платформы.
Как работают роялти технически
EIP-2981 — стандарт on-chain
EIP-2981 добавляет единственную функцию: royaltyInfo(uint256 tokenId, uint256 salePrice) returns (address receiver, uint256 royaltyAmount). Маркетплейс вызывает её перед каждой сделкой, получает адрес получателя и сумму.
Это рекомендательный стандарт — маркетплейс может проигнорировать ответ. OpenSea, Magic Eden (в режиме enforced) и LooksRare чтут его для совместимых коллекций. Blur — нет, если контракт не использует блокировку трансферов.
Реализация через OpenZeppelin:
import "@openzeppelin/contracts/token/common/ERC2981.sol";
contract MyNFT is ERC721, ERC2981 {
constructor() {
// 5% роялти на адрес команды
_setDefaultRoyalty(teamAddress, 500); // 500 = 5% (basis points)
}
}
Для разных tokenId можно установить разные роялти через _setTokenRoyalty(tokenId, receiver, feeNumerator).
Magic Eden: Ethereum vs Solana
На Ethereum Magic Eden читает EIP-2981 и отображает роялти в UI. При создании листинга пользователь видит, что X% уйдёт создателю. Выплата происходит автоматически через маркетплейс контракт при продаже.
На Solana механика другая. Royalty задаётся в метаданных NFT через поле seller_fee_basis_points (0-10000, где 10000 = 100%) и массив creators с долями каждого. Это часть Metaplex Token Metadata standard. Magic Eden читает эти данные и выплачивает роялти при продаже через свой программ.
Для Solana-коллекций настройка роялти = корректные метаданные при минте. Изменить роялти post-mint нельзя (immutable метаданные) или только через update authority если коллекция mutable.
Enforced royalties vs опциональные
Единственный способ технически принудить к выплате роялти — ограничить трансфер NFT только через одобренные маркетплейсы. Это реализуется через _beforeTokenTransfer hook: проверяем, что from или to — одобренный оператор из allowlist.
Magic Eden поддерживает такие коллекции через свой operator filter. OpenSea запустил OperatorFilterRegistry в 2022-м, потом отказался от него в 2023-м. Сейчас наиболее актуальный подход — собственный allowlist операторов в контракте.
Компромисс: жёсткий enforce роялти снижает ликвидность (нельзя продать через P2P), но гарантирует доход команды. Без enforce — роялти опциональны и зависят от доброй воли маркетплейса.
Настройка на Magic Eden
Для Ethereum коллекций: Контракт с EIP-2981 автоматически определяется. В dashboard Magic Eden Creator Hub указываем адрес коллекции, верифицируем ownership через подпись. Роялти отображаются из контракта.
Для Solana коллекций: Через Metaplex Sugar CLI или ручное создание: устанавливаем sellerFeeBasisPoints и creators при деплое. Magic Eden верифицирует коллекцию через систему подачи заявок — нужен verified badge для полного отображения роялти.
Ориентиры по срокам
Настройка EIP-2981 в новом контракте — несколько часов. Добавление роялти к существующему контракту без EIP-2981 — возможно только через апгрейд (если контракт upgradeable) или деплой нового контракта с миграцией. Верификация коллекции на Magic Eden — 1-3 рабочих дня на их стороне.







