До появи 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 години — напишіть нам.
Процес роботи
- Аналітика: розбираємо вимоги до роялті, сценарії торгів, цільову аудиторію.
- Проектування: обираємо архітектуру (базовий, splitter, динамічний), готуємо специфікацію.
- Розробка: пишемо контракт на Solidity 0.8.x, використовуємо Foundry для тестів та верифікації.
- Тестування: coverage >95%, фаззинг на Echidna, перевірка реентерабельності та gas-оптимізація.
- Аудит: внутрішній та зовнішній аудит безпеки (слайзери, формальна верифікація).
- Деплой: розгортання на Ethereum/Polygon, верифікація в Etherscan, налаштування supportsInterface.
- Підтримка: моніторинг, оновлення при форках мережі, консультації щодо інтеграції.
Що входить у розробку?
- Вихідний код контракту з тестами (репозиторій GitHub)
- Документація щодо розгортання та налаштування
- Розгортання в обраній мережі (Ethereum, Polygon, Arbitrum, BNB Chain)
- Верифікація контракту на блокчейн-експлорері
- Інтеграція з маркетплейсами (OpenSea, Rarible, LooksRare)
- Аудит безпеки (звіт про вразливості)
- Доступ до приватного репозиторію для подальших доопрацювань
- Підтримка протягом місяця після деплою
Орієнтири за строками
| Тип реалізації | Строк |
|---|---|
| Базова (один отримувач, фіксована ставка) | 1 день |
| Зі спліттером (PaymentSplitter) | 2-3 дні |
| З динамічними ставками та кастомною логікою | 3-5 днів |
| Повний цикл (включаючи аудит і деплой) | 5-7 днів |
Вартість розраховується індивідуально виходячи зі складності. Отримайте оцінку за 1 день — напишіть нам, і ми підготуємо пропозицію. Наша команда має 5+ років досвіду в Web3, виконала 15+ аудитів смарт-контрактів і розгорнула десятки ERC-2981 токенів для клієнтів з США, Європи та Азії. Зв'яжіться з нами для обговорення архітектури.







