Разработка реферальной программы криптобиржи

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка реферальной программы криптобиржи
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка реферальной программы криптобиржи

Реферальная программа — один из самых эффективных каналов привлечения пользователей для криптобиржи. Механика проста: пользователь A приводит пользователя B, получает % от trading fee B. Но в реализации есть несколько нетривиальных аспектов: многоуровневые структуры, расчёт комиссий в реальном времени, антифрод и прозрачный дашборд.

Структура реферальной программы

Одноуровневая vs многоуровневая

Одноуровневая: рефер получает % только от прямых рефералов. Просто в реализации.

Многоуровневая: рефер получает % с рефералов рефералов (дерево). Binance использует двухуровневую: 20% от tier-1, 10% от tier-2.

CREATE TABLE referrals (
    referrer_id UUID NOT NULL,
    referee_id UUID NOT NULL UNIQUE,  -- каждый пользователь имеет одного реферера
    created_at TIMESTAMPTZ DEFAULT NOW(),
    PRIMARY KEY (referrer_id, referee_id)
);

-- Для многоуровневой: рекурсивный CTE для получения дерева
WITH RECURSIVE referral_tree AS (
    -- Базовый случай: прямые рефералы
    SELECT referrer_id, referee_id, 1 AS level
    FROM referrals
    WHERE referrer_id = $user_id

    UNION ALL

    -- Рекурсия: рефералы рефералов
    SELECT r.referrer_id, r.referee_id, rt.level + 1
    FROM referrals r
    JOIN referral_tree rt ON r.referrer_id = rt.referee_id
    WHERE rt.level < 3  -- Ограничиваем глубину
)
SELECT * FROM referral_tree;

Реферальные ссылки и коды

Реферальный код — уникальная строка (6-8 символов), ассоциированная с пользователем. Пользователь может иметь несколько кодов (для разных кампаний, разных ставок).

import secrets
import string

def generate_referral_code(user_id: str) -> str:
    alphabet = string.ascii_uppercase + string.digits
    code = ''.join(secrets.choice(alphabet) for _ in range(8))
    # Проверяем уникальность в базе
    while self.db.code_exists(code):
        code = ''.join(secrets.choice(alphabet) for _ in range(8))
    return code

# Реферальная ссылка: https://exchange.com/register?ref=ABCD1234
# UTM параметры для аналитики: ?ref=ABCD1234&utm_source=referral&utm_medium=link

Расчёт и начисление комиссий

Формула начисления

При каждом трейде:

def calculate_referral_reward(trade: Trade, referrer: User) -> Decimal:
    # Базовая ставка реферальной программы
    base_rate = Decimal('0.20')  # 20% от собранного fee

    # Бонус за объём реферальной сети
    volume_bonus = get_volume_tier_bonus(referrer.referral_network_volume_30d)

    # Ставка может быть кастомизирована для партнёров
    effective_rate = referrer.custom_referral_rate or (base_rate + volume_bonus)

    # Размер reward = fee трейдера × ставка реферала
    taker_fee = trade.fee_amount  # уже рассчитан при исполнении
    reward = taker_fee * effective_rate

    return reward.quantize(Decimal('0.00000001'))  # 8 знаков

Асинхронное начисление

Реферальные начисления не должны блокировать исполнение трейда. Паттерн: трейд завершается, событие публикуется в Kafka, реферальный сервис потребляет асинхронно:

# referral_worker.py
async def process_trade_event(self, trade_event: dict):
    trade_id = trade_event['trade_id']
    user_id = trade_event['user_id']
    fee_amount = Decimal(trade_event['fee_amount'])
    fee_currency = trade_event['fee_currency']

    # Находим реферера пользователя
    referrer = await self.db.get_referrer(user_id)
    if not referrer:
        return

    reward = self.calculate_reward(referrer, fee_amount)
    if reward <= 0:
        return

    # Атомарно: создаём запись + начисляем баланс
    async with self.db.transaction():
        await self.db.create_referral_earning(
            referrer_id=referrer.id,
            referee_id=user_id,
            trade_id=trade_id,
            amount=reward,
            currency=fee_currency
        )
        await self.db.credit_balance(referrer.id, reward, fee_currency)

Антифрод

Типичные злоупотребления

Self-referral: пользователь регистрирует второй аккаунт по своей же ссылке, торгует на нём и получает реферальный % с себя. Обнаружение: проверка совпадения device fingerprint, IP, payment methods при регистрации и KYC.

Wash trading: два аккаунта торгуют между собой, генерируя объём ради реферальных выплат. Обнаружение: анализ контрагентов — если % трейдов между двумя аккаунтами аномально высокий → подозрительно.

Фарм рефералов: массовая регистрация аккаунтов с одного источника. Решение: CAPTCHA, SMS верификация, требование KYC для получения реферальных выплат.

def check_self_referral_risk(referrer_id: str, new_user: NewUser) -> RiskScore:
    referrer = db.get_user(referrer_id)
    score = 0

    # Один IP при регистрации
    if referrer.registration_ip == new_user.registration_ip:
        score += 50

    # Один device fingerprint
    if referrer.device_fingerprint == new_user.device_fingerprint:
        score += 40

    # Один номер телефона или email домен
    if referrer.phone_prefix == new_user.phone_prefix and same_carrier(referrer, new_user):
        score += 20

    return RiskScore(score, 'block' if score >= 70 else 'flag')

Партнёрская программа (субаффилиаты)

Крупные биржи выделяют "партнёров" — KOL-ов, инфлюенсеров, крипто-каналы — с повышенными ставками и отдельным управлением:

Уровень Требования Ставка
Стандарт Нет 20%
Silver 50 рефералов + $10K объём/мес 25%
Gold 200 рефералов + $50K объём/мес 30%
Партнёр Договор + $500K объём/мес 40-50%

Партнёры получают кастомный дашборд с детальной аналитикой по их реферальной сети, API доступ к данным для встраивания в собственные продукты.

Дашборд и аналитика

Реферальный дашборд пользователя должен показывать:

  • Количество рефералов (total, active за 30 дней)
  • Накопленные earnings по периодам
  • Таблицу топ-рефералов по объёму (без раскрытия email/имени)
  • Real-time счётчик earnings сегодня
  • Историю выплат с возможностью export в CSV
interface ReferralDashboard {
  stats: {
    totalReferrals: number;
    activeReferrals30d: number;
    totalEarned: Record<string, string>; // currency → amount
    earnedToday: Record<string, string>;
    pendingPayout: Record<string, string>;
  };
  topReferees: {
    rank: number;
    userId: string; // masked: "user***1234"
    volume30d: string;
    yourEarnings30d: string;
  }[];
  earningsHistory: {
    date: string;
    amount: string;
    currency: string;
    tradeId: string;
  }[];
}

Прозрачность начислений — ключевой фактор доверия. Пользователь должен видеть каждое начисление с привязкой к конкретному трейду реферала.

Выплаты и налоговые последствия

Реферальные выплаты начисляются в реальном времени на trading balance. Вывод — стандартный процесс вывода с биржи. Некоторые биржи добавляют минимальный порог для вывода реферального дохода.

В ряде юрисдикций (US, EU) реферальные выплаты квалифицируются как taxable income. Биржа должна хранить историю выплат и при превышении порогов (например, $600/год в США) предоставлять налоговые формы. Это требует сбора TIN/налогового номера у партнёров с высоким доходом.