Market Service
Торговое ядро и матчинг ордеров
Market Service (В разработке)
Статус: Проектирование (Sprint 4). Вторичный рынок и матчинг.
Market Service обеспечивает вторичное обращение ЦФА на платформе, позволяя пользователям торговать активами между собой.
Основные функции
- Order Management: Создание, отмена и изменение лимитных и рыночных ордеров.
- Matching Engine: Высокопроизводительный движок для сопоставления заявок (FIFO).
- Trade Settlement: Атомарный расчет сделок (DvP — Delivery vs Payment) через взаимодействие с Ledger-DB и CFA-Core.
- Order Book: Поддержание актуального состояния стакана заявок.
Технологический стек
- Фреймворк: NestJS / Node.js
- In-memory Matching: Для обеспечения низкой задержки.
- Kafka: Публикация событий о сделках.
Модель данных (Protobuf)
message Order {
string order_id = 1;
string user_id = 2;
string instrument_id = 3;
OrderSide side = 4; // BUY / SELL
OrderType type = 5; // LIMIT / MARKET
TimeInForce time_in_force = 6; // GTC / IOC / FOK
Decimal price = 7;
Decimal quantity = 8;
OrderStatus status = 9; // OPEN / PARTIALLY_FILLED / FILLED / CANCELLED / REJECTED
}
message Trade {
string trade_id = 1;
string buy_order_id = 2;
string sell_order_id = 3;
string instrument_id = 4;
Decimal price = 5;
Decimal quantity = 6;
Fee fee = 7;
}Бизнес-логика торговли
- Размещение ордера:
- Проверка баланса (Hold в Ledger-DB).
- Публикация в Order Book.
- Matching:
- Поиск встречных заявок по алгоритму FIFO (First In, First Out).
- Формирование сделки (Trade).
- DvP Settlement:
- Атомарное списание/зачисление RUB и ЦФА.
- Начисление комиссий.
Потоки данных
- Пользователь размещает ордер →
OrderPlacedEvent. - Движок находит совпадение →
TradeExecutedEvent. - Ledger-DB блокирует/переводит средства.
- CFA-Core переводит права в блокчейне.