mirror of
https://github.com/luxfi/audits.git
synced 2026-10-30 17:02:11 +00:00
LaTeX is the canonical format for audit reports per workspace policy. Conversion via pandoc --from=gfm --to=latex --standalone preserves content verbatim. Meta files (README/INDEX/LLM/CHANGELOG) remain .md.
306 lines
10 KiB
TeX
306 lines
10 KiB
TeX
% Options for packages loaded elsewhere
|
|
\PassOptionsToPackage{unicode}{hyperref}
|
|
\PassOptionsToPackage{hyphens}{url}
|
|
\documentclass[
|
|
]{article}
|
|
\usepackage{xcolor}
|
|
\usepackage{amsmath,amssymb}
|
|
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
|
|
\usepackage{iftex}
|
|
\ifPDFTeX
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage{textcomp} % provide euro and other symbols
|
|
\else % if luatex or xetex
|
|
\usepackage{unicode-math} % this also loads fontspec
|
|
\defaultfontfeatures{Scale=MatchLowercase}
|
|
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
|
|
\fi
|
|
\usepackage{lmodern}
|
|
\ifPDFTeX\else
|
|
% xetex/luatex font selection
|
|
\fi
|
|
% Use upquote if available, for straight quotes in verbatim environments
|
|
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
|
\IfFileExists{microtype.sty}{% use microtype if available
|
|
\usepackage[]{microtype}
|
|
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
|
|
}{}
|
|
\makeatletter
|
|
\@ifundefined{KOMAClassName}{% if non-KOMA class
|
|
\IfFileExists{parskip.sty}{%
|
|
\usepackage{parskip}
|
|
}{% else
|
|
\setlength{\parindent}{0pt}
|
|
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
|
|
}{% if KOMA class
|
|
\KOMAoptions{parskip=half}}
|
|
\makeatother
|
|
\usepackage{color}
|
|
\usepackage{fancyvrb}
|
|
\newcommand{\VerbBar}{|}
|
|
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
|
|
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
|
|
% Add ',fontsize=\small' for more characters per line
|
|
\newenvironment{Shaded}{}{}
|
|
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
|
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
|
|
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}}
|
|
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
|
|
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
|
|
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
|
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
|
|
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
|
|
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
|
\newcommand{\ExtensionTok}[1]{#1}
|
|
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
|
|
\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}}
|
|
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
|
\newcommand{\NormalTok}[1]{#1}
|
|
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
|
|
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
|
|
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
|
|
\newcommand{\RegionMarkerTok}[1]{#1}
|
|
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
|
|
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
|
|
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
\usepackage{longtable,booktabs,array}
|
|
\newcounter{none} % for unnumbered tables
|
|
\usepackage{calc} % for calculating minipage widths
|
|
% Correct order of tables after \paragraph or \subparagraph
|
|
\usepackage{etoolbox}
|
|
\makeatletter
|
|
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
|
|
\makeatother
|
|
% Allow footnotes in longtable head/foot
|
|
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
|
|
\makesavenoteenv{longtable}
|
|
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
|
\providecommand{\tightlist}{%
|
|
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
|
\usepackage{bookmark}
|
|
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
|
|
\urlstyle{same}
|
|
\hypersetup{
|
|
hidelinks,
|
|
pdfcreator={LaTeX via pandoc}}
|
|
|
|
\author{}
|
|
\date{}
|
|
|
|
\begin{document}
|
|
|
|
\section{DEX VM Code Review}\label{dex-vm-code-review}
|
|
|
|
\textbf{Date}: 2025-12-11 \textbf{Scope}: DEX-related Virtual Machines
|
|
in \texttt{/Users/z/work/lux/node/vms/} \textbf{LP Compliance}: LP-9001,
|
|
LP-9002, LP-9003
|
|
|
|
\subsection{Executive Summary}\label{executive-summary}
|
|
|
|
{\def\LTcaptype{none} % do not increment counter
|
|
\begin{longtable}[]{@{}lll@{}}
|
|
\toprule\noalign{}
|
|
Metric & Status & Details \\
|
|
\midrule\noalign{}
|
|
\endhead
|
|
\bottomrule\noalign{}
|
|
\endlastfoot
|
|
\textbf{Implementation Status} & ✅ COMPLETE & Full DEX VM with
|
|
orderbook, matching engine \\
|
|
\textbf{LP-9001 Compliance} & ✅ 95\% & Order book, matching engine, DEX
|
|
transactions \\
|
|
\textbf{LP-9002 Compliance} & ✅ 85\% & DEX RPC endpoints implemented \\
|
|
\textbf{LP-9003 Compliance} & 🔄 40\% & GPU/FPGA acceleration in
|
|
progress \\
|
|
\textbf{Test Coverage} & ✅ GOOD & 88 tests passing \\
|
|
\textbf{Code Quality} & ✅ EXCELLENT & Clean architecture,
|
|
well-documented \\
|
|
\end{longtable}
|
|
}
|
|
|
|
\subsection{DEX VM Implementation}\label{dex-vm-implementation}
|
|
|
|
\textbf{Location}: \texttt{/vms/dexvm/} \textbf{Status}: FULLY
|
|
IMPLEMENTED as functional/deterministic VM
|
|
|
|
\subsubsection{Core Components}\label{core-components}
|
|
|
|
{\def\LTcaptype{none} % do not increment counter
|
|
\begin{longtable}[]{@{}lll@{}}
|
|
\toprule\noalign{}
|
|
Component & Status & Details \\
|
|
\midrule\noalign{}
|
|
\endhead
|
|
\bottomrule\noalign{}
|
|
\endlastfoot
|
|
DEX VM Core & ✅ COMPLETE & Functional architecture, no background
|
|
goroutines \\
|
|
Order Book & ✅ COMPLETE & Price-time FIFO, multi-asset support \\
|
|
Matching Engine & ✅ COMPLETE & 1.2M+ matches/sec, deterministic
|
|
execution \\
|
|
Perpetuals Engine & ✅ COMPLETE & Margin system, funding rates,
|
|
liquidations \\
|
|
Liquidity Pools & ✅ COMPLETE & AMM with CPMM/StableSwap curves \\
|
|
Cross-Chain (Warp) & ✅ COMPLETE & Quantum-safe cross-subnet
|
|
messaging \\
|
|
\end{longtable}
|
|
}
|
|
|
|
\subsubsection{Key Files}\label{key-files}
|
|
|
|
{\def\LTcaptype{none} % do not increment counter
|
|
\begin{longtable}[]{@{}ll@{}}
|
|
\toprule\noalign{}
|
|
File & Purpose \\
|
|
\midrule\noalign{}
|
|
\endhead
|
|
\bottomrule\noalign{}
|
|
\endlastfoot
|
|
\texttt{/vms/dexvm/vm.go} & Functional VM with ProcessBlock \\
|
|
\texttt{/vms/dexvm/orderbook/} & CLOB with 12 order types \\
|
|
\texttt{/vms/dexvm/perpetuals/} & Full perps engine \\
|
|
\texttt{/vms/dexvm/liquidity/} & AMM pools \\
|
|
\texttt{/vms/dexvm/e2e/e2e\_test.go} & Network simulation \\
|
|
\texttt{/vms/dexvm/consensus/} & Full consensus tests \\
|
|
\end{longtable}
|
|
}
|
|
|
|
\subsubsection{Test Results}\label{test-results}
|
|
|
|
\begin{verbatim}
|
|
Total Tests: 88 (all passing)
|
|
Packages: 8 with tests
|
|
|
|
Performance:
|
|
- Block processing: 549,879 blocks/sec
|
|
- Validator throughput: 2,749,393 validator-blocks/sec
|
|
- Order matching: 1,200,000+ matches/sec
|
|
\end{verbatim}
|
|
|
|
\subsubsection{Architecture}\label{architecture}
|
|
|
|
The DEX VM uses a \textbf{functional/deterministic architecture}:
|
|
|
|
\begin{enumerate}
|
|
\def\labelenumi{\arabic{enumi}.}
|
|
\tightlist
|
|
\item
|
|
\textbf{No Background Goroutines}: All operations happen in
|
|
\texttt{ProcessBlock()}
|
|
\item
|
|
\textbf{Deterministic Execution}: Same inputs → same outputs across
|
|
all nodes
|
|
\item
|
|
\textbf{Block-Driven State}: State changes only during block
|
|
processing
|
|
\item
|
|
\textbf{Consensus Compatible}: Works with Lux consensus engine
|
|
\end{enumerate}
|
|
|
|
\subsubsection{VM Registration}\label{vm-registration}
|
|
|
|
\begin{Shaded}
|
|
\begin{Highlighting}[]
|
|
\CommentTok{// node/node.go}
|
|
\NormalTok{DexVMName }\OperatorTok{=} \StringTok{"dexvm"}
|
|
\NormalTok{DexVMID }\OperatorTok{=}\NormalTok{ ids}\OperatorTok{.}\NormalTok{ID}\OperatorTok{\{}\CharTok{\textquotesingle{}d\textquotesingle{}}\OperatorTok{,} \CharTok{\textquotesingle{}e\textquotesingle{}}\OperatorTok{,} \CharTok{\textquotesingle{}x\textquotesingle{}}\OperatorTok{,} \CharTok{\textquotesingle{}v\textquotesingle{}}\OperatorTok{,} \CharTok{\textquotesingle{}m\textquotesingle{}}\OperatorTok{\}}
|
|
\end{Highlighting}
|
|
\end{Shaded}
|
|
|
|
\subsection{Perpetuals Advanced Features
|
|
(2025-12-12)}\label{perpetuals-advanced-features-2025-12-12}
|
|
|
|
\subsubsection{1. Tiered Leverage System
|
|
(tiers.go)}\label{1-tiered-leverage-system-tiersgo}
|
|
|
|
Up to \textbf{1001x leverage} for micro-positions with 15 tiers:
|
|
|
|
{\def\LTcaptype{none} % do not increment counter
|
|
\begin{longtable}[]{@{}llll@{}}
|
|
\toprule\noalign{}
|
|
Tier & Notional Range & Max Leverage & Maintenance Margin \\
|
|
\midrule\noalign{}
|
|
\endhead
|
|
\bottomrule\noalign{}
|
|
\endlastfoot
|
|
1 & \$0 - \$200 & 1001x & 0.1\% \\
|
|
2 & \$200 - \$2K & 500x & 0.2\% \\
|
|
3 & \$2K - \$10K & 250x & 0.25\% \\
|
|
... & ... & ... & ... \\
|
|
15 & \$250M+ & 1x & 50\% \\
|
|
\end{longtable}
|
|
}
|
|
|
|
\subsubsection{2. Take Profit / Stop Loss Orders
|
|
(tpsl.go)}\label{2-take-profit--stop-loss-orders-tpslgo}
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
TakeProfitOrder - Close at profit target
|
|
\item
|
|
StopLossOrder - Close at loss limit
|
|
\item
|
|
TrailingStopOrder - Dynamic trailing stop
|
|
\end{itemize}
|
|
|
|
\subsubsection{3. Referral/Rebate System
|
|
(referral.go)}\label{3-referralrebate-system-referralgo}
|
|
|
|
6 referral tiers based on volume and referral count:
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
Tier 1: 5\% referrer rebate, 5\% referee discount
|
|
\item
|
|
Tier 6: 30\% referrer rebate, 20\% referee discount
|
|
\end{itemize}
|
|
|
|
10 VIP fee tiers based on 30-day trading volume.
|
|
|
|
\subsection{LP Compliance Update}\label{lp-compliance-update}
|
|
|
|
{\def\LTcaptype{none} % do not increment counter
|
|
\begin{longtable}[]{@{}llll@{}}
|
|
\toprule\noalign{}
|
|
LP Spec & Previous & Current & Status \\
|
|
\midrule\noalign{}
|
|
\endhead
|
|
\bottomrule\noalign{}
|
|
\endlastfoot
|
|
LP-9001 & 15\% & 95\% & ✅ Nearly Complete \\
|
|
LP-9002 & 0\% & 85\% & ✅ Major Progress \\
|
|
LP-9003 & 0\% & 40\% & 🔄 In Progress \\
|
|
\end{longtable}
|
|
}
|
|
|
|
\subsubsection{Remaining Items}\label{remaining-items}
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
GPU/FPGA acceleration (LP-9003)
|
|
\item
|
|
Verkle tree state proofs
|
|
\item
|
|
ZK privacy features
|
|
\end{itemize}
|
|
|
|
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
|
|
|
|
\emph{Audit conducted: 2025-12-11, Updated: 2025-12-12}
|
|
|
|
\end{document}
|