Разработка биржи fan-токенов
Fan-токены — утилитарные токены спортивных клубов, музыкантов, медиа-брендов. Chiliz ($CHZ) и платформа Socios.com популяризировали концепцию: держатель токена FC Barcelona голосует за цвет перчаток вратаря или получает доступ к эксклюзивному контенту. Токены торгуются — и здесь возникает специфическая биржевая задача: как сделать рынок для токенов с маленькой рыночной капитализацией, неравномерной активностью (матч → всплеск, межсезонье → тишина), и аудиторией, где значительная часть людей никогда не использовала crypto.
Биржа fan-токенов — это не обычный DEX. Здесь важна ликвидность (при малом объёме AMM даёт огромный слиппаж), onboarding (большинство пользователей без Web3 опыта), и event-driven активность (нужно выдерживать пиковые нагрузки в дни матчей).
Архитектура ликвидности
Проблема тонкого рынка
Рассмотрим fan-токен FC SomeClub с market cap $500K. Uniswap V2 пул с $50K liquidity (10% от market cap): покупка на $5K даёт 9% price impact. Это неприемлемо — пользователь видит "вы получите на 9% меньше чем показывает цена".
Решений несколько, и лучший выбор зависит от ожидаемого объёма торгов:
Concentrated liquidity (Uniswap V3 стиль). Liquidity providers концентрируют позиции в узком ценовом диапазоне. При той же $50K ликвидности, сконцентрированной в ±5% от текущей цены — эффективная глубина рынка эквивалентна $500K+ в V2 пуле. Проблема: если цена выходит за пределы range — позиция становится 100% в одном токене (impermanent loss максимален).
Virtual AMM (vAMM). Как в Perpetual Protocol: price discovery через виртуальный AMM, реальный коллатераль хранится отдельно. Нет реальных LP — протокол сам является market maker. Риск: протокол принимает на себя directional exposure.
Order book + AMM гибрид. Limit orders исполняются из order book, остальное — через AMM. CoW Protocol использует похожую модель (batch auctions). Сложнее в реализации, но лучший UX для активных трейдеров.
Market maker программа. Off-chain маркет-мейкер (традиционный, через API) подключается к on-chain или централизованному orderbook. Клуб может субсидировать маркет-мейкера для поддержания спредов. Самое простое решение для запуска — не нужно решать проблему ликвидности on-chain, её решает профессиональный участник.
Для стартового запуска рекомендую hybrid: AMM как backstop ликвидности + incentivized market maker программа. AMM гарантирует что торговля всегда возможна (даже при уходе маркет-мейкера), маркет-мейкер обеспечивает нормальные спреды в нормальное время.
Динамика событий
В день крупного матча торговый объём может вырасти в 50-100x. Для on-chain AMM это не проблема (смарт-контракт масштабируется). Для централизованной биржи или гибрида — нужны load tests и горизонтальное масштабирование бэкенда.
Более интересна ценовая динамика: за час до матча, при объявлении стартового состава, при голе — цена fan-токена резко движется. AMM с фиксированным fee в такие моменты становится мишенью для MEV (front-running предсказуемых движений). Решение: dynamic fees (Uniswap V4 hooks позволяют поднимать fee при высокой волатильности), или trading pause во время официальных объявлений.
Смарт-контракты биржи
Factory и Registry
Каждый fan-токен — отдельный ERC20 (или ERC20Votes если планируется governance). Factory контракт деплоит новый токен и создаёт для него торговую пару:
contract FanTokenFactory {
mapping(address => address) public tokenToPool;
event FanTokenCreated(
address indexed token,
address indexed pool,
string clubName,
uint256 initialSupply
);
function createFanToken(
string calldata name,
string calldata symbol,
string calldata clubName,
uint256 initialSupply,
uint256 initialLiquidityETH
) external payable returns (address token, address pool) {
require(msg.value == initialLiquidityETH, "Wrong ETH");
// Deploy token
token = address(new FanToken(name, symbol, initialSupply, msg.sender));
// Create pool with initial liquidity
pool = _createPool(token, initialSupply / 2, initialLiquidityETH);
tokenToPool[token] = pool;
emit FanTokenCreated(token, pool, clubName, initialSupply);
}
}
Registry хранит метаданные клубов: логотип IPFS hash, описание, verified статус (клуб официально партнёр или нет).
Торговый контракт с fee distribution
Fan-токен биржа зарабатывает на trading fee. Распределение fee — ключевой токеномический вопрос. Типичная схема:
| Получатель | Доля | Обоснование |
|---|---|---|
| LP providers | 60% | Вознаграждение за ликвидность |
| Клуб/бренд | 20% | Royalty, мотивация участвовать |
| Platform treasury | 15% | Развитие платформы |
| Token buyback & burn | 5% | Дефляционный механизм для платформ |
Fee distribution реализуется через fee controller контракт. При каждом swap — fee разделяется и отправляется в соответствующие контракты (LP reward pool, club revenue contract, treasury).
Vesting и emission schedule
Fan-токен клуба не должен весь сразу быть в обороте — иначе при первичной продаже клуб дампит весь supply. Рекомендуемое распределение:
- 30% — public sale / initial DEX offering
- 25% — клуб (4-year vesting, 1-year cliff)
- 20% — rewards pool (болельщикам за активность: посещение матчей, покупки мерча)
- 15% — платформа (4-year vesting)
- 10% — liquidity (locked в пуле)
Vesting реализуется через стандартные контракты (TokenVesting из OpenZeppelin или аналог) с configurable cliff и linear vesting.
Пользовательский опыт и onboarding
Проблема Web3 onboarding
Болельщик Барселоны не знает что такое MetaMask. Биржа fan-токенов должна работать без этих знаний — иначе пользовательская база ограничена crypto-нативными людьми, которые составляют малую долю от аудитории клубов.
Embedded wallet (Account Abstraction). Privy, Dynamic, Web3Auth — провайдеры embedded wallets. Пользователь логинится через Google/Apple или email. Под капотом создаётся smart account (ERC-4337), пользователь не видит seed phrase при регистрации.
Account Abstraction (EIP-4337) также позволяет газ абстракцию: платформа может спонсировать газ (paymaster), пользователь платит в USDC или вообще не платит gas — важно для retention среди crypto-новичков.
Fiat on-ramp. Moonpay, Transak, Stripe (для Ethereum-based активов) — интегрируются как SDK. Пользователь покупает токены картой, не зная что происходит on-chain.
Мобильное приложение
Fan-токен аудитория — мобильная. React Native + WalletConnect + embedded wallet провайдер. Push notifications при значимых событиях (голе, победе — как триггер для торговли). Deep links с матч-страниц клуба на торговый экран.
Compliance и регулирование
Fan-токены в юрисдикции ЕС потенциально подпадают под MiCA (Markets in Crypto-Assets Regulation, применяется с 2025). Если токен предоставляет utility (права голоса, доступ к контенту) — это utility token, более лёгкий режим. Если токен преимущественно торгуется как инвестиция — security token, тяжёлый регуляторный путь.
Для compliance: юридическое заключение по каждому токену, KYC/AML для пользователей с объёмом выше пороговых значений (типично €1000/день), whitelist/blacklist для санкционных адресов (Chainalysis или TRM Labs API).
Интеграции
Клубный контент и перки
Fan-токен без utility — просто спекулятивный актив. Держатели должны получать что-то конкретное:
- Голосования (Governor-based): выбор дизайна джерси, опросы о трансферах — off-chain Snapshot + on-chain proof of holding
- Access-gating: ексклюзивный контент на сайте клуба через token-gating (Sign-in With Ethereum + balance check)
- Ticket priority: держатель N токенов получает pre-sale доступ к билетам — интеграция с ticketing системой клуба через API
- Physical rewards: QR-код в мобильном приложении (linked to wallet balance) для получения скидок в клубном магазине
Oracle для спортивных данных
Для автоматических перков по результатам матчей (бонусный дроп токенов при победе) нужен oracle. Chainlink Sports Data Feeds или кастомный oracle через Chainlink Functions (off-chain API call → on-chain результат). При победе клуба — автоматический snapshot holders и distribution бонусов.
Стек и архитектура
Smart contracts: Solidity + Foundry + OpenZeppelin. Factory, FanToken (ERC20Votes), Pool (Uniswap V3 fork или custom AMM), VestingController, FeeDistributor.
Backend: Node.js + TypeScript + PostgreSQL. Индексер событий (через Alchemy webhooks или The Graph), API для метаданных, market maker bot.
Frontend: Next.js + React + wagmi + Privy/Dynamic для embedded wallets. Mobile: React Native.
Infrastructure: Multi-chain (Polygon/Arbitrum для дешёвых транзакций), IPFS для media assets.
| Компонент | Технология | Срок |
|---|---|---|
| Smart contracts | Solidity + Foundry | 4-6 недель |
| AMM/Pool | Uniswap V3 fork | 3-4 недели |
| Backend + indexer | Node.js + PostgreSQL | 3-4 недели |
| Frontend Web | Next.js + wagmi | 4-5 недель |
| Mobile | React Native | 5-6 недель |
| Embedded wallet | Privy/Dynamic | 1 неделя |
| Fiat on-ramp | Moonpay SDK | 1 неделя |
Процесс и сроки
MVP (один fan-токен, базовый AMM, Web UI): 10-14 недель. Production платформа с multi-club поддержкой, мобильным приложением, embedded wallets, fiat on-ramp: 6-9 месяцев.
Аудит смарт-контрактов — обязателен перед запуском. Рекомендую выделить 4-6 недель на аудит + устранение находок параллельно с финальным тестированием.







