zeekay f60386336e feat(dchain): committed-state read RPC (clob_get_trades/orders/markets/book)
The D-Chain VM exposed only write methods (clob_place/submit/cancel/...) over
its HTTP surface; there was no way to read committed chain state, so a fill
proven on the proposer could not be verified as replicated across validators,
and native fills (trade: rows) could not feed markets-display.

Add a READ surface (read.go) orthogonal to the write surface (handler.go):

  - clob_get_trades?since=<h>&limit=<n>  committed trade: log (markets feed +
                                          cross-validator replication probe)
  - clob_get_orders?market=<hex>          resting order: rows for a market
  - clob_get_markets                      every market: id/symbol/assets/summary
  - clob_get_book?market=<hex>&depth=<n>  aggregated bid/ask ladder + totals

Reads are JSON, GET, served via CreateHandlers on the SAME /ext/bc/<D>/dex/
route group as the writes. They read committed state directly under vm.mu —
NO mempool, NO block, NO consensus round — so a read can never change a fill or
balance (proven: TestRead_ZeroConsensusImpact). Every response carries the
accepted-block head (height, lastAccepted, root) so a cross-validator diff is
anchored to an exact block: two nodes at the same height+root MUST return
identical trades.

Trades/markets read durable rows (the committed truth, identical on every node
at a height); orders/book read the in-RAM book (a deterministic fold of the
committed order: rows). The 80-byte trade row carries no poolID (frozen GPU
ABI), so clob_get_trades is the GLOBAL height-ordered log — exactly right for a
single-market devnet (the verification case) and for an indexer that scopes
fills to a market by the order ids it tracks.

State helpers (state.go): readTrades (height-ordered durable scan), listMarkets.
lx: export DEXPrice.Float() + FixedQtyToFloat (one conversion; the internal
fixedPriceToFloat/fixedQtyToFloat now delegate).

TDD (read_test.go, all green, race-clean):
  - TradesAfterCommittedFill: a matched cross is queryable with right px/size/side
  - MarketsAndOrdersAndBook: the three other endpoints reflect committed state
  - ZeroConsensusImpact: 25 reads advance neither height nor mempool
  - CrossValidatorIdenticalTrades: two INDEPENDENT VMs (separate DBs) that
    Accept the SAME block bytes return BYTE-IDENTICAL trades JSON + same root —
    the in-process model of the live 5-validator replication question
  - GenesisEmpty / BadParams: clean empty answers; boundary validation (400/405)

Removed the temporary zzz_fillrepro_test.go (its header said DELETE after;
superseded by read_test.go's committed-fill coverage).
2026-06-22 14:55:38 -07:00
2025-12-11 18:00:56 -08:00
2025-12-11 17:50:19 -08:00
2025-12-28 11:00:04 -08:00

LX

Lux DEX — pure-Go matching engine, order book, oracle aggregator, and JSON-RPC / WebSocket / gRPC SDKs.

CI Release Go Version License

Open core

This repository is the public, pure-Go reference implementation of the Lux DEX matching engine. It is fully functional, runs standalone, and underpins every Lux DEX deployment.

For commercial deployments that need hardware acceleration (NUMA-aware C++ order book, CUDA / Metal batched verification, FPGA fast paths) the same Go interfaces are implemented by lux-private/dex and selected at build time via the dex_gpu build tag. The accelerated backend fails closed unless the operator's environment carries a Lux commercial license token whose scope list includes dex. Contact [email protected] for commercial licensing.

Features

  • Ultra-high performance: 13M+ orders/sec achieved with planet-scale architecture
  • Sub-microsecond latency: 75.9ns order matching, 636ns position updates
  • Multi-engine architecture: Pure Go, C++, and GPU (CUDA/MLX)
  • Quantum-resistant consensus: DAG with post-quantum signatures
  • Cross-platform: Linux, macOS (Intel & Apple Silicon), Windows
  • Professional Market Data: Real-time oracle integration with multiple sources
  • Cross-Chain Support: Universal bridge for all major blockchains
  • 100% Test Coverage: All critical paths tested and verified

Quick Start

# Install dependencies
go mod download

# Build all binaries
make build

# Run tests
make test

# Run demo
./bin/demo

# Run benchmarks
make bench

Installation

From Source

git clone https://github.com/luxfi/dex
cd dex
make build

From Release

# Download latest release for your platform
curl -L https://github.com/luxfi/dex/releases/latest/download/lx-dex-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m) -o lx-dex
chmod +x lx-dex
./lx-dex

Performance

Metric Target Achieved Status
Order Latency (GPU) <1μs 2 ns ✅ 500x better
Order Latency (CPU) <1μs 487 ns ✅ 2x better
Throughput (CPU) 1M/sec 1.01M/sec ✅ Exceeded
Throughput (GPU) 100M/sec 434M/sec ✅ 4.34x
Test Coverage 100% pass 100% pass ✅ Complete
Code Coverage 30% 39.1% ✅ Exceeded

*With MLX GPU acceleration on Apple Silicon M2 Ultra

Architecture

On-chain settlement follows D matches · C settles: the D-Chain (dexvm) matches and BLS-signs a DFillReceipt; the C-Chain receipt-settlement precompile 0x9999 (Uniswap-V4 PoolManager ABI) verifies the certificate inline and settles under Block-STM. See docs/ARCHITECTURE.md and the normative spec LP-9999.

The DEX uses a multi-engine architecture:

  • Pure Go Engine: Portable, 830K orders/sec
  • C++ Engine: Low latency, 800K+ orders/sec
  • Rust Engine: High performance, 585K+ orders/sec
  • MLX GPU Engine: Apple Silicon Metal, 6M+ msgs/sec (FIX), 434M+ orders/sec

FIX Protocol Performance (December 2024)

Engine NewOrderSingle ExecutionReport MarketDataSnapshot
Pure Go 163K/sec 124K/sec 332K/sec
Hybrid Go/C++ 167K/sec 378K/sec 616K/sec
Pure C++ 444K/sec 804K/sec 1.08M/sec
Rust 484K/sec 232K/sec 586K/sec
MLX (Apple Silicon) 3.12M/sec 4.27M/sec 5.95M/sec

*MLX achieves sub-2μs average latency (0.68-1.75μs) via GPU parallelism

See docs/ for detailed documentation.

Development

Requirements

  • Go 1.21+
  • macOS or Linux
  • Optional: Apple Silicon Mac for MLX GPU acceleration
  • Optional: NVIDIA GPU for CUDA acceleration

Building with GPU Support

# Apple Silicon (Metal)
CGO_ENABLED=1 make build

# Linux with CUDA
CGO_ENABLED=1 CUDA=1 make build

Running Tests

# Unit tests
make test

# Benchmarks
make bench

# All tests including integration
go test ./...

CI/CD

The project uses GitHub Actions for CI/CD:

  • CI: Runs on every push and PR
  • Release: Triggered by version tags (v*)
  • Platforms: Ubuntu, macOS
  • Go versions: 1.21, 1.22

See .github/workflows/ for workflow definitions.

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing)
  5. Open a Pull Request

License

Copyright (C) 2020-2025, Lux Industries Inc.

S
Description
Lux DEX — pure-Go matching engine, JSON-RPC/WebSocket/gRPC SDKs. Commercial GPU acceleration via lux-private/dex.
Readme
100 MiB
Languages
Go 71.1%
Rust 9.6%
TypeScript 6.4%
Python 6.1%
Shell 3.1%
Other 3.6%