PRD v1: Affiliate-программа для Obmenka

Версия: 1.0 (черновик для критики) Дата: 2026-05-16 Автор: AI assistant (синтез из 3 источников — см. docs/affiliate-research/) Статус: на внутренней критике, до v2


1. Executive Summary

Запускаем модуль аффилиатной программы: партнёры (туристы-блогеры, крипто-TG-каналы, локальные инфлюенсеры в Анталье) приводят клиентов и получают комиссию с каждой их сделки в виде USDT.

Базовая модель (E7.1 MVP): - 1 уровень партнёров (без sub-affiliate в MVP) - Комиссия: 30% от нашей маржи (profit_usdt) на каждой сделке приведённого клиента - Lifetime-привязка после первой сделки - Cookie window 30 дней до первой сделки - Минимум выплаты 50 USDT, hold 7 дней, USDT-TRC20 - Регистрация через admin (нет self-signup)

Бизнес-цель: дешевый канал привлечения новых клиентов с предсказуемой unit-экономикой. Платим только за результат (профит-shared), а не за лиды.

Ожидаемые метрики через 6 месяцев: - 15–30 активных партнёров - ≥20% новых клиентов приведены партнёрами - LTV/CAC через партнёров > 5× (т.к. CAC = % от их же сделок)

Объём работы: - E7.1 MVP: 3–4 недели - E7.2 (multi-level + 2FA + автоплатежи): 2–3 недели


2. Бизнес-обоснование

2.1. Почему запускаем сейчас

После E1–E6 у нас есть рабочая CRM с реальными сделками и блокчейн-сверкой. Появилась стабильная база, на которую можно «накручивать» канал привлечения. Без партнёрки CAC через рекламу в Анталье в туристический сезон = $30–100/клиент. Партнёрка платит только когда клиент уже принёс деньги.

2.2. Почему именно крипто-обменник нуждается в affiliate

Из research: - Binance/Bybit/OKX/MEXC — все делают по 30–50% от торговой комиссии, это стандарт индустрии 2025–2026. - Bestchange (агрегатор) — 30% Level 1 + 10% Level 2 + lifetime. - Coinsfera (прямой конкурент в Стамбуле) имеет partner-программу, детали закрыты.

Без affiliate — мы единственные в Анталье без партнёрки. Это упускаемый рост.

2.3. Метрики успеха модуля (через 3 / 6 месяцев)

Метрика 3 мес 6 мес
Активных партнёров 5–10 15–30
Клиенты, приведённые партнёрами ≥10% ≥20%
Доля комиссий партнёрам от валовой прибыли 5–10% 10–15%
Средний оборот клиента партнёра ≥ $5k за период активности ≥ $10k
Кол-во кейсов self-referral fraud < 3% от партнёров < 1%
Скорость выплаты (запрос → перевод) < 48 часов < 24 часов
Чистый прирост валовой прибыли с учётом комиссий положительный ≥ +15% к baseline

3. Целевая аудитория партнёров и сценарии использования

3.1. Сегменты партнёров

Сегмент Объём Канал Что нужно от системы
Туристы-блогеры в Анталье 5–15 чел Instagram/YouTube/TG Visa-friendly реф-код, QR на флайере, лендинг на турецком/русском
Крипто-TG-каналы (RU/EN) 5–20 каналов Telegram, тематические чаты Реф-ссылка, статистика real-time, кастомные баннеры
Локальные инфлюенсеры (TR) 3–10 чел Instagram TR, TikTok TR Турецкий лендинг, поддержка lira-операций
Сами клиенты (word-of-mouth) 20–50 чел Личные знакомства Простой код «скажи на кассе», маленький порог выплаты
B2B/корпораты (фаза 2+) 1–3 партнёра Прямые контракты Override-ставки, ручной payout, оптимизация под объём

3.2. Ключевые user stories

