Розробка fan-токенів

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка fan-токенів
Середній
~1-2 тижні
Часті запитання

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

Етапи блокчейн-розробки

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

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

Розробка fan-токенів

Fan-токени — це не просто branded монети. Правильно зроблений fan-токен дає болільникам реальні права: голосування за дизайн форми, вибір музики на стадіоні, пріоритетний доступ до квитків. Chiliz та Socios.com показали, що модель працює для топ-клубів (Барселона, Ювентус, ПСЖ). Питання в тому, як воспроизвести цю механіку для клубу чи артиста меншого масштабу, не отримавши порожню монету з нульовою утилітою.

Технічно fan-токен — це ERC-20 з додатковою логікою: governance права, access control для перків, distribution механізм. Складність не в коді, а в токеноміці та створенні реальної цінності для холдерів.

Структура токена

Базовий контракт

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/AccessControl.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";

contract FanToken is ERC20, ERC20Votes, ERC20Permit, AccessControl {
    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
    bytes32 public constant POLL_MANAGER_ROLE = keccak256("POLL_MANAGER_ROLE");

    uint256 public constant MAX_SUPPLY = 20_000_000 * 10 ** 18; // 20M токенів

    constructor(
        string memory name,
        string memory symbol,
        address admin
    ) ERC20(name, symbol) EIP712(name, "1") ERC20Permit(name) {
        _grantRole(DEFAULT_ADMIN_ROLE, admin);
        _grantRole(MINTER_ROLE, admin);
    }

    function mint(address to, uint256 amount) external onlyRole(MINTER_ROLE) {
        require(totalSupply() + amount <= MAX_SUPPLY, "Exceeds max supply");
        _mint(to, amount);
    }

    // Обов'язковий override для ERC20Votes
    function _afterTokenTransfer(address from, address to, uint256 amount)
        internal override(ERC20, ERC20Votes)
    {
        super._afterTokenTransfer(from, to, amount);
    }

    function _mint(address to, uint256 amount)
        internal override(ERC20, ERC20Votes)
    {
        super._mint(to, amount);
    }

    function _burn(address account, uint256 amount)
        internal override(ERC20, ERC20Votes)
    {
        super._burn(account, amount);
    }
}

ERC20Votes дає snapshot-механізм для голосування (checkpoints по блокам), ERC20Permit — gasless approve через підпис. Обидва розширення важливі: votes потрібні для polling контракту, permit знижує тертя при взаємодії.

Polling контракт

Голосування — центральна механіка. Клуб створює опрос, холдери голосують вагою, пропорційною балансу:

contract FanPoll {
    IVotes public immutable token;

    struct Poll {
        string question;
        string[] options;
        uint256 snapshotBlock;  // блок для розрахунку ваги
        uint256 startTime;
        uint256 endTime;
        uint256 minTokensRequired;  // мінімальний баланс для участі
        mapping(uint256 => uint256) voteCounts;
        mapping(address => bool) hasVoted;
    }

    mapping(uint256 => Poll) public polls;
    uint256 public pollCount;

    event PollCreated(uint256 indexed pollId, string question, uint256 snapshotBlock);
    event Voted(uint256 indexed pollId, address indexed voter, uint256 option, uint256 weight);

    function vote(uint256 pollId, uint256 optionIndex) external {
        Poll storage poll = polls[pollId];
        require(block.timestamp >= poll.startTime, "Not started");
        require(block.timestamp <= poll.endTime, "Ended");
        require(!poll.hasVoted[msg.sender], "Already voted");

        // Вага = баланс на момент snapshotBlock
        uint256 weight = token.getPastVotes(msg.sender, poll.snapshotBlock);
        require(weight >= poll.minTokensRequired, "Insufficient tokens");

        poll.hasVoted[msg.sender] = true;
        poll.voteCounts[optionIndex] += weight;

        emit Voted(pollId, msg.sender, optionIndex, weight);
    }
}

