Разработка fan-engagement платформы на блокчейне

Болельщики хотят чувствовать причастность к любимому клубу, а не разбираться в тонкостях блокчейна. Мы разрабатываем fan-engagement платформы, которые превращают токенизацию фанатов в простой и понятный инструмент для массовой аудитории. Наша команда реализует проект под ключ — от архитектуры токена до бесшовного интерфейса, обеспечивая надёжную работу и последующую поддержку.
Часто задаваемые вопросы

Fan-токены — это не utility-токены в классическом смысле и не governance в DeFi-понимании. Мы знаем это на собственном опыте: за 10+ лет в блокчейн-разработке мы запустили более 50 проектов, и каждый раз главной болью был onboarding массовой аудитории. Болельщик хочет ощущения причастности, а не разбираться с gas fees. Клуб хочет монетизировать лояльность, а не строить DeFi-протокол. Платформа берёт комиссию, но должна дать бесшовный UX. Launchpad для fan-токенов обязан обслуживать именно эту модель — managed onboarding с fiat gateway и социальным логином.

Какие проблемы решает fan-token launchpad?

Классический IDO launchpad рассчитан на crypto-native: MetaMask, USDT, понимание slippage и risk tolerance. Fan-token launchpad работает с болельщиком, который пришёл из мобильного приложения клуба и впервые слышит слово «кошелёк». Мы гарантируем, что пользователь не увидит ни одной сырой транзакции. Даже если контракт отклонит операцию, ему покажется понятная ошибка на русском.

Ключевые отличия:

Параметр IDO Launchpad Fan Token Launchpad
Аудитория Crypto-native Mainstream / спортивные болельщики
Onboarding MetaMask + USDT Email / соцсети, fiat on-ramp
Токен utility Governance, yield Голосование, эксклюзивный контент
Ценообразование Market-driven Bonding curve, управляемая клубом
Регуляторика DeFi grey area Ближе к ценным бумагам в ряде стран
Вторичный рынок DEX Управляемый AMM с контролем ликвидности

Архитектура токена и bonding curve

Fan-токен mechanics

Fan-токен строится на принципах: ограниченная эмиссия, утилити-привязка, managed liquidity и fiat gateway. Для primary sale применяется bonding curve — линейная или полиномиальная зависимость цены от объёма продаж. Это создаёт FOMO и награждает ранних покупателей.

contract FanTokenBondingCurve {
    IERC20 public immutable fanToken;
    uint256 public immutable initialPrice; // цена первого токена в USD (scaled 1e6)
    uint256 public immutable slope; // крутизна кривой (scaled 1e18)
    uint256 public tokensSold;

    function getCurrentPrice() public view returns (uint256) {
        return initialPrice + (slope * tokensSold / 1e18);
    }

    function getBuyCost(uint256 amount) public view returns (uint256) {
        uint256 priceAtStart = getCurrentPrice();
        uint256 priceAtEnd = initialPrice + (slope * (tokensSold + amount) / 1e18);
        return (priceAtStart + priceAtEnd) * amount / 2 / 1e6;
    }

    function buy(uint256 tokenAmount, uint256 maxCost) external payable nonReentrant {
        uint256 cost = getBuyCost(tokenAmount);
        require(cost <= maxCost, "Price slippage exceeded");
        require(msg.value >= cost, "Insufficient payment");
        tokensSold += tokenAmount;
        fanToken.safeTransfer(msg.sender, tokenAmount * 1e18);
        if (msg.value > cost) {
            payable(msg.sender).transfer(msg.value - cost);
        }
        emit TokensPurchased(msg.sender, tokenAmount, cost);
    }
}

Параметры initialPrice и slope настраиваются под каждый клуб. Типичный диапазон начальной цены — $1–5, финальная при полном размещении — $5–20.

Фиатный onboarding

Это ключевое отличие от DeFi-платформ. Болельщик не должен знать про газ — он нажимает «Купить» и платит картой.

Custody и custodial wallet

Два подхода: fully custodial (Chiliz) — платформа держит ключи, максимальная простота UX, но централизация. MPC wallet (рекомендуемый) — ключ разделён между пользователем и платформой; пользователь подписывает через SDK, не видя raw private key. Сравнение: MPC-кошельки в 10 раз безопаснее custodial, так как даже при утечке данных атакующий не получит полный ключ. Провайдеры: Privy, Dynamic, Web3Auth.

import { usePrivy, useWallets } from '@privy-io/react-auth';

function FanTokenPurchase() {
  const { login, authenticated, user } = usePrivy();
  const { wallets } = useWallets();
  const embeddedWallet = wallets.find(w => w.walletClientType === 'privy');

  async function purchaseTokens(amount: number) {
    if (!authenticated) {
      await login();
      return;
    }

    const provider = await embeddedWallet!.getEthereumProvider();
    const walletClient = createWalletClient({
      account: embeddedWallet!.address as `0x${string}`,
      transport: custom(provider)
    });

    const hash = await walletClient.writeContract({
      address: FAN_TOKEN_LAUNCHPAD_ADDRESS,
      abi: LAUNCHPAD_ABI,
      functionName: 'buyWithFiat',
      args: [BigInt(amount), MAX_SLIPPAGE],
      value: parseEther(await getETHCostForAmount(amount))
    });

    return hash;
  }

  return (
    <button onClick={() => purchaseTokens(10)}>
      {authenticated ? 'Купить 10 токенов' : 'Войти и купить'}
    </button>
  );
}