Партнёр-блогер: 1. Регистрируется через admin (на MVP), получает ref-код и QR. 2. Постит сторис «Меняю крипту у [ссылка/QR]». 3. Клиент переходит, обращается в Telegram/приходит в офис. 4. Менеджер/кассир видит «есть привязка к партнёру по cookie/коду», оформляет сделку. 5. Партнёр в кабинете видит — «+15 USDT начислено, доступно через 7 дней». 6. Запрашивает выплату при 50+ USDT → получает USDT-TRC20 в течение 48 часов.

Кассир в Лиман-точке: 1. Турист говорит «у меня код от Анны: ANNA-IST». 2. Кассир в CRM открывает форму новой сделки. 3. В поле «Партнёр» — autocomplete по коду или имени партнёра. 4. Создаёт сделку как обычно → система сама начислит комиссию.

Admin: 1. Получает заявку от потенциального партнёра в TG. 2. Создаёт Affiliate в /affiliates/new (имя, контакты, payout-адрес). 3. Подписывает партнёрский договор (вне CRM, в PDF). 4. Раз в неделю проверяет /payouts на ожидающие запросы. 5. Одобряет, выбирает Operation с фактической on-chain транзакцией выплаты.


4. Модель вознаграждения

4.1. Базовая формула (E7.1)

commission_amount_usdt = (deal.profit_usdt × tier1_pct) − fixed_overhead

где: - deal.profit_usdt — уже считаемая прибыль = (indicative_rate − applied_rate) × give_amount × FX_to_USDT[get_asset] - tier1_pct = 30% для default-программы

Почему от profit_usdt, а не от volume:

Подход За Против
% от profit (наш выбор) Защищает экономику: партнёр получит больше когда наша маржа больше; естественный hedge Партнёр не видит «своей» цифры заранее, может казаться непрозрачным
% от volume Простая коммуникация: «1% с каждой сделки» На сделках с минимальной маржой мы платим больше чем зарабатываем
Фикс per deal Понятно партнёру Не масштабируется, мотивирует фрод-малые сделки
Hybrid Гибкость Сложно объяснить, легко переплатить

Решение для MVP: profit-based с возможностью переключения программы на volume-based для отдельных партнёров (отдельная программа).

4.2. Примеры расчёта

Сделка profit_usdt tier1_pct Партнёру Чистая прибыль нам
1000 USD → 970 USDT (markup 3%) 30 30% 9 USDT 21 USDT
5000 USD → 4900 USDT (markup 2%) 100 30% 30 USDT 70 USDT
50000 USD → 49600 USDT (markup 0.8%) 400 30% 120 USDT 280 USDT

4.3. Multi-level (E7.2)

  • Tier 1 (прямой партнёр клиента) = 30% от profit
  • Tier 2 (партнёр, который привёл Tier 1) = 5% от profit (НЕ от Tier 1)
  • Tier 3 = не реализуем даже в фазе 2

Защита от каскадной мотивации к sub-affiliate fraud: tier2 существенно ниже tier1 (5% vs 30%), чтобы партнёру было невыгодно создавать «фейкового sub-партнёра» ради 5% (учитывая, что эти sub-партнёры должны пройти admin-approval и KYC).

4.4. Tier'ы по объёму (E7.2)

Опционально, если оправдает себя: - Bronze (default): 30% Tier1 / 5% Tier2 - Silver (≥ $500 заработанной партнёром маржи за 30 дней): 35% / 5% - Gold (≥ $2000): 40% / 7%

Переоценка ежемесячно, protection period 2 месяца при downgrade (Binance-стиль).

4.5. Исключения

  • Сделки в UAH/RUB (опционально, по решению admin) — комиссия 50% от стандартной (т.к. эти валюты у нас прокси-каналы, маржа меньше)
  • Сделки внутрениие переводы (op_type=internal) — комиссия 0
  • Cancelled сделки — 0
  • Cделки в excluded_assets программы — 0
  • Cap на одну сделку — 200 USDT (защита от «one shot fraud»)

