Точные правила исполнения
Лимитные, рыночные, стоп-, трейлинг-стоп- и айсберг-ордера. GTC, IOC, FOK и GTD, maker-only и опциональное предотвращение самоторговли.
matching-enginev0.1.0
Rust · сопоставление спотовых ордеров
Сопоставляйте спотовые ордера с приоритетом цены и времени и точностью до восьми знаков. Подключайтесь по TCP или Unix-сокету, сохраняйте решения в WAL и восстанавливайте ордера и сессии после перезапуска.
Rust · MIT · Последнее обновление
Сервис работает на одном узле. Балансы, расчёты и переключение при сбоях остаются в вашей платформе.
ASK #41 100.01 × 2
ASK #42 100.02 × 3
BUY #43 100.02 × 3
→ 2 @ 100.01 maker #41
→ 1 @ 100.02 maker #42
REST #42 100.02 × 2
matching-engine
Лимитные, рыночные, стоп-, трейлинг-стоп- и айсберг-ордера. GTC, IOC, FOK и GTD, maker-only и опциональное предотвращение самоторговли.
При включённом WAL решения, снимки и история сессий позволяют восстанавливать состояние и безопасно повторять мутации с тем же request ID.
Бинарный протокол v2, Go-клиент и примеры на Go, Python, TypeScript и Rust. TLS/mTLS, метрики Prometheus и проверки health/readiness.
Rust · сопоставление спотовых ордеров
Нужен Rust 1.96 или новее. Соберите сервер с TLS и запустите с config.toml. В примере торговый порт — 127.0.0.1:9090, HTTP — 9091.
Проверьте /ready и запустите Go-пример с чистым каталогом данных. Формат сообщений, replay сессий и request ID описаны в руководстве.
Выберите постоянное хранилище и фиксированное число шардов. Настройте TLS и риск-лимиты; балансы, расчёты и отказоустойчивость реализуйте в своей платформе.
01 / Установка
git clone https://github.com/rekurt/matching-engine.git && cd matching-engine &&
cargo build --release --locked -p me-server --features tls &&
./target/release/me-server --config config.toml02 / README
Сервис сопоставления спотовых ордеров на Rust: приоритет цены и времени, фиксированная точность, WAL и бинарный TCP-протокол.
Настройка, примеры использования и справочник API.
Ниже — исходная документация репозитория без перевода. Пример и краткая инструкция выше доступны на русском.
A Rust service for matching spot orders with price-time priority. Each symbol is processed by one shard worker; clients connect through a binary protocol over TCP or Unix domain sockets.
Requires Rust 1.96 or newer. From the repository root:
cargo build --release --locked -p me-server --features tls
./target/release/me-server --config config.toml
The sample configuration listens on 127.0.0.1:9090 for trading and 127.0.0.1:9091 for HTTP, and stores journals under ./data/wal.
In another terminal:
curl --fail http://127.0.0.1:9091/ready
cd examples/go
go run . 127.0.0.1:9090
Use a fresh data directory for the example: order IDs and mutation request IDs are retained for recovery. For a remote deployment, configure TLS, a fixed shard count and persistent storage as described in the deployment guide.
This is a single-node matching service. Account balances, reserved funds, settlement, replication and failover belong to the surrounding platform. Session IDs are bearer credentials, not account identities. Journals and retained mutation history grow with activity; online compaction and legacy journal migration are not implemented. The example clients do not implement full settlement or reconnect recovery.
No latency SLA is implied. Measure the complete durable path on your own storage and workload; engine microbenchmarks exclude network and synchronous journal costs.
Project website · All projects by rekurt
The online handbook is built from docs/src:
Build the handbook with mdbook build; generate Rust API documentation with cargo doc --workspace --no-deps --all-features --locked.
MIT, copyright nikita42 (rekurt).
matching-engine