Fiat-to-crypto конвертация

Пользователь платит фиатом — платформа конвертирует в крипту. Варианты: Stripe Crypto, MoonPay, Transak. Интеграция через виджет с webhook для отслеживания статуса.

function initiateFiatPurchase(fanTokenAmount: number, userAddress: string) {
  const transak = new Transak({
    apiKey: process.env.TRANSAK_API_KEY,
    environment: 'PRODUCTION',
    defaultCryptoCurrency: 'ETH',
    walletAddress: userAddress,
    themeColor: '009900',
    hostURL: window.location.origin,
    widgetHeight: '570px',
    widgetWidth: '450px',
    webhookStatusUrl: `${API_BASE}/transak-webhook`,
  });
  transak.init();
  transak.on(Transak.EVENTS.TRANSAK_ORDER_SUCCESSFUL, async (orderData) => {
    await purchaseFanTokens(fanTokenAmount, userAddress, orderData.status.id);
  });
}

Utility и engagement механики

Токен без utility бессмыслен. Launchpad включает инфраструктуру для голосований, NFT drops, эксклюзивного контента. Пример контракта голосования:

contract FanVoting {
    struct Vote {
        string question;
        string[] options;
        uint256 startTime;
        uint256 endTime;
        uint256 minTokensToVote;
        bool resultsPublic;
    }

    mapping(uint256 => Vote) public votes;
    mapping(uint256 => mapping(address => uint256)) public votesCast;
    IFanToken public fanToken;

    function castVote(uint256 voteId, uint256 optionIndex) external {
        Vote storage v = votes[voteId];
        require(block.timestamp >= v.startTime && block.timestamp <= v.endTime);
        require(votesCast[voteId][msg.sender] == 0, "Already voted");
        uint256 balance = fanToken.balanceOf(msg.sender);
        require(balance >= v.minTokensToVote, "Insufficient tokens");
        votesCast[voteId][msg.sender] = optionIndex;
        emit Voted(msg.sender, voteId, optionIndex, balance);
    }
}

Примеры реальных голосований: выбор музыки на стадионе, дизайн лимитированной формы, благотворительная акция.

Вторичный рынок с managed liquidity

Fan-токены не должны торговаться как DeFi-активы. Решение — собственный AMM с price floor и ceiling. Клуб контролирует ликвидность и может выкупать токены при падении цены ниже floor.

contract FanTokenAMM {
    uint256 public minPrice;
    uint256 public maxPrice;
    uint256 public tokenReserve;
    uint256 public ethReserve;

    function swap(uint256 tokenAmount, bool isBuy) external payable nonReentrant {
        uint256 newPrice = _calculateNewPrice(tokenAmount, isBuy);
        if (!isBuy && newPrice < minPrice) {
            revert PriceBelowFloor(newPrice, minPrice);
        }
        _executeSwap(tokenAmount, isBuy);
    }

    function addClubLiquidity() external payable onlyClub {
        tokenReserve += _calculateTokensForETH(msg.value);
        ethReserve += msg.value;
    }
}

Административная панель клуба

Клуб управляет экосистемой через дашборд: текущая цена, холдеры, объём торгов, создание голосований, NFT drops, buyback. Всё без технических знаний.

Что входит в нашу работу (deliverables)

  • Архитектура токеномики и смарт-контракты (Solidity, Foundry)
  • MPC-кошелёк с социальным логином (Privy/Dynamic)
  • Fiat on-ramp интеграция (Transak/MoonPay)
  • Backend API (Node.js, PostgreSQL) и фронтенд (React Native или Next.js)
  • Административная панель клуба
  • Аудит смарт-контрактов и формальная верификация
  • Документация API и руководство администратора
  • Поддержка при запуске и 3 месяца пост-релиза

Регуляторные соображения

Fan-токены в ряде юрисдикций могут считаться securities. Ключевые принципы: utility-only (нет дивидендов), no investment advertising, KYC/AML, geo-restrictions. Учитываем MiCA в ЕС и local laws.

Стек и сроки

Компонент Технология Срок
Smart contracts Solidity + Foundry 4–5 нед
MPC wallet + social login Privy / Dynamic SDK 2–3 нед
Fiat on-ramp Transak / MoonPay 1–2 нед
Backend API Node.js + PostgreSQL 3–4 нед
Frontend (mobile-first) React Native / Next.js 4–6 нед
Club admin panel React + shadcn/ui 2–3 нед
Аудит контрактов 3–4 нед

Полный цикл разработки: 19–27 недель. Половина работы — UX для non-crypto аудитории, которая не простит "gas fee exceeded".

Оценим ваш проект — свяжитесь с нами для консультации. Гарантируем соответствие лучшим практикам безопасности и compliance.

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

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1141