5. Tracking и Attribution

5.1. Способы привязки клиента к партнёру

3 канала:

  1. Реферальная ссылка https://obmenka.felix.nohumaninside.me/r/{code} - Публичный endpoint без auth - Инкрементит ref_codes.clicks_count - Ставит cookie obm_ref (signed, TTL 30 дней) - 302-redirect на main landing - При создании нового Client → cookie → client.referrer_affiliate_id

  2. Manual ввод менеджером/кассиром - В форме новой сделки или карточке клиента — поле «Партнёр» с autocomplete - Кассир выбирает по ref-коду (клиент сказал устно) или имени партнёра - Запись в client_affiliations с source='manual', reason обязателен

  3. Self-claim через TG-бот (фаза 3) - Клиент пишет боту «у меня код TGTR2026» - Бот резолвит и привязывает

5.2. Attribution window

  • До первой сделки: cookie 30 дней (стандарт e-commerce)
  • После первой сделки клиента: lifetime-привязка (как Bybit/Binance)
  • Lifetime означает: все будущие сделки клиента → партнёру, пока админ не перепривяжет вручную

5.3. Перепривязка

  • Менеджер может переключить клиента на другого партнёра (требует reason)
  • Старая запись в client_affiliations помечается detached_at
  • Уже начисленные комиссии не меняются (snapshot в commission_entries.affiliate_id)
  • Новые сделки идут новому партнёру

5.4. Anti-conflict правило

Если cookie cтавит partner A, а менеджер хочет привязать к partner B (например, клиент пришёл по знакомству) — это требует подтверждения admin или явного указания «cookie перекрыта» в форме с причиной.


6. Anti-fraud

6.1. Обязательный минимум (E7.1)

Проверка Где Действие
Self-referral (partner и client совпадают по tg_username/phone) accrue_for_deal commission_entry.status='voided'
Партнёр заблокирован accrue_for_deal Не начисляем
Сделка cancelled hold-cron Не переводим в available
Минимальная сделка (профит ≥ $5 USDT) accrue Меньше — voided: too_small
Cap на сделку (200 USDT/комиссия) accrue Cap
KYC партнёра обязателен до payout approve_payout Reject если нет

6.2. Anti-wash-trading (E7.2)

Правило Paxful: если у одной сделки обе стороны — рефералы одного партнёра, комиссия снижается до 50% от стандартной. Например, 30% → 15%.

Реализация: при accrue смотрим, есть ли в другой стороне сделки клиент с тем же referrer_affiliate_id. Сложно для крипто-on-chain стороны (там анонимный wallet), но для cash↔crypto в обменнике — обе стороны имеют клиента.

6.3. Velocity limits (E7.2)

  • Не больше 5 новых рефералов в день от одного партнёра без admin review
  • Не больше 50 в месяц без upgrade tier

6.4. Что НЕ делаем в MVP

  • Device fingerprinting (30–40% false match per research)
  • ML/rule-based fraud detection (нет данных для обучения)
  • IP-кластеризация (можно проще через self-referral check)

7. Lifecycle комиссии и выплат

7.1. Состояния commission_entry

[создан в момент Deal → done]
       ↓
   pending
       ↓ (hold_days=7 истекли AND сделка не cancelled)
   available
       ↓ (партнёр запросил payout, admin одобрил)
   paid
       ↓ (опционально, через reconcile)
   linked to raw_blockchain_tx

Альтернативные пути: - voided — при failure-проверке (self-referral, too_small, asset excluded) - reversed — при отмене сделки уже после paid (баланс может уйти в минус, ручной разбор)

7.2. Hold период

7 дней для MVP. Обоснование: - Стандарт индустрии для крипто без card-chargebacks = 7–14 дней - Достаточно для AML-проверки реферальной сделки - Не слишком долго для UX партнёра

