Skip to content

Обзор архитектуры

Криптоплатежный шлюз построен на основе микросервисной архитектуры с модульными компонентами, которые обрабатывают различные аспекты обработки криптовалютных платежей.

Архитектура системы

Основные компоненты

Приложения (/apps)

Сервис шлюза (Gateway)

  • Назначение: Основная точка API для внешних интеграций
  • Обязанности:
    • REST API эндпоинты
    • Валидация и маршрутизация запросов
    • Аутентификация и авторизация
    • Ограничение скорости запросов

Сервис мерчанта (Merchant)

  • Назначение: Бизнес-логика для операций мерчанта
  • Обязанности:
    • Управление аккаунтами мерчантов
    • Логика обработки платежей
    • Расчет балансов
    • История транзакций

Сервис хранения (Storage)

  • Назначение: Сохранение и извлечение данных
  • Обязанности:
    • Операции с базой данных
    • Валидация данных
    • Логирование транзакций
    • Обновление балансов

Сервис отслеживания (Tracking)

  • Назначение: Мониторинг блокчейн транзакций
  • Обязанности:
    • Сканирование блоков
    • Обнаружение транзакций
    • Мониторинг адресов
    • Генерация событий

Сервис сбора (Collector)

  • Назначение: Сбор токенов с пользовательских адресов
  • Обязанности:
    • Сбор токенов
    • Управление комиссиями за газ
    • Планирование сбора
    • Координация мультиподписи

Сервис подписи (Signer)

  • Назначение: Подпись и отправка транзакций
  • Обязанности:
    • Управление приватными ключами
    • Подпись транзакций
    • Координация отправки
    • Валидация безопасности

Сервис мультиподписи (Multisig)

  • Назначение: Операции с мультиподписными кошельками
  • Обязанности:
    • Создание мультиподписных транзакций
    • Сбор подписей
    • Валидация порога
    • Обеспечение безопасности

KYT (Know Your Transaction)

  • Назначение: Соответствие требованиям и мониторинг транзакций
  • Обязанности:
    • Соответствие AML/KYC
    • Оценка рисков
    • Обнаружение подозрительной активности
    • Регуляторная отчетность

Агрегация выводов (Withdrawal Aggregation)

  • Назначение: Оптимизированные пакетные выводы
  • Обязанности:
    • Пакетирование выводов
    • Оптимизация комиссий
    • Координация времени
    • Управление статусами

Медиатор связи (Communication Mediator)

  • Назначение: Межсервисная коммуникация
  • Обязанности:
    • Маршрутизация сообщений
    • Распределение событий
    • Координация сервисов
    • Обработка ошибок

Сервис подключений (Connection Service)

  • Назначение: Подключения к внешним сервисам
  • Обязанности:
    • RPC подключения
    • Пулинг соединений
    • Обработка отказов
    • Мониторинг здоровья

Виджет (Widget)

  • Назначение: Фронтенд интерфейс платежей
  • Обязанности:
    • UI платежей
    • Генерация QR кодов
    • Обновления статуса
    • Взаимодействие с пользователем

Пакеты (/packages)

Блокчейн клиенты

  • bc-client: Общий интерфейс блокчейн клиента
  • bc-client-provider: Фабрика провайдеров клиентов
  • bitcoin: Операции специфичные для Bitcoin
  • ether: Операции совместимые с Ethereum
  • tron: Операции сети Tron

Инфраструктура

  • amqp: Сообщения RabbitMQ
  • cache-manager: Кэширование Redis
  • config: Управление конфигурацией
  • logger: Утилиты логирования
  • typeorm: Расширения ORM базы данных

Бизнес-логика

  • addresses: Управление адресами
  • currency-rates: Обработка курсов валют
  • distributor: Распределение средств
  • payer: Обработка платежей
  • tracker: Отслеживание транзакций

Утилиты

  • common: Общие утилиты
  • encoder: Кодирование/декодирование данных
  • helpers: Вспомогательные функции
  • http-client: Утилиты HTTP клиента
  • io-emitter: Генерация событий
  • provider: Провайдеры сервисов
  • rpc: RPC коммуникация
  • testing: Утилиты тестирования

