Разработка системы депозитов и выводов криптовалют

Один из самых частых сценариев потери средств на бирже — ошибка в обработке реорга блокчейна: транзакция считается подтверждённой, но блок откатывается, и деньги уходят в никуда. Ещё одна боль — газовые войны: при выводе ETH цена газа взлетает, транзакция застревает, пользователи паникуют. Мы строим

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

Часто задаваемые вопросы

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Один из самых частых сценариев потери средств на бирже — ошибка в обработке реорга блокчейна: транзакция считается подтверждённой, но блок откатывается, и деньги уходят в никуда. Ещё одна боль — газовые войны: при выводе ETH цена газа взлетает, транзакция застревает, пользователи паникуют. Мы строим систему депозитов и выводов, которая устойчива к таким ситуациям. Архитектура базируется на proven паттернах: multi-sig, HSM, автоматический reorg-handling, адаптивное управление газом.

Наша команда имеет 5+ лет опыта в блокчейн-разработке и реализовала более 50 проектов для криптобирж и DeFi-протоколов. Мы гарантируем, что ваша система депозитов и выводов будет соответствовать лучшим индустриальным практикам. Свяжитесь с нами, чтобы обсудить архитектуру вашей биржи — мы оценим проект и предложим оптимальное решение.

Как генерируются депозитные адреса?

Каждый пользователь получает уникальный депозитный адрес для каждой сети. Существуют два подхода.

HD Wallet (Hierarchical Deterministic). Из одного мастер-seed генерируется детерминированное дерево ключей по BIP-32 и BIP-44. Для Bitcoin: m/44'/0'/0'/0/{user_index}. Для Ethereum: m/44'/60'/0'/0/{user_index}.

