Написать нам
Категория: Криптовалюта
13.04.2026

Система Сопоставления Заявок на Криптобирже

В 2026-ом году требования к торговым системам вышли на новый уровень: низкая задержка (Low-Latency), детерминированное выполнение (Deterministic Execution), масштабирование до 1-го миллиона транзакций в секунду (1M+ TPS) и полное соответствие регуляторным требованиям (Regulatory Compliance). Но за этими терминами стоит не только код.



Фундаментом выступает сложная инженерная экосистема, где важна каждая микросекунда и каждое архитектурное решение. Это двигатель сопоставления (matching engine).



Что такое система сопоставления заявок? «Мозг» современных бирж



Двигатель сопоставления (Matching engine) — это ядро любой криптобиржи, отвечающее за сопоставление заявок (orders) между покупателями и продавцами. Именно здесь формируется ликвидность (Liquidity), определяется спред цены покупки и продажи (Bid-Ask Spread), а также происходит реальное исполнение сделок.



За пределами определения: почему это самая важная часть вашей инфраструктуры



В торговой практике двигатель сопоставления является пространством, где сходятся:





В сегменте высокочастотной торговли (high-frequency trading) разница даже в несколько микросекунд может означать потерю прибыли. Именно поэтому инфраструктура вокруг двигателя сопоставления (сетевой стек, управление памятью, локальность кэша) часто важнее самого алгоритма.



По данным Nasdaq TotalView ITCH (2025), до 90% всей ликвидности формируется алгоритмическими ордерами, а среднее время обработки заявки в топовых биржах США — менее 50 мкс.



По данным современных криптобирж, механизм сопоставления вне сети (off-chain matching) позволяет достигать задержки в миллисекунды и более 200K TPS. Высокопроизводительные криптобиржи уже демонстрируют показатель в 100K+ TPS и менее 10 миллисекунд задержки.



Централизованное и децентрализованное сопоставление: скорость против прозрачности



Сегодня большинство институциональных трейдеров в США и Европе отдают предпочтение движкам централизованных бирж, что обусловлено низкой задержкой (Low-Latency) и контролем исполнения.



Ниже представлена таблица их сравнения.















































































Критерий Централизованное сопоставление Децентрализованное сопоставление
Задержка < 100 мкс 100 мс - несколько секунд
Пропускная способность (TPS) 100 тыс - 1 млн+ TPS 10-1000 TPS
Модель исполнения вне сети в сети или гибридная
Прозрачность Низкая Высокая
MEV (Максимальная извлекаемая ценность) Контролированная Высокий риск (актуально для DeFi платформ)
Соблюдение нормативных требований Простое Зависит от консенсуса




При этом трилемма обмена остается актуальной и требует поиска эффективного компромисса — что напрямую влияет на стоимость создания DEX.





Источник: Nasdaq




Увы, невозможно одновременно максимизировать скорость, децентрализацию и капитальную эффективность:



  1. Если акцент падает на высокочастотную торговлю и арбитраж с минимальной задержкой, тогда имеет место централизованная модель сопоставления.


  2. Если в приоритете прозрачность и самостоятельное хранение средств, тогда выигрывает модель децентрализованного сопоставления.






Анатомия торговой сделки: что происходит «за кулисами»?



Когда трейдер нажимает кнопку Buy (купить) или Sell (продать), кажется, что торговая сделка выполняется мгновенно. Но за этим действием стоит сложная последовательность компонентов. Они должны работать синхронно, обеспечивать минимальную задержку и гарантировать детерминированное исполнение.



Этот механизм базируется на трех элементах: шлюз ордеров (Order Gateway), секвенсор (Sequencer), книга ордеров (Order Book).



Именно их архитектура определяет, сможет ли система масштабироваться до сотен тысяч или даже 1M+ TPS без потери стабильности — тема, которую мы подробно рассматриваем в нашем руководстве по архитектуре криптобирж.



Шлюз обработки заказов: проверка и нормализация входящего трафика