Поток данных

Поток депозитов

  1. Пользователь отправляет криптовалюту на сгенерированный адрес
  2. Сервис отслеживания обнаруживает входящую транзакцию
  3. Сервис хранения обновляет записи балансов
  4. Сервис сбора собирает токены в кошелек сбора
  5. Сервис мерчанта обрабатывает бизнес-логику
  6. Медиатор связи отправляет уведомления

Поток выводов

  1. Шлюз получает запрос на вывод
  2. Сервис мерчанта валидирует запрос и баланс
  3. Агрегация выводов группирует запросы (если включено)
  4. Сервис подписи создает и подписывает транзакцию
  5. Сервис мультиподписи обрабатывает требования мультиподписи
  6. Сервис хранения обновляет балансы и статус
  7. Медиатор связи отправляет подтверждение

Типы адресов и владение

Пользовательские адреса (по умолчанию)

  • Назначение: Получение депозитов от пользователей
  • Управление ключами: Шлюз контролирует приватные ключи
  • Использование: Основные адреса для депозитов

Горячие кошельки (тип hot)

  • Назначение: Источник для выводов пользователям
  • Управление ключами: Шлюз контролирует приватные ключи
  • Требования: Должен поддерживать баланс нативной монеты для комиссий за газ

Холодные кошельки (тип cold)

  • Назначение: Место назначения для долгосрочного хранения
  • Управление ключами: Шлюз НЕ контролирует приватные ключи
  • Использование: Безопасное хранение собранных средств

Сборщики токенов (тип tokens_collector)

  • Назначение: Промежуточный сбор токенов
  • Управление ключами: Шлюз контролирует приватные ключи
  • Требования: Должен поддерживать баланс нативной монеты для комиссий за газ

Режимы адресов

Одиночный режим (ADDRESSES_MODE=single)

  • Один адрес на монету на сеть
  • Требуется ручное создание адреса для каждой монеты
  • Детальный контроль над распределением адресов

Общий режим (ADDRESSES_MODE=common)

  • Один адрес на сеть (все монеты)
  • Автоматическое создание балансов для всех монет сети
  • Упрощенное управление адресами

Кросс режим (ADDRESSES_MODE=cross)

  • Один адрес для совместимых сетей
  • Максимальное переиспользование адресов
  • Оптимально для EVM-совместимых цепей

Режимы агрегации выводов

Режим "Нет"

  • Индивидуальные транзакции для каждого вывода
  • Более высокие комиссии, но немедленная обработка
  • Подходит для высокостоимостных, редких выводов

Пакетный режим

  • Несколько выводов в одной транзакции
  • Оптимизированные комиссии через пакетирование
  • Настраиваемый размер пакета и время
  • Идеально для частых, небольших выводов

Архитектура безопасности

Многоуровневая безопасность

  1. API слой: Аутентификация, ограничение скорости, валидация входных данных
  2. Сервисный слой: Валидация бизнес-логики, авторизация
  3. Слой данных: Зашифрованное хранение, аудит логирование
  4. Сетевой слой: Безопасная коммуникация, поддержка VPN

Управление ключами

  • Поддержка аппаратного модуля безопасности (HSM)
  • Интеграция мультиподписных кошельков
  • Возможности ротации ключей
  • Безопасная деривация ключей

Мониторинг и соответствие

  • Мониторинг транзакций в реальном времени
  • Интеграция AML/KYC
  • Обнаружение подозрительной активности
  • Отчетность о соответствии регуляторным требованиям

Функции масштабируемости

Горизонтальное масштабирование

  • Микросервисная архитектура
  • Поддержка балансировщика нагрузки
  • Возможности шардинга базы данных
  • Оптимизация слоя кэша

Оптимизация производительности

  • Пулинг соединений
  • Пакетная обработка
  • Асинхронные операции
  • Эффективные структуры данных

Высокая доступность

  • Избыточность сервисов
  • Механизмы отказоустойчивости
  • Мониторинг здоровья
  • Плавная деградация

Released under the MIT License.