Архітектура крипто-обмінника: від MVP до enterprise
Крипто-обмінник — це не просто платіжний шлюз. Архітектурно він простіший за біржу, але бізнес-логіка вимагає точного управління ліквідністю, курсоутворення та інтеграції з платіжними системами. Неправильне управління маржею — часта причина збитків. Наприклад, при обміні $50 комісія мережі може становити до 10% від суми, що з'їдає прибуток, якщо маржа не адаптивна. Ми вирішуємо це за допомогою tiers — чим більша сума, тим нижчий відсоток. Економія для клієнта — до 30% на дрібних угодах. Ми створюємо обмінники під ключ: від MVP до enterprise-рішень з власною резервною системою. Наші інженери — більше 5 років досвіду в Ethereum та суміжних блокчейнах, 30+ завершених проєктів. Гарантуємо стабільність та відповідність вимогам регуляторів. При розробці ми враховуємо такі нюанси, як мережеві комісії, час підтвердження та волатильність. На одному з проєктів ми зіткнулися з ситуацією, коли фіксована маржа робила 30% угод збитковими — впровадження динамічної маржі виправило це.
Чому варто обрати гібридну модель?
Агрегатор (без ліквідності) роутить замовлення через партнерів — Changelly, ChangeNow. Швидкий старт, мінімальні ризики, але повна залежність від зовнішніх курсів та комісій. Власні резерви дають контроль над курсами та маржею, але вимагають постійного поповнення та моніторингу. Найкраще — гібрид: дрібні угоди (до $1000) виконуються з власного пулу, великі — через агрегатори. Це знижує операційні ризики та забезпечує конкурентоспроможні курси. Ми рекомендуємо саме цей підхід для більшості проєктів.
Як забезпечити безпеку коштів у крипто-обміннику?
Безпека на всіх рівнях: від коду (формальна верифікація смарт-контрактів) до інфраструктури (cold wallets, мультисиг). Для моніторингу транзакцій використовуємо власні рішення з webhooks від Alchemy/QuickNode. Кожна транзакція проходить ланцюжок статусів: created → awaiting → confirming → exchanging → sending → finished. Час життя котирування — 15 хвилин, щоб уникнути прослизання при волатильності. Додатково ми налаштовуємо моніторинг резервів у реальному часі: якщо залишок на hot wallet падає нижче порогу, система автоматично поповнює його з cold storage через мультисиг-транзакцію. Це виключає зависання замовлень та втрату клієнтів.
Що таке динамічна маржа і навіщо вона потрібна?
Фіксована маржа — джерело збитків при дрібних угодах. Наприклад, при обміні $100 з комісією мережі $3 та маржею 2% ($2) обмінник отримує збиток $1. Динамічна маржа вирішує це: для сум до $100 маржа встановлюється 3%, до $1000 — 2%, до $10 000 — 1.5%, вище — 1%. Так обмінник залишається в плюсі, а клієнт платить менше на великих сумах. Реалізується простим кодом:
def get_dynamic_markup(self, amount_usd: Decimal) -> Decimal: tiers = [ (Decimal('100'), Decimal('3.0')), # до $100 — 3% (Decimal('1000'), Decimal('2.0')), # до $1000 — 2% (Decimal('10000'), Decimal('1.5')), # до $10k — 1.5% (Decimal('inf'), Decimal('1.0')), # вище $10k — 1% ] for threshold, markup in tiers: if amount_usd <= threshold: return markup return tiers[-1][1] Процес обміну
- Клієнт вказує пару та суму.
- Система генерує депозитну адресу, фіксує курс.
- Після відправлення клієнтом коштів запускається моніторинг блокчейну.
- Після N підтверджень (конфігурується) — конвертація та відправлення результату клієнту.
- Сповіщення з TxHash виведення.
Управління резервами
class ReserveManager: def reserve_for_exchange(self, currency: str, amount: Decimal) -> bool: """Резервуємо суму для виплати клієнту""" available = self.get_available_reserve(currency) if available < amount: # Не вистачає резервів — потрібно поповнити self.trigger_reserve_topup(currency, amount) return False # Атомарно резервуємо self.db.execute( "UPDATE reserves SET reserved = reserved + %s WHERE currency = %s", (amount, currency) ) return True def check_low_reserves(self): """Сповіщення при низьких резервах""" for currency, balance in self.get_all_reserves(): threshold = self.config.reserve_thresholds[currency] if balance < threshold: self.alerter.send(f"Low reserve: {currency} = {balance} (threshold: {threshold})") Порівняння моделей обмінника
| Модель | Контроль курсу | Ризики | Швидкість запуску |
|---|---|---|---|
| Агрегатор | Немає | Низькі | Швидкий |
| Власні резерви | Повний | Високі | Довгий |
| Гібрид | Частковий | Середні | Помірний |
Вплив кількості підтверджень на час обміну
| Монета | К-сть підтверджень | Середній час |
|---|---|---|
| Bitcoin | 3 | ~30 хв |
| Ethereum | 12 | ~5 хв |
| USDT (ERC-20) | 12 | ~5 хв |
| Solana | 1 | ~10 сек |
Типові помилки при розробці
- Невраховані мережеві комісії при дрібних угодах: динамічна маржа вирішує.
- Відсутність моніторингу резервів у реальному часі — призводить до зависання замовлень.
- Неправильне налаштування часу життя котирування: занадто довго — прослизання, занадто коротко — втрата клієнтів.
Що входить в роботу
- Аналітика та проєктування: вибір моделі, розрахунок маржі, інтеграція із зовнішніми API.
- Розробка back-end (Python/Go) та front-end (React/Next.js).
- Підключення KYC/AML (Sumsub/Veriff) — опціонально.
- Інтеграція з біржами (Binance, CoinGecko) для котирувань.
- Налаштування адмін-панелі для управління курсами, резервами та користувачами.
- Документація, навчання команди, підтримка після запуску.
Строки розробки
- MVP (2–3 пари, без KYC): 6–8 тижнів
- Повноцінний обмінник (10+ пар, KYC, admin panel): 3–4 місяці
- Мобільний додаток: +2–3 місяці
Зв'яжіться з нами для детальної консультації та оцінки вашого проєкту. Наші інженери проаналізують вимоги та підготують комерційну пропозицію з урахуванням ваших завдань. Отримайте консультацію, щоб ми запропонували оптимальну архітектуру та строки.







