Настройка роялти NFT на Blur
Blur запустился в октябре 2022 года и предложил нулевые торговые комиссии + опциональные royalties. Коллекции потеряли от 0% до 100% роялти в зависимости от того, заблокировали ли они торговлю через Blur или нет. OpenSea ответила снижением своих royalties до опциональных. Роялти войны 2022-2023 годов.
Сегодня ситуация устоялась: Blur поддерживает royalties для коллекций, которые используют OperatorFilterRegistry (Blur Operator Filter) или внедрили ERC-2981. Настройка занимает несколько часов, но требует понимания механики.
ERC-2981: on-chain royalties
ERC-2981 — минимальный стандарт: контракт реализует функцию royaltyInfo(tokenId, salePrice), которая возвращает получателя и сумму роялти.
Если контракт уже задеплоен без ERC-2981 — добавить его в immutable контракт невозможно. Опции: задеплоить новый контракт с миграцией (дорого и сложно) или зарегистрировать роялти через off-chain реестры (OpenSea Creator Fees через их dashboard, Manifold Royalty Registry).
Manifold Royalty Registry — наиболее универсальное решение для ретроактивной настройки: позволяет owner'у старого контракта зарегистрировать royalty recipient и percentage без изменения контракта. Поддерживается Blur, OpenSea, Rarible, LooksRare.
Для новых контрактов — ERC2981 из OpenZeppelin + _setDefaultRoyalty(receiver, feeNumerator) в constructor. feeNumerator из 10000: значение 500 = 5%.
Принудительное применение через OperatorFilter
Blur требует регистрацию в OperatorFilterRegistry (0x000000000000AAeB6D7670E522A718067333cd4E на Ethereum) для получения принудительных royalties на своей платформе.
OpenZeppelin 4.x и 5.x включают DefaultOperatorFilterer и OperatorFilterer mixins. Добавляем в контракт:
import {DefaultOperatorFilterer} from "operator-filter-registry/src/DefaultOperatorFilterer.sol";
contract MyNFT is ERC721, DefaultOperatorFilterer {
function transferFrom(address from, address to, uint256 tokenId)
public override onlyAllowedOperator(from) {
super.transferFrom(from, to, tokenId);
}
function safeTransferFrom(address from, address to, uint256 tokenId)
public override onlyAllowedOperator(from) {
super.safeTransferFrom(from, to, tokenId);
}
}
onlyAllowedOperator проверяет, что вызывающий контракт зарегистрирован как «чистый» оператор (соблюдает royalties). Blur Marketplace зарегистрирован в реестре.
Для уже задеплоенных контрактов — если нет OperatorFilter и нет возможности апгрейда, принудительное применение невозможно. Только ERC-2981 через Manifold как best effort.
Процесс настройки
Анализ контракта (1-2 часа). Проверяем: есть ли ERC-2981, есть ли OperatorFilter, является ли контракт апгрейдаемым.
Настройка (2-4 часа). Для нового контракта — интеграция при разработке. Для существующего — Manifold Registry через их UI или прямой вызов setRoyalties() с owner-кошелька.
Верификация. Проверяем на Blur что коллекция отображает корректный royalty percentage. Тестовая продажа на tesnet если доступно.
Стоимость зависит от состояния существующего контракта и требуемого объёма работы.