import { HDNodeWallet } from "ethers"; const masterNode = HDNodeWallet.fromMnemonic(Mnemonic.fromPhrase(MASTER_MNEMONIC)); function getDepositAddress(userId: number, coinIndex: number): string { // m/44'/coinIndex'/0'/0/userId const child = masterNode .deriveChild(44 + 0x80000000) // purpose .deriveChild(coinIndex + 0x80000000) // coin type .deriveChild(0 + 0x80000000) // account .deriveChild(0) // external .deriveChild(userId); return child.address; } 

Мастер-seed хранится в HSM или в зашифрованном vault (HashiCorp Vault). Публичные ключи для генерации адресов — в БД, приватные ключи для подписи — только в HSM.

Shared address + memo — один адрес на всю биржу, пользователь указывает memo/tag. Используется для Ripple (XRP), Stellar (XLM), Cosmos. Дешевле в обслуживании, но ошибка в memo — потеря средств.

Мониторинг входящих транзакций

Сервис мониторинга подписывается на события блокчейна:

  • EVM chains: eth_subscribe("logs", { address: [depositAddresses], topics: [ERC20_TRANSFER_TOPIC] }) через WebSocket к ноде + polling eth_getBlockByNumber как fallback
  • Bitcoin: zmqpubrawtx от Bitcoin Core + периодическое сканирование адресов через scantxoutset
  • TRON: TronGrid WebSocket или polling TronScan API
type DepositMonitor struct { node EthClient db *DB confirmations int // минимум подтверждений } func (m *DepositMonitor) ProcessBlock(blockNum uint64) { receipts := m.node.GetBlockReceipts(blockNum) for _, receipt := range receipts { for _, log := range receipt.Logs { if !isERC20Transfer(log) { continue } to := common.HexToAddress(log.Topics[2].Hex()) if !m.db.IsDepositAddress(to) { continue } m.recordPendingDeposit(Deposit{ TxHash: receipt.TxHash, BlockNum: blockNum, UserAddress: to, Token: log.Address, Amount: new(big.Int).SetBytes(log.Data), }) } } } 

Подтверждения и finality

Количество требуемых подтверждений зависит от сети и суммы:

Сеть Минимум подтверждений Причина
Bitcoin 3–6 Вероятность реорга
Ethereum 12–20 (или finalized) Post-merge finality
Polygon PoS 100–256 Checkpoint finality
BSC 15–20 PoSA, более централизован
TRON 19 Solid consensus
Solana 32 (finalized) Tower BFT

После достижения порога подтверждений депозит зачисляется на баланс пользователя. До этого — в статусе pending. Отображаем пользователю pending депозиты с индикатором прогресса.

Reorg handling: хранить block_hash вместе с block_number. При обнаружении реорга (хэш блока изменился) — помечать затронутые транзакции как reorged и переначинать мониторинг.

Как происходит консолидация средств (sweeping)?

Депозитные адреса — тысячи или миллионы. Хранить ETH на каждом адресе — дорого и небезопасно. Нужна автоматическая консолидация на master hot wallet:

func (s *Sweeper) SweepAddress(depositAddr Address) error { balance, _ := s.node.GetBalance(depositAddr) if balance.Cmp(s.minSweepAmount) < 0 { return nil // не стоит газа } // Для ERC20: сначала нужно отправить ETH на газ if s.token != ETH { gasCost := estimateGas(depositAddr, HOT_WALLET, token) s.fundGas(depositAddr, gasCost) } // Подписываем через HSM — приватный ключ depositAddr никогда не покидает HSM tx := s.buildTransfer(depositAddr, HOT_WALLET, balance) signed := s.hsm.Sign(depositAddr, tx) return s.node.SendRawTransaction(signed) } 

Для ERC20 токенов задача осложняется: нужен ETH на газ на депозитном адресе. Решения:

  1. Gas station: отправлять ETH перед sweep, потом sweep токенов
  2. Gasless sweep через EIP-2612/permit: если токен поддерживает permit, биржа сама оплачивает газ
  3. Batch sweep через multicall: один вызов собирает средства с множества адресов

Экономия на газе при использовании batch sweep может достигать $40 000 в месяц при высоких объёмах.

Архитектура выводов

Вывод проходит несколько стадий:

REQUESTED → VALIDATED → APPROVED → SIGNING → BROADCASTING → PENDING → CONFIRMED 

VALIDATED: проверка баланса, лимитов, AML/KYC. Если прошёл — резервируем средства (вычитаем из available balance).

APPROVED: для крупных сумм — manual review оператором биржи или мультиподпись (M-of-N апрув от нескольких операторов). Для малых сумм — автоматический апрув.

SIGNING: подпись транзакции в HSM или cold wallet системе. Никогда не подписываем на сервере, где хранится логика апрувов — разделение обязанностей.

BROADCASTING: отправка транзакции в сеть. После этого транзакцию нельзя отменить.

Gas management

Биржа должна оплачивать газ за выводы. Нужна система управления газом:

  • Мониторинг eth_gasPrice / EIP-1559 baseFee + maxPriorityFee
  • Бюджет на газ: учитываем стоимость газа в себестоимости вывода или в комиссии
  • RBF (Replace By Fee) для застрявших Bitcoin транзакций
  • EIP-1559 bump: при застревании Ethereum транзакции — отправить с тем же nonce и увеличенным maxFeePerGas

Нотификации и статусы

Пользователь должен видеть состояние вывода в реальном времени. Интеграция:

  • WebSocket push при каждом изменении статуса
  • Email/Telegram уведомления на ключевых этапах (апрув, отправка, подтверждение)
  • Transaction hash с ссылкой на explorer сразу после broadcasting

Как обеспечивается безопасность?

Критические проверки:

  • Whitelist адресов: требовать добавления нового адреса за 24–48 часов до возможности вывода на него. При добавлении — email подтверждение + 2FA.
  • Anti-phishing: отображать anti-phishing код в письмах и UI (пользователь сам его устанавливает). Если его нет — подозрительно.
  • Лимиты вывода: дневные лимиты по уровням KYC. При превышении — manual review.
  • Velocity checks: несколько выводов за короткое время → временная блокировка и уведомление.

Hot/Warm/Cold wallet сегрегация

  • Hot wallet: небольшой операционный запас (10–20% от дневного объёма выводов), всегда online, автоматические выводы
  • Warm wallet: multi-sig (2-of-3 или 3-of-5 hardware keys), пополняет hot wallet раз в день
  • Cold wallet: оффлайн хранение, только для крупных резервов, ручная процедура доступа

Распределение: 5–10% hot, 15–20% warm, 70–80% cold. Конкретные цифры зависят от объёмов и модели рисков биржи.

Инфраструктура и надёжность

Нода vs API провайдер: собственная полная нода даёт надёжность и независимость. API провайдеры (Alchemy, QuickNode, Infura) — удобство, но зависимость от третьей стороны. Для production биржи: несколько провайдеров + собственная нода, failover автоматический.

Идемпотентность: каждый запрос на вывод имеет уникальный withdrawal_id. Повторная обработка одного ID не создаёт дубль транзакции. Критично для восстановления после сбоев.

Transaction monitoring: после broadcasting — периодическая проверка статуса транзакции. Если через N минут не в mempool — считаем дропнутой, отправляем заново с корректным nonce.

Что входит в работу

  • Архитектурная документация: описание схемы cold/warm/hot wallet, логика confirmations, схема подписания и восстановления после сбоев.
  • Исходный код с интеграцией HSM, multi-sig, gas management и AML-проверками.
  • Развёртывание и настройка: конфигурация нод, балансировщиков, мониторинга (Prometheus/Grafana).
  • Документация API для фронтенда и админ-панели.
  • Обучение команды: workshop по эксплуатации системы и реагированию на инциденты.
  • Гарантия 3 месяца на выявленные баги и бесплатные консультации по доработкам.

Сроки ориентировочно

Компонент Срок
Ethereum + ERC20 депозиты/выводы 4–6 недель
Bitcoin 3–4 недели
TRON 2–3 недели
Каждая дополнительная EVM-сеть 1–2 недели
Мультивалютный hot wallet менеджмент 3–4 недели
Admin dashboard для мониторинга 2–3 недели

Полная система для 5–7 сетей с HSM интеграцией, AML проверками и административным интерфейсом — 3–5 месяцев. Стоимость рассчитывается индивидуально после аудита вашего проекта.

Закажите разработку системы депозитов и выводов — получите готовое решение с гарантией и поддержкой. Мы ценим прозрачность: все этапы, сроки и стоимость фиксируются в договоре. Получите консультацию — мы ответим на вопросы и предложим оптимальную архитектуру для вашего проекта. Свяжитесь с нами для оценки — за два дня проанализируем вашу инфраструктуру и пришлём коммерческое предложение.