Розробка системи винагород для fan-токенів
Помилка при виборі моделі розподілу винагород може коштувати тисяч доларів газу та втрату користувачів. Розробка системи винагород для fan-токенів — наша спеціалізація, і ми знаємо, як цього уникнути. Fan-токени — окрема ніша: модель Chiliz/Socios, токени спортивних клубів, музикантів, стримерів. Механіка відрізняється від DeFi-стейкінгу: тут цінність не лише фінансова. Власники очікують доступ до exclusive контенту, право голосувати в опитуваннях, NFT-дропи, meet-and-greet лотереї. Стейкінг повинен це відображати. Ми реалізуємо гнучкі контракти з підтримкою безлічі reward-механік, оптимізуючи газ на 30–40% порівняно з типовими рішеннями.
Розробка системи винагород для fan-токенів: тири лояльності
Класичний підхід для fan-токенів: три-чотири тири з різним набором переваг. Логіка: чим більше застейкано і чим довше — тим вищий тир.
| Тир | Мінімум токенів | Lock період | Переваги |
|---|---|---|---|
| Bronze | 100 FAN | Немає | Голосування, базовий контент |
| Silver | 500 FAN | 30 днів | + ранній доступ до NFT-дропів |
| Gold | 2000 FAN | 90 днів | + лотерея на мерч/квитки |
| Platinum | 10000 FAN | 180 днів | + meet-and-greet, ексклюзивні дзвінки |
Тир визначається on-chain через стейкінг-контракт. Off-chain сервіси (контент-платформа, лотерейна система) читають тир через view-функцію та відкривають відповідні можливості.
Чому pull-модель краща для fan-токенів?
Підхід 1 — Pull model (MasterChef-стиль) — розробка системи винагород
Кожен стейкер накопичує pending rewards, які клеймить вручну. Використовується accRewardPerShare — акумулятор, що оновлюється при кожному deposit/withdraw. Добре масштабується: газ на reward роздачу платить користувач, а не протокол.
struct UserInfo { uint256 amount; // застейкано FAN uint256 rewardDebt; // борг для коректного розрахунку pending uint256 lockedUntil; // timestamp розблокування uint8 tier; // поточний тир } function pendingReward(address user) public view returns (uint256) { UserInfo storage info = userInfo[user]; uint256 accPerShare = accRewardPerShare; // оновлене значення if (block.timestamp > lastRewardTime && totalStaked > 0) { uint256 elapsed = block.timestamp - lastRewardTime; uint256 newReward = elapsed * rewardPerSecond; accPerShare += newReward * 1e12 / totalStaked; } return info.amount * accPerShare / 1e12 - info.rewardDebt; } Підхід 2 — Push model (снепшоти)
Команда періодично робить snapshot застейканих балансів і розподіляє нагороди (наприклад, після кожного матчу — роздати пул нагород всім Gold+ власникам). Реалізується як MerkleDistributor раунди.
Плюс push: можна розподіляти non-fungible нагороди (NFT) та off-chain цінності (коди доступу). Мінус: вимагає регулярних транзакцій з боку команди протоколу.
Для fan-токенів оптимально: pull-модель для фінансових нагород (токени), push/snapshot для спеціальних подій (NFT-дропи, лотереї). Pull-модель економить до 70% газу порівняно з push при 10 000 користувачів.
Як інтегрувати NFT в систему винагород?
Популярний патерн: стейкінг відкриває доступ до мінту exclusive NFT. Не безкоштовний (інакше всі мінтять і продають) — мінт доступний за умови досягнення тиру та підтримки стейку.
Реалізація: NFT-контракт перевіряє стейкінг-контракт у функції mint:
function mintExclusive(uint256 tokenId) external { IFanStaking staking = IFanStaking(stakingContract); require(staking.getUserTier(msg.sender) >= GOLD_TIER, "Insufficient tier"); require(!hasMinted[msg.sender][tokenId], "Already minted"); hasMinted[msg.sender][tokenId] = true; _mint(msg.sender, tokenId); } Бонуси за час та loyalty multiplier
Чим довше адреса тримає стейк без виведення, тим вищий його effective стейк для розрахунку нагород. Механіка: loyaltyMultiplier зростає з часом (наприклад, +10% кожні 30 днів, cap 200%). При будь-якому withdraw — скидання до 100%.
Зберігати multiplier як uint256 відсотків і множити на amount перед розрахунком rewardDebt. Це створює incentive не чіпати стейк — що знижує circulating supply та тиск на ціну.
Голосування для власників
Fan-опитування — це прості on-chain голосування, доступні лише застейканим адресам потрібного тиру. Не потрібен повноцінний DAO фреймворк. Достатньо легкого контракту:
function vote(uint256 pollId, uint8 optionIndex) external { require(stakingContract.getUserTier(msg.sender) >= polls[pollId].minTier, "Tier too low"); require(block.timestamp < polls[pollId].endTime, "Poll ended"); require(!hasVoted[pollId][msg.sender], "Already voted"); hasVoted[pollId][msg.sender] = true; uint256 weight = stakingContract.getStakedAmount(msg.sender); // голос = вага стейку polls[pollId].votes[optionIndex] += weight; emit VoteCast(pollId, msg.sender, optionIndex, weight); } Результати публічно верифіковані on-chain, що важливо для довіри фанатів.
Технічні особливості fan-середовища
ERC-20 з трансферними обмеженнями
Деякі fan-токени забороняють трансфер в офіційних маркетплейсах (тільки через схвалені DEX або Chiliz Chain). При розробці стейкінгу враховуйте: якщо токен має transferFrom обмеження, депозит в стейкінг-контракт може бути заблокований. Рішення: whitelist стейкінг-контракту в токені.
Multi-chain роздільність
Chiliz Chain — окремий EVM-сумісний L1. Якщо fan-токен живе там, весь стейкінг контракт деплоїться на Chiliz Chain. Газ дешевий, але екосистема обмежена. Можливий bridge на Ethereum/Polygon для DeFi інтеграцій.
Регуляторна обережність
Fan-токени в деяких юрисдикціях кваліфікуються як цінні папери, якщо дають фінансові права. Стейкінг з токен-нагородами посилює цей ризик. Юридична консультація до запуску — обов'язкова. Ми гарантуємо, що всі контракти проходять аудит та відповідають найкращим практикам безпеки.
Що входить в розробку
- Аналіз вимог та вибір моделі розподілу винагород
- Проектування архітектури смарт-контрактів
- Розробка контрактів (Solidity, Foundry)
- Інтеграція з frontend (wagmi, React)
- Аудит коду (Slither, Mythril, Echidna)
- Документація та деплой
- Підтримка після запуску
| Етап | Термін | Результат |
|---|---|---|
| Аналітика | 3-5 днів | Технічне завдання |
| Розробка контрактів | 2-4 тижні | Робочі контракти |
| Інтеграція frontend | 1-2 тижні | Інтерфейс стейкінгу |
| Аудит | 2-3 тижні | Звіт аудиту |
Аудит смарт-контрактів перед запуском
Аудит обов'язковий перед запуском з реальними коштами. Ми використовуємо автоматизовані інструменти (Slither, Mythril) та ручну перевірку логіки. Типові вразливості: reentrancy, помилки округлення, доступ до функцій. Наш сертифікований досвід у сфері безпеки блокчейну підтверджений десятками проектів.
Проконсультуйтеся з інженером для оцінки вашого проекту. Зв'яжіться з нами для обговорення термінів та вартості розробки системи винагород для fan-токенів.