snapshotBlock критичний: без нього можна купити токени прямо перед голосуванням, проголосувати та продати. Snapshot береться при створенні опросу, ваги фіксуються в минулому.

Access control для перків

Fan-токени дають не лише голос, але й фізичний доступ. Типові tier-рівні:

Рівень Поріг Перки
Bronze 1+ FAN Голосування в базових опросах
Silver 100+ FAN Ранній доступ до квитків, еклюзивний контент
Gold 500+ FAN Meet & greet лотереї, VIP зона
Platinum 2000+ FAN Персональні повідомлення від гравців, іменна зірка

Для верифікації перків два підходи: on-chain check (контракт перевіряє balance в момент використання — просто, але баланс можна тимчасово занять) та snapshot + Merkle proof (права фіксуються на конкретний момент — надійніше для сезонних перків).

Інтеграція з фізичним світом: QR-код на вході сканується, бекенд перевіряє signature, підписану гаманцем користувача через WalletConnect. Ніяких приватних ключів на пристрої — лише підпис повідомлення.

Distribution та tokenomics

Помилка №1 fan-токенів: весь supply продається через Socios/Chiliz exchange, клуб отримує гроші одразу, але ринок насичений, ціна падає, холдери недовільні. Стійка модель:

Allocation типичного fan-токена:

  • 40% — публічна продажа через Fan Token Offering (FTO): поетапно, не все одразу
  • 20% — клуб/організація: vesting 2-3 роки, показує commitment
  • 15% — engagement rewards: раздаються болільникам за активність (посещення матчів, участь в опросах, покупка мерча)
  • 15% — treasury: майбутні партнерства, листинги на біржах
  • 10% — команда розробки: vesting

Engagement rewards — найважливіша частина для життєздатності. Токени повинні органічно розподілятися тим, хто реально є болільником, не тільки трейдерам. Механіка: сканування квитка на матч = reward в токенах, участь в опросі = мікро-reward, покупка мерча з кодом = reward.

Чейн та листинг

Для fan-токенів з реальною користувацькою базою: не mainnet Ethereum (газ занадто високий для мікротранзакцій). Оптимальні варіанти:

Chiliz Chain (CHZ): спеціалізована для fan-токенів, власна DEX (Chiliz DEX), інтеграція з Socios.com. Якщо ціль — максимальний reach існуючої аудиторії.

Polygon PoS або Polygon zkEVM: дешевий газ, велика екосистема, багато готових інструментів. Оптимально для незалежного запуску без привязки до Socios.

Base: L2 від Coinbase, зростаюча аудиторія, хороша ліквідність. Логічний вибір якщо цільова аудиторія — північноамериканський ринок.

Листинг на CEX (централізована біржа) — окремий процес з юридичною та compliance-стороною. DEX листинг (Uniswap, QuickSwap) можна зробити самостійно, додавши пул ліквідності.

Юридична сторона

Fan-токени з governance правами — потенціально securities у ряді юрисдикцій. SEC (США) та ESMA (Європа) рассматрмвають їх під лупою. Стандартна захист: токен не дає долі в клубі, не обіцяє фінансового повернення, права — виключно на участь в голосуваннях про некомерційні питання.

Проект вимагає юридичної консультації до запуску. Це не опція.

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

Дизайн tokenomics (1-2 тижні). Allocation, механіка engagement rewards, tier-система перків, критерії листингу.

Розробка контрактів (2-3 тижні). FanToken ERC-20 + FanPoll + EngagementRewards distributor + тести.

Аудит (1-2 тижні). Контракти керують цінними активами — зовнішній аудит обов'язковий.

Розробка бекенду та frontend (2-4 тижні). Admin панель для клубу, холдер-дашборд, WalletConnect інтеграція.

Запуск FTO та листинг. Строки залежать від вибраної платформи та юрисдикції.

Вартість розраховується за результатами аналітики.