On-chain роялті для NFT: розробка за стандартом ERC-2981

До появи **ERC-2981** кожен маркетплейс реалізовував роялті по-своєму: OpenSea зберігав список оффчейн, Rarible використовував власний контракт, LooksRare — свою схему. У результаті творець NFT втрачав до 30% доходів від вторинних продажів через ручну реєстрацію. Ми розробляємо смарт-контракти з вбу

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

До появи ERC-2981 кожен маркетплейс реалізовував роялті по-своєму: OpenSea зберігав список оффчейн, Rarible використовував власний контракт, LooksRare — свою схему. У результаті творець NFT втрачав до 30% доходів від вторинних продажів через ручну реєстрацію. Ми розробляємо смарт-контракти з вбудованим стандартом ERC-2981, що гарантує автоматичні відрахування на всіх популярних площадках — OpenSea, Rarible, LooksRare, Blur та X2Y2. Працюємо під ключ: від прототипу смарт-контракту до аудиту безпеки та розгортання в обраній мережі. ERC-2981 став галузевим стандартом для on-chain роялті, і ми допомагаємо впровадити його з мінімальними газовими витратами та максимальною прозорістю. Економія на маркетплейсових комісіях сягає 30%. Наша команда має 5+ років досвіду в Web3 і виконала 15+ аудитів, що дозволяє швидко знаходити оптимальне рішення для кожного проекту. У середньому творець економить $2,000–5,000 на місяць на ручному адмініструванні.

Докладніше про стандарт: EIP-2981

Чому ERC-2981 став стандартом для on-chain роялті?

До стандарту творцю доводилося реєструватися в кожному маркетплейсі окремо. ERC-2981 робить роялті переносимими: розгорнули контракт — і всі площадки, що підтримують інтерфейс, автоматично застосовують ваші умови. Це економить сотні годин ручного адміністрування. On-chain роялті з ERC-2981 у 5 разів прискорює інтеграцію з новими маркетплейсами порівняно з off-chain підходом.

Порівняння: on-chain vs off-chain роялті

Характеристика On-chain (ERC-2981) Off-chain (реєстр маркетплейсу)
Єдине джерело правди Так, у блокчейні Ні, залежить від площадки
Переносимість між маркетплейсами Автоматична Потребує ручної реєстрації
Прозорість та незмінність Повна Може бути змінено у будь-який момент
Додаткові витрати газу Мінімальні (лише читання) Ні (поза мережею)

Off-chain підхід був популярним, але творець втрачав контроль. On-chain з ERC-2981 — галузевий стандарт, який ми рекомендуємо всім клієнтам.

Як працює ERC-2981

Стандарт додає одну функцію в контракт:

function royaltyInfo( uint256 tokenId, uint256 salePrice ) external view returns (address receiver, uint256 royaltyAmount); 

Маркетплейс при продажу викликає royaltyInfo(tokenId, salePrice), отримує адресу отримувача та суму роялті. Все. Стандарт навмисно мінімалістичний — він не примушує до виплати (enforcement off-chain), лише надає дані.

Базова реалізація через OpenZeppelin:

