Перейти к содержанию

Сервисы Exchange Engine

Каждый сервис Exchange Engine запускается как самостоятельный процесс. Ниже приведено детальное описание назначения, протокола, ключевых зависимостей и конфигурации каждого из них.


engine

Назначение

engine — центральный торговый движок. Принимает ордера, исполняет их по алгоритму непрерывного двойного аукциона (CDA) и поддерживает L3 книгу ордеров (order-by-order book) в памяти. Именно здесь происходит матчинг: сопоставление встречных заявок на покупку и продажу.

Протокол

  • gRPC — основной транспорт для межсервисного взаимодействия.
  • Unix socket — gRPC-сервер слушает на Unix-сокете для минимизации сетевых задержек при взаимодействии с api.

Ключевые зависимости

Зависимость Назначение
PostgreSQL Персистентность ордеров, сделок, свечей, снапшотов книги
api Клиент, отправляющий ордера через gRPC

Предоставляемые gRPC-методы

Метод Описание
Ping Проверка доступности
GetOrderbook Получение текущего состояния книги ордеров (L2-агрегация)
AddOrder Размещение нового ордера
CancelOrder Отмена конкретного ордера
CancelAllOrders Отмена всех ордеров по тикеру
SubscribeOrderbookSnapshots Стрим снапшотов книги ордеров
SubscribeTrades Стрим публичных сделок

Полное описание методов — в разделе Engine gRPC API.

Конфигурация

Параметр Описание
DATABASE_URL Строка подключения к PostgreSQL
GRPC_SOCKET_PATH Путь к Unix-сокету для gRPC
TICKERS Список торговых пар, которые движок обслуживает

api

Назначение

api — публичный HTTP-сервер на базе фреймворка Echo. Реализует REST API и WebSocket-потоки для внешних клиентов (браузеры, мобильные приложения, торговые боты). Является единственной точкой входа для пользователей биржи.

Протокол

  • HTTP/1.1 и HTTP/2 — REST-эндпоинты.
  • WebSocket — потоковые данные (книга ордеров, сделки, обновления ордеров).

Все публичные маршруты начинаются с префикса /api/v1.

Ключевые зависимости

Зависимость Назначение
engine gRPC-клиент: размещение/отмена ордеров, получение книги, подписки на стримы
PostgreSQL Чтение балансов, ордеров, сделок, активов

Аутентификация и ограничения

  • JWT Bearer — для пользовательских сессий.
  • HMAC-SHA256 API Key — для алгоритмической торговли (подпись запросов).
  • RecvWindow — защита от replay-атак для подписанных запросов.
  • Лимиты запросов: стандартный 5 RPS, строгий 1 RPS (логин), внутренние сети 40 RPS.

Группы эндпоинтов

Группа Описание
Accounts Регистрация, вход, просмотр аккаунта, субаккаунты
Orders Размещение, отмена, список ордеров
Trades История сделок пользователя
Balances Перевод между аккаунтами, просмотр балансов
Market Data Тикеры, активы, книга ордеров, публичные сделки, свечи
WebSocket Стримы книги, сделок, обновлений ордеров

Полное описание — в разделе REST API.

Конфигурация

Параметр Описание
DATABASE_URL Строка подключения к PostgreSQL
GRPC_SOCKET_PATH Путь к Unix-сокету engine
JWT_SECRET Секрет для подписи JWT-токенов
HTTP_ADDR Адрес и порт HTTP-сервера

admin

Назначение

admin — внутренний gRPC-сервис для операций технической поддержки, финансового мониторинга и управления платформой. Содержит 11 sub-сервисов, покрывающих управление аккаунтами, балансами, блокчейн-операциями, алертами и API-ключами.

Протокол

  • gRPC (TCP, внутренняя сеть).

Доступ предоставляется только доверенным внутренним компонентам и инструментам администрирования. Прямой доступ из интернета запрещён.

Sub-сервисы

Sub-сервис Ключевые RPC
PingService Ping
AccountsService GetBalances, GetAccountDetails, SetTier, ListOrders, ChangeAccountStatus
BlockchainService GetDepositAddress, WithdrawToBlockchain, ListTopUps, ListWithdrawals
OperationsService ManualTopup, ManualWithdraw, Transfer, ManualTopupBalanceAccount, ManualWithdrawBalanceAccount, TransferBalanceAccount
InfoService ListTiers, ListNetworks
AlertsService Create, List (stream), Acknowledge, Resolve
APIKeysService CreateAPIKey, ListAPIKeys, DeleteAPIKey
HotWalletsService ListHotWallets, TransferAsset, GetTransferAssetStatus
TiersService Управление тарифными уровнями
AssetsService Управление активами
TickersService Управление торговыми парами