Шлюз ордеров (Order Gateway) — это первая точка входа для всех заявок в систему.



Здесь «сырой» трафик превращается в стандартизированные и безопасные команды для двигателя сопоставления.



Основные функции шлюза:





В высокопроизводительных системах шлюз ордеров работает через:







Источник: FIXtrading




Любая задержка или ошибка на этом этапе масштабируется дальше по системе. Если шлюз не оптимизирован, вы теряете ликвидность еще до того, как ордер попадет в книгу ордеров.



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



Секвенсор (Sequencer) как компонент архитектуры часто недооценивается. Но именно он обеспечивает порядок в хаосе тысяч параллельных заявок.



Его ключевые задачи:





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



Книга ордеров: как структуры данных влияют на задержку



Книга ордеров (Order Book) — это сердце двигателя соответствия, где хранятся все активные заявки: Bid (покупка) и Ask (продажа).



Именно в книге формируется ценовая разница (Bid-Ask Spread) и проходит соответствие.



Сравнение структуры данных приведено в таблице ниже:





































































Структура Задержка Плюсы Минусы
Дерево (Tree / RB-Tree) Средняя Гибкость Кэш промахивается
Пирамида (Heap) Средняя Простота Неидеально для сопоставления
Массив + уровни цен (Array + Price Levels) Низкая Местоположение кэша Менее гибкая
Очереди без блокировки (Lock-free queues) Очень низкая Высокая скорость Сложность реализации




Как показывает реальный опыт: многие обещают миллионы TPS, но на практике узким местом становится не логика соответствия, а запись в базу данных (Persistence). Мы рекомендуем использовать Memory-mapped files (mmap) для сверхбыстрого логирования операций.




Почему локализация кэша важнее Big-O:







Источник: geeksforgeeks






Источник: geeksforgeeks




Такой подход позволяет избежать блокировки (blocking I/O), сохранить минимальную задержку и масштабироваться без деградации производительности.



Популярные алгоритмы сопоставления: выбор правильной логики для вашего рынка



Алгоритм сопоставления — это не просто техническая деталь архитектуры. Это важный механизм, который определяет:





Одна и та же ордерная книга может вести себя совершенно по-разному в зависимости от выбранной логики.



Приоритеты FIFO, пропорционального распределения и соотношения цены и времени брокера



























































Алгоритм Описание Преимущества Где используется
FIFO (Цена-Время) Первый пришел — первый исполнен: есть два лимитных ордера. Первым будет исполняться тот, который подан раньше второго. простая и понятная модель;
высокая рыночная целостность;
минимальные возможности для манипуляций;
Binance, Nasdaq
Пропорция (Pro-Rata) Пропорциональное распределение: все заявки на одной цене получают долю исполнения: больший ордер — большая доля. стимулирует глубину ликвидности;
выгоден для крупных маркет-мейкеров
CME (деривативы)
Прайс-Брокер-Время (Price-Broker-Time) Приоритет брокера дает предпочтение маркет-мейкерам;
позволяет строить стабильную ликвидность
Институциональные рынки и регулируемые торговые площадки




Как выбрать правильный алгоритм для работы биржи: здесь все зависит не от технологий, а от вашей бизнес-модели.



  1. Если ваша цель — спотовая биржа с розничными трейдерами и простым UX, то оптимальным решением будет FIFO.


  2. Если вы строите деривативную платформу или HFT-экосистему с глубокой ликвидностью, выгодно выбирать Pro-Rata — смотрите, как мы реализовали это в нашем кейсе по бинарным опционам и фьючерсной торговле.


  3. Если вы ориентируетесь на институциональных игроков, брокерские модели и кастомные правила исполнения, тогда имеет место Price-Broker-Time.






Разработка решений с низкой задержкой: технические аспекты от Merehead



В высокочастотных торговых системах задержка (latency) — это не просто метрика. Это фактор прямого влияния на прибыль, ликвидность и конкурентоспособность.