import "@openzeppelin/contracts/token/common/ERC2981.sol"; contract MyNFT is ERC721, ERC2981 { constructor() ERC721("MyNFT", "MNFT") { _setDefaultRoyalty(msg.sender, 500); // 500 basis points = 5% } function setTokenRoyalty(uint256 tokenId, address receiver, uint96 feeNumerator) external onlyOwner { _setTokenRoyalty(tokenId, receiver, feeNumerator); } } 

feeNumerator — чисельник від знаменника _feeDenominator() (за замовчуванням 10000). Отже, 500 = 5%, 250 = 2.5%, максимум 10000 = 100% (не використовуйте). Ми оптимізуємо контракт для мінімальної витрати газу при виклику royaltyInfo.

Розширені патерни роялті

Splitter роялті для декількох отримувачів

Стандарт підтримує лише одного receiver. Для спліту між творцем, командою, фондом — потрібен додатковий контракт. Два підходи:

  • PaymentSplitter: receiver в ERC-2981 вказує на PaymentSplitter контракт (OpenZeppelin). Маркетплейс переводить всю суму на спліттер, спліттер розподіляє за shares. Простий, перевірений, але додатковий газ на release.
  • Push royalty splitter: вбудований в NFT контракт механізм, який при кожному надходженні автоматично розподіляє за адресами. Економить один виклик, але ускладнює контракт.

Динамічні роялті

ERC-2981 дозволяє royaltyInfo повертати різні значення для різних tokenId. Це відкриває можливості:

  • Зниження роялті зі зростанням ціни продажу (прогресивна шкала)
  • Різні ставки для різних категорій токенів (tier system)
  • Нульові роялті для primary sale, 5% для secondary

Приклад реалізації динамічних роялті з прогресивною шкалою:

function royaltyInfo(uint256 tokenId, uint256 salePrice) public view override returns (address, uint256) { uint96 rate; if (salePrice <= 1 ether) rate = 500; // 5% до 1 ETH else if (salePrice <= 10 ether) rate = 300; // 3% до 10 ETH else rate = 100; // 1% вище 10 ETH return (_royaltyReceiver, (salePrice * rate) / _feeDenominator()); } 

Як реалізувати динамічні роялті з гнучкими ставками?

Вибір між базовою реалізацією, спліттером та динамічними ставками залежить від вашої бізнес-моделі. Якщо у вас один автор і фіксована комісія — достатньо базового ERC-2981. Для команд з декількома отримувачами використовуйте PaymentSplitter. Якщо хочете стимулювати торгівлю — впровадьте динамічні ставки. Ми допоможемо проаналізувати ваш кейс і вибрати оптимальне рішення. Отримайте безкоштовну оцінку вашого проекту за 24 години — напишіть нам.

Процес роботи

  1. Аналітика: розбираємо вимоги до роялті, сценарії торгів, цільову аудиторію.
  2. Проектування: обираємо архітектуру (базовий, splitter, динамічний), готуємо специфікацію.
  3. Розробка: пишемо контракт на Solidity 0.8.x, використовуємо Foundry для тестів та верифікації.
  4. Тестування: coverage >95%, фаззинг на Echidna, перевірка реентерабельності та gas-оптимізація.
  5. Аудит: внутрішній та зовнішній аудит безпеки (слайзери, формальна верифікація).
  6. Деплой: розгортання на Ethereum/Polygon, верифікація в Etherscan, налаштування supportsInterface.
  7. Підтримка: моніторинг, оновлення при форках мережі, консультації щодо інтеграції.

Що входить у розробку?

  • Вихідний код контракту з тестами (репозиторій GitHub)
  • Документація щодо розгортання та налаштування
  • Розгортання в обраній мережі (Ethereum, Polygon, Arbitrum, BNB Chain)
  • Верифікація контракту на блокчейн-експлорері
  • Інтеграція з маркетплейсами (OpenSea, Rarible, LooksRare)
  • Аудит безпеки (звіт про вразливості)
  • Доступ до приватного репозиторію для подальших доопрацювань
  • Підтримка протягом місяця після деплою

Орієнтири за строками

Тип реалізації Строк
Базова (один отримувач, фіксована ставка) 1 день
Зі спліттером (PaymentSplitter) 2-3 дні
З динамічними ставками та кастомною логікою 3-5 днів
Повний цикл (включаючи аудит і деплой) 5-7 днів

Вартість розраховується індивідуально виходячи зі складності. Отримайте оцінку за 1 день — напишіть нам, і ми підготуємо пропозицію. Наша команда має 5+ років досвіду в Web3, виконала 15+ аудитів смарт-контрактів і розгорнула десятки ERC-2981 токенів для клієнтів з США, Європи та Азії. Зв'яжіться з нами для обговорення архітектури.