Программа может настраивать это поле (по умолчанию 7).

7.3. Выплаты

Триггер (MVP): manual — партнёр сам запрашивает в кабинете.

Условие: balance_available ≥ 50 USDT (минимум программы).

Approval flow: 1. Partner → POST /aff/payouts/request (если ≥ min) → создаётся payout_request(status=pending) 2. Admin видит в /payouts, в pending 3. Admin делает USDT-TRC20 перевод (вручную из cold wallet или через систему) 4. Admin в админке нажимает «Одобрить» → вводит/выбирает Operation(op_type=crypto_out) (та самая Operation выплаты) 5. Все commission_entries.available партнёра до суммы запроса → paid 6. reconcile.py автоматически свяжет payout_request.matched_raw_tx_id с реальной on-chain транзакцией

Periodicity: на MVP — по запросу. В E7.2 — опция «каждую среду авто» / «при threshold».

7.4. Запрос-вывод vs автомат

Подход MVP Фаза 2
Партнёр сам кнопкой
Авто при threshold (например, 200 USDT) ✅ опционально per affiliate
Scheduled (каждый вторник) ✅ опционально

8. Модель данных (краткая сводка)

Детали в docs/affiliate-research/03-architecture-plan.md.

Новые таблицы: - affiliate_programs — настройки программы (ставки, hold, min_payout, attribution) - affiliates — партнёры (с FK на users для auth) - ref_codes — реф-коды (несколько на партнёра) - client_affiliations — история привязок (partial UNIQUE на одну активную) - commission_entries — начисления (UNIQUE (deal_id, affiliate_id, tier)) - payout_requests — запросы выплат + связь с Operation

Изменения существующих: - clients += referrer_affiliate_id, referrer_ref_code_id, referrer_set_at - deals += affiliate_snapshot_id, commission_calculated_at - users += totp_secret, totp_enabled, affiliate_id - roles += новая запись affiliate

Размер: - На 150 сделок/мес × 1 партнёр в среднем = 150 commission_entries/мес = ~1800/год - При 30 партнёрах и 10k сделок/мес (далёкая перспектива) — 30k/мес = 360k/год. Тоже нормально для Postgres.


9. UX / Экраны

9.1. Партнёрский кабинет — отдельный layout aff_base.html

Зачем отдельный: визуально отличается от админки (другой цвет/брендинг), партнёр и админ не путаются. Под URL'ом /aff/*, не на отдельном subdomain в MVP (потому что Caddy config + cert hassle).

Экраны:

Путь Содержание
/aff 3 KPI карточки: «Доступно к выплате» / «В hold-периоде» / «Всего заработано»; кнопка «Запросить выплату» (disabled если меньше min); последние 10 начислений; реферальная ссылка с QR
/aff/links Список ref-кодов: code, label, clicks, signups, deals, status. Кнопка «+ Создать ссылку» (modal)
/aff/clients Псевдонимизированный список: C-XXXX, дата привязки, кол-во сделок, объём в USDT, моя комиссия
/aff/earnings Журнал commission_entries с фильтрами, экспорт CSV
/aff/payouts История запросов и выплат, TXID кликабельный на TronScan
/aff/settings Профиль, payout-адрес (с валидацией формата TRC20), пароль, 2FA (фаза 2)

9.2. Админская часть — под существующим сайдбаром

Добавляется новая группа в base.html:

Партнёры
├── /affiliates          — Список партнёров
├── /affiliate-programs  — Программы (ставки, hold, min_payout)
└── /payouts             — Ожидающие выплаты

Изменения существующих экранов: - /clients/{id} — блок «Привязка к партнёру» (manager может менять, history-табличка) - /clients — колонка «Партнёр» + фильтр - /deals/{id} — блок «Комиссии партнёрам» (read-only список начислений) - / (dashboard для admin/manager) — виджет «Аффилиатная программа» (активных партнёров / комиссии за сегодня / pending выплат)