Далее мы объясняем наш практический опыт построения двигателя сопоставления, который стабильно работает в режиме низкой задержки (Low-Latency) и масштабируется до сотен тысяч TPS без деградации.



Ловушка для сбора мусора



Одна из самых распространенных ошибок — это использование языков Garbage Collection (GC) для ядра движка.



На первый взгляд все выглядит просто и эффективно:





Но в реальной практике языки GC создают непредсказуемые паузы, которые критичны для высокочастотного трейдинга (HFT). Даже короткие задержки в 1-10 мс ломают детерминированное исполнение и создают всплески задержек (P99, P999) — что критично для алгоритмических торговых ботов.



Наш реальный опыт: если ваш бюджет ограничен, начинайте с C#. Но если вы планируете HFT (High-frequency trading), только C++ или Rust. В нашем последнем проекте переход на Rust позволил снизить P99 latency на 40%.




В чем преимущества использования Rust:





Однопоточные циклы событий против многопоточных циклов событий



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



В наших разработках мы используем однопоточный цикл событий (Single-threaded Event Loop). Он характеризуется такими преимуществами:





Ключевая особенность однопоточного цикла событий в том, что он похож на LMAX Disruptor и Node.js event loop, но реализован на уровне системного программирования (Rust/C++). При этом имеет такие особенности:







Источник: wyden.io




Таким образом, масштабирование достигается не через потоки, а через разделение и горизонтальное масштабирование.



Бинарные протоколы против JSON



И сразу можно привести сравнительную таблицу ключевых параметров:















































































Протокол Задержка Размер полезной нагрузки Задержка процессора Вариант использования
JSON/REST Высокая Большой Публичный API
REST Низкая Средний Внешние клиенты
ProtoBuf Очень низкая Минимальный Внутренние услуги
SBE Соответствующий двигатель




В нашей практике разработки проектов мы используем протоколы SBE (Simple Binary Encoding) и ProtoBuf.



Среди ключевых преимуществ SBE:





Бинарные протоколы полезны и важны тем, что позволяют:





Надежность и аварийное восстановление: уроки из практики



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



Дилемма моментальных снимков



Мы реализовали систему снимков состояния системы (Snapshots). Она подразумевает фиксацию каждые 50-100 мс и сохранение состояния книги ордеров. Таким образом, достигается эффективное восстановление после сбоя < 100 мс.



Основная проблема восстановления системы после катастрофы заключается в:





Для решения дилеммы важно достичь баланса.



Наш подход таков: система снимков Snapshot + журнал всех событий. То есть мы комбинируем снимки состояния, отслеживаем полное состояние книги ордеров, фиксируем все активные лимитные ордера и позиции пользователей. Одновременно с этим ведется журнал событий (Incremental logs): что происходит после снимков состояния, а также идет запись через Memory-mapped files (mmap).



Как это работает на практике:





Если происходит сбой, то последовательность восстановления такая: сначала загружается последний snapshot, затем проигрывается лог.



В результате время восстановления < 100 мс, гарантируется нулевая потеря данных и происходит полное восстановление книги ордеров.



Сравнение подходов можно увидеть в таблице ниже:

























































Подход Время восстановления Риск потери данных Влияние задержки
Полный повтор Секунды-минуты Низкий Высокое
Только снимок состояния Миллисекунды Высокий Низкое
Гибридный (который мы используем) < 100 мс Нулевой Минимальное




Детерминизм — король



В финансовых системах недостаточно просто восстановить сбой. Здесь важно гарантировать:





Для реализации задействуются следующие инструменты:





Благодаря идентификаторам последовательностей каждый ордер получает уникальный ID и позицию в глобальной очереди. Это формирует базу детерминированного исполнения.



Постоянные журналы позволяют записывать все события в строгом порядке и через лог «только для добавления». Никаких параллельных записей.



Однопоточный цикл событий дает такие преимущества:

Написать нам
Имя*:
Email*:
Сообщение: