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

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

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

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

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

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

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

Реферальна програма — один із найефективніших каналів залучення користувачів для криптобіржи. Механіка проста: користувач A приводить користувача B, отримує % від торговельної комісії B. Але в реалізації є кілька нетривіальних аспектів: багаторівневі структури, розрахунок комісій у реальному часі, запобігання шахрайству та прозорі дашборди.

Структура реферальної програми

Одноуровнева проти багаторівневої

Одноуровнева: рефер отримує % лише від прямих рефералів. Проста у реалізації.

Багаторівнева: рефер отримує % від рефералів рефералів (дерево). 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% від зібраної комісії

    # Бонус за обсяг реферальної мережі
    volume_bonus = get_volume_tier_bonus(referrer.referral_network_volume_30d)

    # Ставка може бути налаштована для партнерів
    effective_rate = referrer.custom_referral_rate or (base_rate + volume_bonus)

    # Розмір вознаграження = комісія трейдера × ставка рефералу
    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)

Запобігання шахрайству

Типові зловживання

Саморефераль: користувач реєструє другий аккаунт за своїм посиланням, торгує на ньому та отримує реферальний % з себе. Виявлення: перевірка збігу fingerprint пристрою, IP та способів оплати при реєстрації та 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 для вбудовування даних у свої продукти.

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

Реферальний дашборд користувача повинен показувати:

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

Прозорість нарахувань — ключовий фактор довіри. Користувач повинен бачити кожне нарахування з привязкою до конкретної торгівлі рефера.

Виплати та податкові наслідки

Реферальні виплати нараховуються у реальному часі на торговельний баланс. Виведення — стандартний процес виведення з біржи. Деякі біржи додають мінімальний поріг для виведення реферального доходу.

У деяких юрисдикціях (США, ЄС) реферальні виплати кваліфікуються як оподатковуваний дохід. Біржа повинна зберігати історію виплат та при перевищенні порогів (наприклад, $600/рік у США) надавати податкові форми. Це вимагає збирання TIN/податкового номера від партнерів з високим доходом.