Полное описание — в разделе Admin gRPC API.

Ключевые зависимости

Зависимость Назначение
PostgreSQL Все данные аккаунтов, балансов, операций
hotmanager Инициирование выводов через горячие кошельки

Конфигурация

Параметр Описание
DATABASE_URL Строка подключения к PostgreSQL
GRPC_ADDR Адрес gRPC-сервера

hotmanager

Назначение

hotmanager управляет горячими кошельками биржи на каждом поддерживаемом блокчейне. Отвечает за хранение приватных ключей (или взаимодействие с HSM), формирование и подписание транзакций вывода.

Варианты

Вариант Блокчейн
hotmanager/btc Bitcoin
hotmanager/evm Ethereum и EVM-совместимые сети
hotmanager/tron Tron

Протокол

Внутренний сервис. Взаимодействует с txprocessor и admin для получения задач на вывод.

Ключевые зависимости

Зависимость Назначение
Нода блокчейна Трансляция транзакций, запрос балансов кошельков
PostgreSQL Хранение состояния кошельков (wallets)
txprocessor Получает сформированные транзакции для трансляции

Конфигурация

Параметр Описание
DATABASE_URL Строка подключения к PostgreSQL
NODE_URL URL ноды соответствующего блокчейна
WALLET_KEY / HSM-конфигурация Доступ к приватным ключам горячего кошелька

topupscan

Назначение

topupscan отвечает за обнаружение входящих депозитов на адреса блокчейн-кошельков пользователей. Группа сервисов постоянно мониторит блокчейн и записывает входящие транзакции в таблицу chain_topups.

Компоненты

Компонент Назначение
topupscan/btc Сканирование Bitcoin-блоков
topupscan/evm Сканирование EVM-транзакций и токен-трансферов
topupscan/tron Сканирование Tron-транзакций
topupscan/processor Обработка обнаруженных депозитов: зачисление на баланс
topupscan/aml-poller Периодический опрос AML-статусов для входящих транзакций
topupscan/elliptic_check Интеграция с Elliptic для AML-проверки транзакций
topupscan/refund-processor Автоматический возврат средств при отклонении AML

Ключевые зависимости

Зависимость Назначение
Нода блокчейна Получение данных о новых блоках и транзакциях
PostgreSQL chain_topups, chain_topup_status_history, chain_topup_aml_categories, topupscan_states, bitcoin_utxo
Elliptic API AML-скоринг транзакций

Конфигурация

Параметр Описание
DATABASE_URL Строка подключения к PostgreSQL
NODE_URL URL ноды блокчейна
ELLIPTIC_API_KEY Ключ API сервиса Elliptic
START_BLOCK Блок, с которого начинать сканирование

txprocessor

Назначение

txprocessor обрабатывает исходящие транзакции (запросы на вывод). Формирует транзакции по данным из таблиц txes и tx_batches, взаимодействует с hotmanager для подписи и трансляции.

Варианты

Вариант Блокчейн
txprocessor/btc Bitcoin
txprocessor/evm Ethereum и EVM-совместимые сети
txprocessor/tron Tron

Ключевые зависимости

Зависимость Назначение
PostgreSQL txes, tx_batches — задачи на вывод
hotmanager Подписание и трансляция транзакций
Нода блокчейна Подтверждение трансляции, запрос nonce/UTXO

Конфигурация

Параметр Описание
DATABASE_URL Строка подключения к PostgreSQL
NODE_URL URL ноды блокчейна
HOTMANAGER_ADDR Адрес gRPC-сервиса hotmanager

migrator

Назначение

migrator — утилита командной строки для управления миграциями базы данных. Использует инструмент Goose и выполняет SQL-скрипты из директории migrations/.

Протокол

CLI. Запускается вручную или в рамках CI/CD-пайплайна перед стартом остальных сервисов.

Основные команды

# Применить все новые миграции
./migrator up

# Откатить последнюю миграцию
./migrator down

# Показать статус миграций
./migrator status

Конфигурация

Параметр Описание
DATABASE_URL Строка подключения к PostgreSQL
MIGRATIONS_DIR Путь к директории с SQL-файлами миграций