9.3. Привязка клиента к партнёру (для кассира)

В форме новой сделки /deals/new добавляется опциональное поле «Реф-код / Партнёр» — autocomplete по активным ref_codes.code + affiliates.display_name. Если поле заполнено и client.referrer_affiliate_id IS NULL — привязываем клиента к этому партнёру (с source='manual').


10. RBAC и privacy

10.1. Новая роль affiliate

Может: - Видеть свой кабинет (все /aff/* пути) - Видеть свою статистику (агрегаты) - Запрашивать выплату - Менять payout-адрес и пароль

НЕ может: - Видеть других партнёров - Видеть детали клиентов (только псевдоним C-XXXX + агрегаты) - Видеть детали сделок (только дата + тип + сумма комиссии) - Видеть, кто его upline (parent_affiliate_id скрыт) - Создавать сделки или изменять клиентов

10.2. Обновлённая NAV_BY_ROLE

"admin":      {..., "affiliates", "affiliate_programs", "payouts"},
"manager":    {..., "affiliates"},  # видит список, может привязывать клиентов
"accountant": {..., "affiliates", "payouts"},  # read-only для отчётов
"cashier":    {...},  # без affiliate в сайдбаре, только в форме сделки
"viewer":     {...},  # без изменений
"affiliate":  {"aff_dashboard", "aff_links", "aff_clients", "aff_earnings", "aff_payouts", "aff_settings"},

10.3. Privacy

Партнёр в кабинете видит: - ✅ Псевдоним клиента C-XXXX - ✅ Дата привязки - ✅ Количество и совокупный объём сделок клиента - ❌ ФИО / телефон / email / Telegram-username клиента - ❌ Детали отдельных сделок (валюты, контрагенты)

Это критично для: - Защиты от утечки клиентской базы (если у партнёра скомпрометирован пароль) - GDPR-минимизации - Защиты от перехвата клиентов конкурентами (если партнёр станет нелояльным)

10.4. 2FA

На MVP: опционально. Партнёр включает в /aff/settings. По умолчанию выключено.

В фазе 2: обязательно для: - Изменения payout-адреса (req re-auth) - Запроса выплаты > 500 USDT


11. Юридический контекст (Турция)

Из research: - MASAK 2024: KYC обязателен для каждой crypto-операции > 15 000 TRY (~$425). У нас это всё равно есть для клиентов. - С 1 января 2025: 1% withholding tax на платежи intermediary/e-commerce service providers. Затрагивает выплаты партнёрам. - CMB регулирует криптообменники как CASPs. Минимальный капитал 150M TRY (~$4.1M) для получения лицензии. На MVP не требуется (мы не подаём заявку), но через 6–12 месяцев — нужно обсудить. - Без лицензии CASP — уголовка 3–5 лет. Делаем минимум видимости в Турции, реклама партнёров на турецком — только с расчётом на это.

11.1. Партнёрский договор (обязательно перед первой выплатой)

Документ вне CRM, в PDF/Doc. Обязательные пункты: 1. Commission structure (rate, attribution, qualification) 2. Cookie duration (30 дней до первой сделки, lifetime после) 3. Payment terms (USDT-TRC20, мин 50, hold 7 дней) 4. Запрещённые активности (cookie stuffing, brand bidding, спам, self-referral) 5. KYC/AML compliance аффилиата 6. Tax responsibility (аффилиат сам декларирует доход) 7. 1% withholding tax — кто платит (мы удерживаем; в договоре обозначить) 8. Termination, IP rights, конфиденциальность клиентских данных 9. FTC disclosure (для US-audience) — #ad обязательно 10. Jurisdiction — Турция, dispute resolution

11.2. KYC партнёра

Минимум: - Имя, контакты (TG + email + phone) - Tax-ID (TR — TC Kimlik для резидентов, foreign tax-ID для нерезидентов) - Payout-кошелёк (TRC20 address) + screening через AMLBot/Chainalysis - Страна резидентства

Требуется до: - Первой выплаты > 50 USDT (опционально на MVP) - Любого payout в фазе 2 (обязательно) - Для физических партнёров с monthly payout > €1000 — расширенный KYC (паспорт + селфи)


12. Фазы реализации

E7.1 — MVP (3–4 недели)

Цель: запустить программу с 3–5 ручными партнёрами, плоская комиссия от profit, ручные выплаты.

В scope: - Миграции: 6 новых таблиц + ALTER 4 существующих - 1 программа default (profit_usdt × 30%, hold 7 дней, min 50 USDT) - БЕЗ multi-level (max_tier_depth=1) - attribution = lifetime после первой сделки + cookie 30 дней до - Партнёрский кабинет (без 2FA) - Tracking /r/{code} + cookie + auto-attach при создании клиента - Manual attach менеджером в карточке клиента или в форме сделки - Accrual в момент deal.status → done (модификация routes/deals.py) - Hold-cron job каждый час - Admin: CRUD affiliates, программа (одна default), approve payouts - Audit пишется через существующий record_audit()

Не в scope: - Multi-level (tier2_parent_id) - Automatic payouts по threshold - 2FA TOTP - Self-signup партнёра - Fraud detection кроме базовых проверок - Отдельный subdomain - Webhooks/нотификации

Готово когда: партнёр может зарегистрироваться (через admin), получить ref-код, привести клиента, увидеть свою комиссию в кабинете, запросить выплату, admin её одобрить.

E7.2 — Multi-level + автоматизация (2–3 недели)

В scope: - parent_affiliate_id + tier2_parent_id + tier3_parent_id (denorm) - affiliate_programs.tier2_pct (5% от profit), max_tier_depth ≤ 2 - Override per affiliate (override_tier1/2_pct) - attribution_mode = first_n_days, first_deal_only опции - 2FA TOTP для роли affiliate - Anti-self-referral check (tg_username/phone match) - Anti-wash-trading правило Paxful - Velocity limits (5 рефералов/день) - Automatic payout creation при threshold ≥ 200 USDT - Scheduled payouts (weekly/monthly opt-in) - UI: дерево даунлайна в карточке партнёра - Tier-bonus (Bronze/Silver/Gold)

E7.3 — Advanced (отложено)

  • Smart-contract выплаты (USDT-TRC20 авто, с приватным ключом)
  • Self-signup партнёра (с модерацией)
  • ML/rule fraud detection
  • Отдельный subdomain partners.obmenka.felix...
  • Webhooks для партнёров (когда у их клиента сделка)
  • Email-уведомления партнёрам (digest)
  • A/B-тесты программ (когорта получает другую ставку)
  • Tax reporting export (для бухгалтерии)
  • Multi-currency payouts (TRY/USD cash в офисе)

13. Открытые вопросы для согласования

13.1. Бизнес-вопросы (требуют ответа от пользователя/руководителя)

  1. Базовая ставка 30% от profit_usdt — приемлемо? Это даёт партнёру 30% от нашей прибыли. На сделке с 100 USDT профита → 30 USDT партнёру. Если хочется 20% или 40% — скажи.

  2. Cap 200 USDT на одну сделку — нужен для защиты от «один раз привёл VIP-клиента с миллионной сделкой и получил пожизненную полу-прибыль». Альтернатива: убрать cap (доверять рынку). Что выбираем?

  3. Lifetime-привязка после первой сделки — стандарт индустрии (Binance/Bybit), но это значит платить вечно. Альтернатива: limited window (например, 12 месяцев с момента первой сделки). Через 12 мес клиент «отвязывается».

  4. Tier 2 (sub-affiliate) в фазе 2 — оставляем 5%, или предпочитаешь не делать multi-level вообще?

  5. Минимум payout 50 USDT — низковато для нашего рынка (50$ это нормально для турецкого бизнес-сегмента), или поднять до 100?

  6. Withholding tax 1% — мы удерживаем при выплате (как Турция требует с 2025) или платим сами и закладываем в комиссию?

  7. Список запрещённых стран для рефералов — будут ли санкционные ограничения? RU/BY/Иран — пускаем партнёров оттуда или нет?

13.2. Open для архитектуры (могу решить сам, но хочу подтверждения)

  1. base_model per program: оставляем profit_usdt как основу или добавляем volume_usdt как опцию для отдельных программ? Я бы сделал обе доступны, но default = profit_usdt.

  2. 2FA для партнёра — опционально на MVP, обязательно в фазе 2. Согласен?

  3. Партнёрский кабинет под /aff/* или на отдельном subdomain? Я бы оставил под основным — Caddy уже настроен, экономит 1 день инфры.


14. Что НЕ делаем в первой версии и почему

Что Почему
Multi-level Нет ещё достаточного количества партнёров для каскада
4+ уровней tier MLM-территория, фрод-магнит
Self-signup партнёра Barrier против fraud-аккаунтов
Device fingerprinting 30–40% false match, не оправдывает сложность
CPA-only модель Гарантированный приток ботов
Несколько программ Одна default достаточно
Smart-contract выплаты Хранение приватных ключей — отдельный domain ответственности
Webhooks Нет инфры для outgoing webhooks
ML fraud detection Нет данных для обучения
Edit/Delete сделки админом Источник истины — append-only audit log
Custom landing pages под каждого партнёра На MVP — один лендинг, partner customization через UTM-параметры
Bonus за первый депозит реферала Не делаем CPA — только revenue share

15. Связь с существующей системой

Модуль интегрируется минимально-инвазивно:

Точка интеграции Что меняется
models.py +6 новых классов + ALTER в 4 существующих
routes/deals.py Добавить вызов commission_engine.accrue_for_deal(deal) в 2 точках done-перехода (в той же транзакции)
routes/clients.py Добавить поля «Партнёр» в форму нового клиента (опционально) и в карточку клиента
auth.py Добавить роль affiliate в NAV_BY_ROLE
main.py Подключить новые router'ы (affiliates, aff_dashboard, payouts)
templates/base.html Добавить группу «Партнёры» в сайдбар
templates/aff_base.html НОВЫЙ — layout для партнёрского кабинета
Существующие cron-таймеры Добавить obmenka-commission-release.timer (hourly)
reconcile.py Расширить — может линковать payout_request → raw_blockchain_tx
audit_log Действия: affiliate_created, commission_accrued, commission_voided, payout_requested, payout_approved, payout_rejected

Принцип: не переписывать сделочный flow, а добавить «модуль рядом» с явными точками вызова.


16. Приложение: сравнительная таблица моделей (для обоснования)

Биржа Базовая % Max % Sub-tier Lifetime Min withdraw Что берём
Binance 41% spot 50% 2-tier (промо) да 0 модель квартального review
Bybit 30% 50% +10% override, cap 50% да 0 daily payouts (фаза 2)
OKX 30% 50% да, % настраиваемая нет n/a hourly settlement (фаза 2)
WhiteBIT 40% 60% 6 volume-tier да n/a tier-система (фаза 2)
MEXC 50% 70% (с MX) +10% да n/a агрессивный starter
ChangeNOW 0.4% custom n/a да n/a fee markup как опция
BestChange 30% 30% + CPL 2-tier (30%/10%) да $1 главный референс
Paxful (historical) 50% 50% 10% sub да 0 anti-wash правило 25%
Наша программа 30% от profit 30% (MVP) → 40% (Gold) +5% Tier 2 (фаза 2) да после 1 сделки 50 USDT синтез BestChange + Paxful

Конец PRD v1. Следующий шаг — критика и переработка в v2.