Files
dex/paper/lx-dex-whitepaper.tex
zeekay 1722b23b89 dex: purge CLOB — DEX (service) + OrderBook (engine)
Decentralized exchange; the engine acts like an order book but is decentralized,
so 'Central Limit Order Book' is a misnomer. Branded/service surface → DEX
(RegisterDEX, DEXMethod*, dex_* wire). Matching engine + GPU → OrderBook
(OrderBookMatch/Source/Arena, source_orderbook.go), preserving the AMM-vs-orderbook
distinction. C-ABI → dex_orderbook_* (matches luxcpp). SDKs/clients/docs aligned.
CGO=0 + cgo builds clean; full suite 23 pkgs green (dchain/dex/lx/fix/gateway/zapwire).
Legit financial-term 'Central Limit Order Book' retained in hummingbot taxonomy.
2026-06-26 13:05:07 -07:00

535 lines
17 KiB
TeX

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{cite}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{float}
\usepackage[margin=1in]{geometry}
% Custom commands
\newcommand{\lxdex}{\textsc{LX}}
\newcommand{\orderssec}{\text{orders/sec}}
\newcommand{\microsec}{\mu\text{s}}
\newcommand{\nanosec}{\text{ns}}
% Code listing settings
\lstset{
basicstyle=\footnotesize\ttfamily,
numbers=left,
numberstyle=\tiny\color{gray},
stepnumber=1,
numbersep=5pt,
backgroundcolor=\color{white},
showspaces=false,
showstringspaces=false,
showtabs=false,
frame=single,
rulecolor=\color{black},
tabsize=2,
captionpos=b,
breaklines=true,
breakatwhitespace=false,
language=Go,
keywordstyle=\color{blue},
commentstyle=\color{gray},
stringstyle=\color{red}
}
\title{\textbf{LX: A GPU-Native Decentralized Exchange} \\
\large{Byte-Exact \texttt{uint256} OrderBook Matching at 100--250M Fills/s per Device,
Scaling to Fleet-Level Throughput Through Quantum-Resistant Consensus}}
\author{
[email protected] \\
Lux Industries Inc. \\
\texttt{https://lux.network}
}
\date{\today}
\begin{document}
\maketitle
\begin{abstract}
We present \lxdex{}, a GPU-native decentralized exchange whose central-limit
order book (OrderBook) matching kernel computes byte-exact \texttt{uint256} fills.
On a single accelerator the kernel sustains 104--126M fills/s on an NVIDIA GB10
(6.9\,ns/match) and approximately 250M fills/s on an Apple M4 Max
(4.15\,ns/match); the throughput lever is a Knuth Algorithm-D division that
replaces a 512-iteration bit-serial \texttt{uint256} VWAP, an $\sim$8$\times$
gain, with output byte-identical to the CPU reference (validated against
millions of fuzz and known-answer vectors with zero divergence). Per-book
arenas are independent, so aggregate throughput exceeding one billion fills/s
is reached by aggregating across nodes (a fleet of roughly 8--10 accelerators),
\emph{not} by a single device. Matching is paired with market-sharded Block-STM
settlement (2.2M fills/s conflict-detection, with CPU and GPU producing a
byte-identical commit order on real silicon) and a post-quantum rollup to the
Lux Z-Chain: P3Q (ML-DSA-65, venue-trust) verifies 4{,}714 proofs/s and the
trustless STARK/FRI verifier (\texttt{starkfri}) verifies 986 proofs/s on a toy
AIR. The system uses the \texttt{luxfi/database} abstraction layer for
consistent storage across backends, combining a private single-operator HFT
matching chain (the D-Chain) with quantum-resistant consensus and Byzantine
fault tolerance.
\end{abstract}
\section{Introduction}
The cryptocurrency trading ecosystem faces a fundamental performance barrier: current decentralized exchanges (DEXs) process fewer than 1,000 transactions per second, while centralized exchanges (CEXs) handle millions. This 1000x performance gap has relegated DEXs to less than 5\% of total trading volume despite their superior security model.
\lxdex{} closes this performance gap, achieving:
\begin{itemize}
\item \textbf{104--126M fills/s} of byte-exact \texttt{uint256} OrderBook matching on a single NVIDIA GB10 (6.9\,ns/match), and $\sim$250M fills/s on an Apple M4 Max (4.15\,ns/match)
\item \textbf{$>$1B fills/s} aggregate throughput across a node fleet ($\sim$8--10 accelerators), since per-book arenas are independent --- not from a single device
\item \textbf{2.2M fills/s} market-sharded Block-STM settlement, with a CPU/GPU byte-identical commit order
\item \textbf{Post-quantum rollup} to the Z-Chain: P3Q (ML-DSA-65) at 4{,}714 verifies/s, trustless STARK/FRI (\texttt{starkfri}) at 986 verifies/s
\item \textbf{Quantum-resistant consensus} via Corona+BLS hybrid signatures
\item \textbf{GPU acceleration} with automatic MLX/CUDA detection
\end{itemize}
Our key innovation is a byte-exact \texttt{uint256} matching kernel that is
correctness-bound rather than precision-truncated: GPU output is identical to
the CPU oracle bit for bit, so the throughput gain is free of the silent
rounding that disqualifies floating-point matchers from settlement.
\section{System Architecture}
\subsection{Multi-Chain Architecture}
\lxdex{} operates across two specialized blockchains:
\begin{itemize}
\item \textbf{X-Chain}: Order processing and matching
\item \textbf{Q-Chain}: Quantum finality and proof generation
\end{itemize}
This separation allows parallel processing of orders while maintaining cryptographic security through the Q-Chain's quantum-resistant proofs.
\subsection{Polyglot Engine Architecture}
We implement several matching-engine front-ends sharing one byte-exact
\texttt{uint256} matching core, each suited to a deployment scenario. The
byte-exact CPU reference sustains $\sim$1M fills/s and is the oracle the GPU
kernel is validated against; the GPU back-ends (Section~\ref{sec:gpu}) raise
single-device throughput to 104--250M fills/s.
\begin{table}[H]
\centering
\begin{tabular}{lll}
\toprule
\textbf{Engine} & \textbf{Deployment role} & \textbf{Memory} \\
\midrule
Go (CPU reference) & Default, correctness oracle & Moderate \\
C++ & High-frequency CPU path & Low \\
Rust & Safety-critical CPU path & Low \\
TypeScript & Client/embedded & High \\
GPU (CUDA / MLX) & Bulk matching back-end & Low \\
\bottomrule
\end{tabular}
\caption{Matching-engine front-ends and their deployment roles. All share the
same byte-exact \texttt{uint256} core; the CPU reference is the validation
oracle for the GPU kernels.}
\label{tab:engines}
\end{table}
\subsection{Order Book Implementation}
Our order book attains a per-match cost of 6.9\,ns on an NVIDIA GB10 and
4.15\,ns on an Apple M4 Max through several optimizations:
\subsubsection{Integer Price Representation}
\begin{lstlisting}
// Traditional (slow): string-formatted decimal price key
priceKey := fmt.Sprintf("%.8f", order.Price)
// Fixed-point: integer comparison, no formatting/parsing
priceInt := int64(order.Price * 1e7) // 7 decimals
\end{lstlisting}
Prices and quantities are exact integers (\texttt{uint256} on the matching
path), so price-level comparison is a single integer operation with no
floating-point rounding and no string formatting.
\subsubsection{Lock-Free Architecture}
\begin{lstlisting}
type DAGOrderBook struct {
bestBid atomic.Value // Lock-free best bid
bestAsk atomic.Value // Lock-free best ask
vertices sync.Map // Concurrent DAG vertices
edges map[ID][]ID // DAG edges
frontier []ID // Active frontier
}
\end{lstlisting}
\section{Consensus Protocol}
\subsection{Lux Consensus (DAG-based FPC)}
Lux Consensus is our novel DAG-based consensus protocol featuring Fast Probabilistic Consensus (FPC) as a core component. It achieves 50ms finality through:
\begin{enumerate}
\item \textbf{DAG Structure}: Parallel order processing without sequential blocks
\item \textbf{Adaptive Vote Thresholds}: Dynamic adjustment from 55\% to 65\%
\item \textbf{Vote Limiting}: Maximum 256 votes per block
\item \textbf{Execute-Owned Optimization}: Local orders execute immediately
\end{enumerate}
\begin{algorithm}
\caption{Lux Consensus Round}
\begin{algorithmic}
\STATE $\theta \gets \theta_{min} + (\theta_{max} - \theta_{min}) \times \frac{round}{10}$
\FOR{each vertex $v$ in DAG}
\STATE votes $\gets$ QueryVotes($v$)
\IF{votes / total $> \theta$}
\STATE Finalize($v$)
\STATE GenerateQuantumProof($v$)
\ENDIF
\ENDFOR
\end{algorithmic}
\end{algorithm}
\subsection{Quantum-Resistant Security}
We implement a hybrid cryptographic scheme combining:
\begin{itemize}
\item \textbf{Corona}: Post-quantum lattice-based threshold signatures (Lux production fork of the two-round Corona construction, IACR ePrint 2024/1113)
\item \textbf{BLS}: Efficient signature aggregation
\item \textbf{Quasar}: Dual-certificate protocol for faster finality
\end{itemize}
\begin{lstlisting}
type QuantumCertificate struct {
VertexID [32]byte
BLSSignature *Signature
CoronaCert []byte
VoteThreshold float64
}
\end{lstlisting}
\section{Network Architecture}
\subsection{Kernel-Bypass with DPDK}
Direct NIC access eliminates kernel overhead:
\begin{lstlisting}
// Traditional: 10us per packet
conn.Read(buffer)
// DPDK: 100ns per packet
rte_eth_rx_burst(port, queue, pkts, MAX_BURST)
\end{lstlisting}
This provides a \textbf{100x reduction} in packet processing latency.
\subsection{RDMA State Replication}
Zero-copy state synchronization between nodes:
\begin{lstlisting}
// One-sided RDMA write (no remote CPU)
ibv_post_send(qp, &wr, &bad_wr) // <500ns latency
\end{lstlisting}
\subsection{Binary FIX Protocol}
Compact 60-byte message format:
\begin{lstlisting}
type BinaryFIXOrder struct {
MsgType uint8 // 1 byte: 'D'=NewOrder
Side uint8 // 1 byte: 1=Buy, 2=Sell
OrdType uint8 // 1 byte: 1=Market, 2=Limit
TimeInForce uint8 // 1 byte: 0=Day, 1=IOC
Symbol [8]byte // 8 bytes: "BTC-USD\0"
OrderID uint64 // 8 bytes
ClOrdID uint64 // 8 bytes
Price uint64 // 8 bytes: Fixed point
OrderQty uint64 // 8 bytes: Fixed point
TransactTime uint64 // 8 bytes: Unix nanos
Account uint32 // 4 bytes
ExecInst uint32 // 4 bytes
Checksum uint32 // 4 bytes: CRC32
} // Total: 60 bytes
\end{lstlisting}
\section{GPU Acceleration}
\label{sec:gpu}
\subsection{Universal Backend Detection}
Automatic selection of optimal compute backend:
\begin{lstlisting}
func detectBackend() Backend {
if runtime.GOOS == "darwin" && hasMetalSupport() {
return Backend_MLX_Metal
}
if hasCUDA() {
return Backend_CUDA
}
return Backend_CPU_AVX2
}
\end{lstlisting}
\subsection{Batch Matching Performance}
\begin{table}[H]
\centering
\begin{tabular}{lrr}
\toprule
\textbf{Backend} & \textbf{Fills/s} & \textbf{Per-match cost} \\
\midrule
CUDA --- NVIDIA GB10 & 104--126M & 6.9\,ns \\
MLX/Metal --- Apple M4 Max & $\sim$250M & 4.15\,ns \\
\bottomrule
\end{tabular}
\caption{Measured GPU matching throughput. The throughput lever is a Knuth
Algorithm-D division replacing a 512-iteration bit-serial \texttt{uint256}
VWAP ($\sim$8$\times$); output is byte-identical to the CPU oracle.}
\end{table}
\section{Storage Layer}
\subsection{luxfi/database Abstraction}
Unified database interface across multiple backends:
\begin{lstlisting}
type Database interface {
Get(key []byte) ([]byte, error)
Put(key, value []byte) error
Delete(key []byte) error
NewBatch() Batch
NewIterator(prefix []byte) Iterator
Compact(start, limit []byte) error
HealthCheck(ctx context.Context) (interface{}, error)
}
\end{lstlisting}
Supported backends:
\begin{itemize}
\item \textbf{BadgerDB}: LSM-tree for high write throughput
\item \textbf{LevelDB}: Proven reliability
\item \textbf{MemDB}: In-memory for testing
\item \textbf{PebbleDB}: RocksDB-compatible
\end{itemize}
\section{Performance Results}
\subsection{Benchmark Configuration}
Matching-kernel measurements performed on:
\begin{itemize}
\item NVIDIA GB10 (Grace Blackwell)
\item Apple M4 Max (unified-memory, MLX/Metal backend)
\end{itemize}
All figures below are measured fills/s of byte-exact \texttt{uint256}
matching, validated bit-for-bit against the CPU reference oracle.
\subsection{Throughput Results}
\begin{table}[H]
\centering
\begin{tabular}{lrr}
\toprule
\textbf{Configuration} & \textbf{Throughput} & \textbf{Per-match cost} \\
\midrule
GPU OrderBook --- NVIDIA GB10 & 104--126M fills/s & 6.9\,ns \\
GPU OrderBook --- Apple M4 Max & $\sim$250M fills/s & 4.15\,ns \\
Settlement (Block-STM, market-sharded) & 2.2M fills/s & --- \\
Fleet aggregate ($\sim$8--10 GPUs) & $>$1B fills/s & --- \\
\bottomrule
\end{tabular}
\caption{Measured byte-exact \texttt{uint256} matching throughput. A single
accelerator is dependency-latency-bound at $\sim$100--250M fills/s; the
$>$1B fills/s aggregate is reached across independent per-book arenas on a
node fleet, not on one device.}
\end{table}
\subsection{Network Saturation}
At 100Gbps with 60-byte messages:
\begin{align}
\text{Max throughput} &= \frac{100 \times 10^9 \text{ bits/sec}}{60 \times 8 \text{ bits/msg}} \\
&= 208\text{M messages/sec}
\end{align}
A single matching node is dependency-latency-bound well below this ceiling
($\sim$100--250M fills/s); network bandwidth is therefore not the binding
constraint on a single device, and fleet-level throughput is obtained by
sharding independent per-book arenas across nodes.
\section{Comparative Analysis}
\begin{table}[H]
\centering
\begin{tabular}{lrrr}
\toprule
\textbf{Exchange} & \textbf{Throughput} & \textbf{Latency} & \textbf{Decentralized} \\
\midrule
Uniswap v3 & 1K/s & 12s & Yes \\
Serum (Solana) & 65K/s & 400ms & Yes \\
dYdX v4 & 100K/s & 100ms & Partial \\
Binance (CEX) & 10M/s & 10ms & No \\
\textbf{LX} & \textbf{104--250M fills/s} & \textbf{4--7\,ns/match} & \textbf{Yes} \\
\bottomrule
\end{tabular}
\caption{LX single-device byte-exact matching throughput versus reported
exchange figures. The LX column is measured GPU OrderBook matching (GB10 / M4 Max);
fleet aggregation reaches $>$1B fills/s. The latency column is per-match kernel
cost, not end-to-end trade confirmation.}
\end{table}
\section{Security Analysis}
\subsection{Byzantine Fault Tolerance}
Lux Consensus tolerates up to 33\% Byzantine nodes through:
\begin{itemize}
\item Adaptive vote thresholds (55\%-65\%)
\item Quasar dual certificates
\item DAG structure preventing single points of failure
\end{itemize}
\subsection{Quantum Resistance}
The Corona+BLS hybrid scheme provides:
\begin{itemize}
\item 256-bit post-quantum security
\item Signature aggregation for efficiency
\item Forward secrecy through ephemeral keys
\end{itemize}
\subsection{Economic Security}
\begin{itemize}
\item Slashing for misbehavior
\item Minimum stake requirements (1M LUX)
\item Reward distribution based on performance
\end{itemize}
\section{Future Work}
\subsection{Near-term (Q1 2025)}
\begin{itemize}
\item Persistent memory (Intel Optane) integration
\item FPGA packet classification
\item Cross-chain atomic swaps
\end{itemize}
\subsection{Medium-term (Q2 2025)}
\begin{itemize}
\item Sharded order books for horizontal scaling
\item Advanced order types (stop, trailing, iceberg)
\item Market maker incentive program
\end{itemize}
\subsection{Long-term (2025+)}
\begin{itemize}
\item Full MEV protection
\item Cross-chain liquidity aggregation
\item Decentralized price oracles
\item Regulatory compliance tools
\end{itemize}
\section{Conclusion}
\lxdex{} demonstrates that a decentralized exchange can match orders at
hardware speed without abandoning settlement-grade correctness. The matching
kernel sustains 104--126M byte-exact \texttt{uint256} fills/s on an NVIDIA GB10
(6.9\,ns/match) and $\sim$250M fills/s on an Apple M4 Max (4.15\,ns/match), with
output identical bit-for-bit to the CPU reference. Because per-book arenas are
independent, aggregate throughput exceeding one billion fills/s is reached
across a node fleet rather than on any single device. Matching composes with
market-sharded Block-STM settlement (2.2M fills/s, CPU/GPU byte-identical commit
order) and a post-quantum rollup to the Z-Chain.
As quantum computing threatens existing cryptographic systems, our
quantum-resistant design ensures long-term security for digital asset trading.
\section*{Acknowledgments}
We thank the Lux Industries team for their contributions to the consensus protocol, the open-source community for DPDK and RDMA implementations, and early testers for performance optimization insights.
\bibliographystyle{plain}
\bibliography{references}
\appendix
\section{Implementation Details}
\subsection{Build Configuration}
The system supports multiple build targets:
\begin{lstlisting}
# Pure Go (simplest)
CGO_ENABLED=0 make go-build
# Hybrid Go/C++ (production)
CGO_ENABLED=1 make hybrid-build
# With DPDK (kernel bypass)
make dpdk-build
# With GPU support
make gpu-build
\end{lstlisting}
\subsection{Deployment Example}
Running a 3-node network:
\begin{lstlisting}
# Node 1
./xchain-dex --node-id node1 \
--api-port 8080 \
--consensus-port 6001 \
--enable-qchain \
tcp://node2:6002 tcp://node3:6003
# Node 2
./xchain-dex --node-id node2 \
--api-port 8081 \
--consensus-port 6002 \
--enable-qchain \
tcp://node1:6001 tcp://node3:6003
# Node 3
./xchain-dex --node-id node3 \
--api-port 8082 \
--consensus-port 6003 \
--enable-qchain \
tcp://node1:6001 tcp://node2:6002
\end{lstlisting}
\subsection{Performance Tuning}
Key optimizations for production:
\begin{lstlisting}
# Disable CPU frequency scaling
echo performance > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# Set network buffers
sysctl -w net.core.rmem_max=134217728
sysctl -w net.core.wmem_max=134217728
# Pin interrupts to specific cores
echo 2 > /proc/irq/24/smp_affinity
# Use huge pages for DPDK
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
\end{lstlisting}
\end{document}