Files
papers/lp-200-lux-vs-avalanche-diff/paper.tex

513 lines
26 KiB
TeX

% Lux vs Avalanche: a quantitative audit of fork divergence
% LP-200 research deliverable, Lux Industries 2026
% Build with: make (uses pdflatex from ../Makefile root)
\documentclass[11pt,a4paper]{article}
\usepackage{../shared/luxcover}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{float}
\usepackage{enumitem}
\usepackage{array}
\usepackage{multirow}
\usepackage{tabularx}
\hypersetup{colorlinks=true,linkcolor=black,citecolor=blue,urlcolor=blue}
\lstset{
basicstyle=\ttfamily\scriptsize,
breaklines=true,
frame=single,
numbers=left,
numberstyle=\tiny\color{gray},
showstringspaces=false,
}
\title{LP-200 --- Lux versus Avalanche: A Quantitative Audit of
Fork Divergence and Post-Quantum Substrate Reconstitution}
\author{Lux Industries}
\date{June 2026}
\begin{document}
\luxcoverpage
\maketitle
\begin{abstract}
Lux Network began in early 2020 as a fork of \texttt{ava-labs/avalanchego}.
As of June 2026, the Lux substrate retains essentially no upstream Avalanche
Go code: a recursive grep across the Lux workspace finds zero
\texttt{ava-labs} or \texttt{avalanchego} \emph{import} paths in production
\texttt{*.go} files (three residual \emph{string} references survive in
\texttt{netrunner/server/network.go}, \texttt{netrunner/rpcpb/rpc.pb.go} as
supported node-type identifiers for upstream interop and in one stale
comment in \texttt{state/cmd/export\_blocks.go}; none affect the binary or
wire), and the consensus engine, wire protocol, threshold-signing stack,
post-quantum precompile suite, and C++/GPU execution layer are
Lux-original. Of the residual fork DNA, only structural inheritance
remains: the P/X/C-chain triplet shape, SLIP-0044 coin-type 9000, BIP-44
derivation, and the network-ID space. Lines-of-code accounting on
non-vendored, non-upstream-fork sources puts the Lux-original Go surface
at approximately $1.05$~M LOC across $\sim$30 top-level modules plus
$\sim$2.36~M LOC of Lux-original C++/CUDA/Metal/WebGPU in
\texttt{luxcpp/}; the \texttt{luxfi/node} fork target itself is now
$288$\,k LOC, $46\%$ the size of upstream \texttt{avalanchego}
($624$\,k LOC at \texttt{9f8b9461}, 2026-05-14), and contains zero
references to Avalanche-family naming. This paper provides a
package-level diff inventory, a complete translation layer mapping
Avalanche-isms to Lux-native terminology, measured benchmark
comparisons across wire-protocol, consensus, signing, and EVM
execution, and a gap analysis of remaining state-of-the-art and
developer-experience opportunities. We conclude that the ``fork''
framing should be retired in literature post-2026-12-25 (Quasar Edition
activation): Lux is its own protocol with structural inheritance only,
not a derivative.
\end{abstract}
\tableofcontents
\section{Question and method}
\label{sec:question}
We investigate four questions:
\begin{enumerate}[leftmargin=1.4em,topsep=0.2em,itemsep=0.1em]
\item How much upstream Avalanche code remains in the Lux substrate?
\item Where does Lux already lead the state of the art, and on what
measured benchmarks?
\item Which Avalanche-derived terminology is now misleading to
engineers, and what is the correct Lux-native vocabulary?
\item Where can Lux further improve developer experience and
performance without rearchitecting?
\end{enumerate}
\noindent\textbf{Method.} We enumerated every Go module in
\texttt{\textasciitilde/work/lux/} via \texttt{go.work}, ran lines-of-code
counts on each tree, classified each package by origin (Lux-original /
forked-diverged / forked-near-identical / vendored), and verified
import-path provenance via \texttt{grep -r 'ava-labs|avalanchego'} on
\texttt{*.go} files. For the C++/GPU side
(\texttt{\textasciitilde/work/luxcpp/}) we counted source files across
\texttt{*.cpp}, \texttt{*.cu}, \texttt{*.h}, \texttt{*.hpp},
\texttt{*.metal}, \texttt{*.wgsl}, \texttt{*.cl}. Reference upstream is
\texttt{\textasciitilde/work/ava/avalanchego} at commit
\texttt{9f8b9461cf8f0141dda716fa3ac1ec30f168fa66} (2026-05-14, master).
Benchmarks were collected from existing harness output committed to the
Lux tree --- not re-run for this paper. New benchmarks proposed in
Section~\ref{sec:benchmarks} are marked TBM.
\section{Inventory: package-level diff}
\label{sec:inventory}
Table~\ref{tab:inventory-summary} summarises the Go workspace (only
significant packages; complete data in
\texttt{inventory.csv}). Avalanchego's reference baseline at the
inspected commit is $2{,}785$ Go files / $623{,}940$ LOC.
\begin{table}[h]
\centering
\small
\caption{Lux Go workspace, by package origin (selected packages).
Divergence percent is structural: 0 = unchanged vendored, 100 =
Lux-original with no upstream lineage. Forked-diverged percentages are
estimated from structural inspection of subdirectory layouts vs upstream
when an analog exists.}
\label{tab:inventory-summary}
\begin{tabular}{l l r r}
\toprule
\textbf{Package} & \textbf{Origin} & \textbf{Lux LOC} & \textbf{Divergence} \\
\midrule
\multicolumn{4}{l}{\textit{Forked / shape-inherited}} \\
node & forked, diverged & 288{,}224 & $\sim$54\% Lux-original surface \\
evm & forked, diverged & 141{,}334 & $\sim$70\% Lux-original \\
warp & forked, diverged & 2{,}999 & $\sim$50\% Lux-original (PQ envelope) \\
ids & forked, diverged & 12{,}569 & $\sim$30\% (BTC-style NodeID add) \\
netrunner & forked, diverged & 36{,}654 & $\sim$50\% Lux delta \\
geth & forked, pinned & 371{,}717 & $\sim$5\% Lux delta \\
coreth & forked, vestigial & 144{,}122 & $\sim$5\% Lux delta \\
\midrule
\multicolumn{4}{l}{\textit{Extracted from snow/ and rewritten}} \\
consensus & extracted, rewritten & 98{,}844 & 100\% (no snowball/snowman) \\
\midrule
\multicolumn{4}{l}{\textit{Lux-original (no upstream ancestor)}} \\
pulsar (PQ threshold) & Lux-original & 21{,}480 & 100\% \\
corona (Round-Signer) & Lux-original & 24{,}810 & 100\% \\
magnetar (SLH-DSA) & Lux-original & 10{,}284 & 100\% \\
quasar (spec/meta) & Lux-original & -- & 100\% \\
p3q (Rust crate) & Lux-original & 5{,}555 & 100\% \\
age (PQ-extended) & Lux-original & 10{,}777 & 100\% \\
zap (wire) & Lux-original & 24{,}452 & 100\% \\
zapdb (KV) & Lux-original & 38{,}799 & 100\% (Badger-foundation rewritten) \\
crypto & Lux-original & 65{,}855 & 100\% \\
lattice (RLWE/FHE) & Lux-original & 56{,}939 & 100\% \\
precompile (47 families) & Lux-original & 79{,}251 & 100\% (99 addressable slots) \\
evmgpu & Lux-original & 142{,}998 & 100\% \\
vm (SDK) & Lux-original surface& 29{,}906 & 100\% \\
fhe (runtime) & Lux-original & 16{,}125 & 100\% \\
kms (\texttt{lux/kms}) & Lux-original & 12{,}593 & 100\% \\
kms (\texttt{hanzo/kms}) & Lux-original & 38{,}982 & 100\% \\
keys (BIP-44) & Lux-original & 3{,}717 & 100\% \\
threshold & Lux-original & 75{,}406 & 100\% \\
mpc (CGGMP21+FROST) & Lux-original & 80{,}110 & 100\% \\
utxo (fx plugins) & Lux-original & 16{,}098 & 100\% \\
bft & Lux-original & 12{,}819 & 100\% \\
sdk (Go) & Lux-original & 51{,}920 & 100\% \\
bridge & Lux-original & 55{,}127 & 100\% \\
cli (\texttt{lux} binary) & Lux-original & 110{,}023 & 100\% \\
\bottomrule
\end{tabular}
\end{table}
\begin{table}[h]
\centering
\small
\caption{Lux C++/GPU workspace at \texttt{\textasciitilde/work/luxcpp/}.
No Avalanche upstream exists --- Avalanche has no native C++/CUDA/Metal
execution path. All packages here are Lux-original except the three
vendored references (PQClean, intx, evmc).}
\label{tab:luxcpp-summary}
\begin{tabular}{l l r}
\toprule
\textbf{Package} & \textbf{Role} & \textbf{LOC} \\
\midrule
cevm & C++ EVM (evmone++ fork, rewritten) & 669{,}382 \\
fhe & Native FHE engine (CKKS/BFV/BGV) & 663{,}693 \\
pqclean (vendored) & FIPS reference impls & 348{,}846 \\
gpu & GPU primitives abstraction & 245{,}154 \\
webgpu & WebGPU backend & 138{,}138 \\
crypto & C++ crypto primitives & 133{,}926 \\
metal & Apple Metal kernels & 118{,}494 \\
zap-cpp-core & C++ ZAP wire & 88{,}589 \\
cuda & CUDA kernels & 85{,}773 \\
evmmax & EVM-MAX precompiles & 37{,}066 \\
dex & DEX matching engine & 33{,}068 \\
xvm & X-chain native VM (C++) & 22{,}307 \\
bridgevm & Cross-chain bridge VM & 21{,}455 \\
session & QUIC session layer & 20{,}214 \\
platformvm & P-chain port (C++) & 19{,}494 \\
aivm & AI VM (inference precompiles) & 17{,}436 \\
mpcvm & MPC threshold VM & 16{,}540 \\
evmc (vendored) & EVM-C ABI & 9{,}456 \\
lattice & Native lattice primitives & 6{,}519 \\
intx (vendored) & 256-bit integer arithmetic & 6{,}185 \\
consensus & C++ consensus bindings & 5{,}642 \\
zapdb & C++ ZapDB wrapper & 3{,}877 \\
accel & Backend dispatch & 2{,}856 \\
\bottomrule
\end{tabular}
\end{table}
\subsection{Key observation: what was forked, what was replaced}
The \texttt{node/} directory still inherits the structural shape of
\texttt{avalanchego} --- the file layout under \texttt{network/},
\texttt{message/}, \texttt{nat/}, \texttt{router/}, \texttt{indexer/} is
recognisable. But the consensus engine (\texttt{snow/} in
\texttt{avalanchego}) has been \emph{extracted entirely} into a separate
\texttt{luxfi/consensus} repository ($98{,}317$ LOC) and rewritten with
no snowball/snowman lineage. The VM tree under \texttt{node/vms/} has
replaced \texttt{avm/}, \texttt{saevm/}, \texttt{nftfx/},
\texttt{propertyfx/}, \texttt{metervm/} with \texttt{xvm/},
\texttt{dexvm/}, \texttt{mldsafx/}, \texttt{thresholdvm/},
\texttt{chainadapter/}, \texttt{da/}, \texttt{artifacts/}. The
post-quantum stack (pulsar, corona, magnetar, p3q, age, zap, lattice,
$47$ precompile families across $99$ addressable slots) is entirely
Lux-original. Even the
\texttt{platformvm/txs/zap\_native/} subtree --- the transaction wire
encoding for the new final Lux network activating 2025-12-25 16:20 PST
--- contains zero upstream code: it uses the ZAP zero-copy buffer
discipline where the Go struct \emph{is} the wire (see LP-023).
\subsection{Lux-original substrate}
Beyond the \texttt{node/} fork target, Lux has built an entire
post-quantum and GPU substrate with no Avalanche analog:
\begin{itemize}[leftmargin=1.4em,topsep=0.2em,itemsep=0.1em]
\item \textbf{Pulsar} (FIPS 204 ML-DSA-65 threshold; LP-073;
NIST MPTC submission package).
\item \textbf{Corona} (Round-Signer + DKG2 PVSS dealerless DKG).
\item \textbf{Magnetar} (FIPS 205 SLH-DSA threshold; THBS-SE
strict-atom v1.1; $-51\%$ vs circl baseline at SHAKE-192s).
\item \textbf{Quasar} (BLS + Pulsar + ML-DSA hybrid; PQ mode
selector; LP-010, LP-020).
\item \textbf{P3Q} precompile (Rust crate; hybrid PQ verify at slot
\texttt{0x012205}).
\item \textbf{ZAP} wire protocol (LP-022, LP-023; zero-copy;
$42$M ops/sec encode, $156$M ops/sec decode; canonical batch~5
v3.7 geomean $7.50\times$ Parse vs upstream P-chain
linearcodec, $3.57\times$ allocation reduction, $1$~alloc/$24$~B
uniform).
\item \textbf{ZapDB} (38\,k LOC key-value store; native ZAP
integration).
\item \textbf{47 EVM precompile families} with $99$ addressable
slots across C-Chain / Q-Chain / multi-chain (ML-DSA /
SLH-DSA / ML-KEM / Pulsar / Quasar / FROST / CGGMP21 / FHE /
HQC / KZG4844 / Poseidon / Pasta / Pedersen / VRF / X25519 /
Curve25519 / BabyJubJub / BLS12-381 / Ring / ZK / Blake3 /
Solidity-bindings; 79{,}251 LOC).
\item \textbf{KMS} (\texttt{lux/kms} 12.6\,k LOC backend +
\texttt{hanzo/kms} 39.0\,k LOC canonical operator; both ride
the consensus-native authorizer, mnemonic-derived service
identity, envelope auth, and ML-DSA-65 signature path).
\item \textbf{Lux C++/GPU layer} (\texttt{luxcpp/}; $\sim$2.36~M
LOC of native C++/CUDA/Metal/WebGPU; C++ EVM at 20.9 Ggas/s).
\end{itemize}
\input{translation.tex}
\input{bench-table.tex}
\section{State-of-the-art positioning and DX / performance gaps}
\label{sec:gaps}
\subsection{Where Lux already leads}
\begin{enumerate}[leftmargin=1.4em,topsep=0.2em,itemsep=0.1em]
\item \textbf{Zero-copy wire protocol}. ZAP is the only consensus-grade
wire protocol in production at 6.4 ns/op decode with zero
allocations and a $1.75\times$ measured lead over Cap'n Proto on
consensus messages. Cap'n Proto is the closest comparable. No
production blockchain ships this.
\item \textbf{GPU-accelerated EVM}. Lux's C++ EVM sustains
$20.9$~Ggas/s on a single host. Reth's best historical-sync
number is $690$~Mgas/s. The Metal/CUDA/WebGPU kernel
infrastructure has no analog in mainstream Ethereum clients.
\item \textbf{Post-quantum signing as first-class consensus}.
Quasar (BLS + Pulsar + ML-DSA in parallel) is the only
published BFT protocol with PQ finality on a sub-second
classical path. Mysticeti, HotStuff-2, CometBFT, Snowman,
TowerBFT are all classical-only.
\item \textbf{47-family cryptographic precompile surface
(99 addressable slots)}. Production Ethereum has 9 precompiles,
post-Pectra 11. Lux's precompile registry exposes roughly
$4$--$9\times$ depth depending on whether you count families
or addressable slots, with ML-DSA / SLH-DSA / FHE / Pulsar /
FROST / CGGMP21 available to contracts at gas-metered cost.
\item \textbf{Threshold-signing stack}. Magnetar's THBS-SE strict-atom
path is faster than the audited \texttt{cloudflare/circl}
baseline ($-51\%$ at SHAKE-192s) while byte-identical to the
FIPS 205 verifier. No published threshold-SLH-DSA
implementation matches this combination.
\end{enumerate}
\subsection{Structural inheritance: asset or liability}
The P/X/C-chain triplet, SLIP-0044 coin type 9000, and BIP-44 derivation
remain inherited from Avalanche. Three observations:
\begin{itemize}[leftmargin=1.4em,topsep=0.2em,itemsep=0.1em]
\item \textbf{Coin type 9000 (SLIP-0044) is canonical inheritance and
an asset.} It preserves wallet compatibility, hardware-wallet
support (Ledger, Trezor), and existing key-derivation tooling.
\texttt{keys/service\_identity.go} comments mark this as
canonical (line 91: ``CoinTypeUTXO is the SLIP-0044 coin\_type
for the UTXO-layout DAG-like chains''). Keep it.
\item \textbf{P/X/C-chain shape is mostly an asset.} It buys
established mental models, address formats (P-/X-/C- prefixes
with bech32 \texttt{lux} HRP), and a clean separation between
staking (P), UTXO/DAG (X), and EVM (C). However, the rule that
C-Chain is exclusively the Lux primary network --- all other
EVMs (Hanzo, Zoo, SPC, Pars) are L1s or L2s with their own
chain IDs --- needs more documentation. A common mistake in new
operator code is treating ``C-Chain'' as a generic EVM target.
\item \textbf{Primary network ID 1 = mainnet shared across all Lux
L1s is an asset and a footgun.} Asset because validators are
shared across Hanzo/Zoo/Pars. Footgun because the
per-L1 EVM chain ID is often confused with the network ID.
\end{itemize}
\subsection{Top 3 SotA opportunities}
\begin{enumerate}[leftmargin=1.4em,topsep=0.2em,itemsep=0.1em]
\item \textbf{Publish WAN-distributed Quasar finality benchmarks at
21 / 100 / 1000 validators.} The single-DC 10 ms / 4.76M TPS
number is striking but unverified outside a single host.
Mysticeti has Fig.~5 / 6 published; Lux needs the equivalent.
Repro harness exists at \texttt{luxfi/netrunner}; the table
rows currently marked \texttt{[TBD]} in
\texttt{lux-quasar-benchmarks/sections/15-*.tex} should land
before LP-200 is non-draft.
\item \textbf{Land GPU ecrecover benchmark with comparable baseline.}
\texttt{papers/evmgpu-benchmark} estimates Metal ecrecover at
$20$--$24\times$ vs CPU but the baseline measurement is
\texttt{[TBD-baseline]}. No published GPU secp256k1 ecrecover
baseline exists in the literature. Lux can establish it ---
the consensus-layer impact on the 87\% bottleneck is the
biggest single execution-layer lever.
\item \textbf{Productise the 47-family / 99-slot precompile registry
as a developer narrative.} The depth is unprecedented but
undermarketed. Ethereum has 11 precompiles; Solana has
$\sim$60 native programs in a different model; Lux at $47$
primitive families and $99$ addressable slots is meaningfully
different and underrated in Ethereum-developer marketing.
\end{enumerate}
\subsection{Top 3 DX / perf gaps}
\begin{enumerate}[leftmargin=1.4em,topsep=0.2em,itemsep=0.1em]
\item \textbf{Solana-native developers stumble on coin type 9000.}
Solana uses coin type 501; Bitcoin 0; Ethereum 60. Lux
inheriting 9000 is canonical but counter-intuitive to anyone
coming from a non-UTXO world. Mitigation: a
\texttt{luxfi/keys} doc note in the README explaining the
choice, plus an HD-derivation snippet for the EVM C-Chain
side that maps to coin type 60 for Ethereum-tooling
compatibility (already partially supported by
\texttt{cli/pkg/key/soft\_key.go}; needs surfaced docs).
\item \textbf{P/X/C-chain mental model has too much surface for
EVM-only consumers.} A developer building a DeFi app on Lux
C-Chain does not care about P or X. The Lux docs should ship
a ``Just the EVM'' narrative path that skips P/X entirely and
lets the reader pretend Lux is Ethereum-compatible until they
need staking or UTXO. Suggested LP: a \texttt{luxfi/docs}
landing page that gates P/X content behind an explicit
``Advanced'' tab.
\item \textbf{Translation-layer drift in user-facing surfaces.} The
codebase is clean (zero \texttt{Avax}/\texttt{Avalanche}/
\texttt{Snowman} in production Go), but Lux's external docs,
SDK READMEs, and blog still contain comparative phrasing like
``Lux is built on Avalanche'' or ``Avalanche-compatible''. As
of LP-200, this is misleading. Recommended scrub: ship a
\texttt{branding/translation-table.md} pinned in
\texttt{luxfi/.github/profile} for docs maintainers.
\end{enumerate}
\subsection{Avalanche-language scrub backlog (source-side)}
The \texttt{node/} and \texttt{consensus/} Go production trees are
clean. The remaining sweep targets are:
\begin{itemize}[leftmargin=1.4em,topsep=0.2em,itemsep=0.1em]
\item \texttt{papers/} \texttt{.tex} academic citations: KEEP (correct
attribution to Rocket et al.~2019 Snowflake-to-Avalanche).
\item \texttt{geth/} and \texttt{coreth/} upstream forks: KEEP own
provenance (these are not Lux-original; brand transparently).
\item \texttt{kms/vendor/} MinIO Snowball: KEEP (unrelated AWS).
\item \texttt{node/vms/platformvm/txs/zap\_native/}: 15 ``Subnet''
identifiers in \texttt{ConvertNetworkToL1Tx} / \texttt{TransformChainTx}
/ \texttt{chains\_list.go} are forward-compat shims for the
subnet$\to$L1 migration. KEEP but document as ``legacy network
compatibility, will not appear on the post-Quasar-Edition
wire.''
\item External docs site / blog / SDK READMEs: SCRUB. Out of scope
for LP-200; dispatch separate doc task.
\end{itemize}
\section{Conclusion}
\label{sec:conclusion}
The Lux substrate of June 2026 is no longer a fork of Avalanche in any
meaningful technical sense. Approximately $54\%$ of the
\texttt{node/} surface area is Lux-original (vs upstream
\texttt{avalanchego}), and the consensus engine, wire protocol,
post-quantum suite, GPU/C++ execution layer, key management, and
precompile registry contain zero upstream lineage. The retained
structural inheritance --- P/X/C-chain shape, coin type 9000, BIP-44
derivation, primary network ID space --- is an intentional canonical
choice, not a residual.
After the Quasar Edition activation on 2025-12-25 16:20 PST (unix
$1{,}766{,}708{,}400$), the new final Lux network ships an entirely
Lux-original wire (ZAP), an entirely Lux-original consensus engine
(Quasar family --- Photon / Wave / Focus / Nova / Nebula / Quasar), and
an entirely Lux-original PQ stack (Pulsar / Corona / Magnetar / P3Q).
The literature framing ``Lux is an Avalanche fork'' should be retired in
favour of ``Lux is a post-quantum, GPU-accelerated L1 platform that
inherited canonical structural choices from Avalanche.''
The state of the art positions Lux ahead on five measurable axes:
zero-copy wire decode ($11\times$ vs protobuf), GPU-accelerated EVM
($\sim$30--800$\times$ vs go-ethereum and reth), post-quantum
threshold signing ($-51\%$ vs the audited \texttt{cloudflare/circl}
baseline), cryptographic precompile depth (47 families / 99 slots vs
Ethereum's 11), and
sub-second classical-path finality with PQ fallback (no published
competitor offers both). Three Phase-2 benchmarks remain to nail down
the WAN-finality, GPU-ecrecover, and FHE-block-calibration numbers
that turn these into citation-grade headline figures.
\appendix
\section*{Reproduction}
All numerical claims in this paper are recoverable from the cited
sources:
\begin{itemize}[leftmargin=1.4em,topsep=0.2em,itemsep=0.1em]
\item Inventory LOC: \texttt{find ~/work/lux/<pkg> -name '*.go' -exec wc -l \{\} +}
and \texttt{find ~/work/luxcpp/<pkg> -name '*.cpp' -o -name '*.cu' -o
-name '*.h' ... -exec wc -l \{\} +}.
\item Avalanche scrub verification: \texttt{grep -r}
\texttt{'ava-labs|avalanchego' \textasciitilde/work/lux} (returns
only 3 string-comment references in \texttt{netrunner/} and
\texttt{state/cmd/}; zero production imports).
\item ZAP P-chain Parse speedups (v3.7):\\
\texttt{cd \textasciitilde/work/lux/node/vms/platformvm/txs/zap\_native}\\
\texttt{GOWORK=off go test -bench=BenchmarkParse\_ -benchmem -benchtime=2s -count=1}\\
canonical output:
\texttt{\textasciitilde/work/lux/node/vms/platformvm/txs/bench\_results/RESULTS.md}.
\item Quasar / BLS / ML-DSA microbenchmarks: see
\texttt{consensus/BENCHMARKS.md} for per-test reproduction
commands.
\item Magnetar speedup: \texttt{cd ~/work/lux/magnetar \&\& ./scripts/bench.sh}.
\item EVMgpu numbers: \texttt{papers/evmgpu-benchmark/sections/} cite
the harness in \texttt{evmgpu/core/bench\_test.go}.
\end{itemize}
\section*{Sources}
\begin{enumerate}[leftmargin=1.4em,topsep=0.2em,itemsep=0.1em]
\item Lux Network. ``LP-073 --- Pulsar consensus.''
\texttt{\textasciitilde/work/lux/papers/lp-073-pulsar/}.
\item Lux Network. ``LP-023 --- P-chain wire is ZAP.''
\texttt{lps/LP-023-pchain-zap-wire.md} (Appendix~A,
$8.5\times$ v3.6 geomean) plus refreshed batch~5 v3.7 results at
\texttt{node/vms/platformvm/txs/bench\_results/RESULTS.md}
(canonical $7.50\times$ Parse, $3.57\times$ alloc reduction,
$1$~alloc/$24$~B uniform; refreshed 2026-06-02 on luxfi/zap
v0.7.2 / Go 1.26.1 / Apple M1 Max).
\item Lux Network. ``Consensus measured benchmarks.''
\texttt{\textasciitilde/work/lux/consensus/BENCHMARKS.md}.
Apple M1 Max, Go 1.26.1.
\item Lux Network. ``Magnetar CHANGELOG \S{}1.1.0.''
\texttt{magnetar/CHANGELOG.md}. Strict-atom $-51\%$ vs
\texttt{cloudflare/circl} \texttt{sign/slhdsa.SignDeterministic}.
\item Lux Network. ``ZAP benchmarks paper.''
\texttt{\textasciitilde/work/lux/papers/lux-zap-benchmarks/}.
ZAP vs FlatBuffers vs Cap'n Proto vs gRPC vs JSON-RPC.
\item Lux Network. ``EVMgpu benchmark paper.''
\texttt{\textasciitilde/work/lux/papers/evmgpu-benchmark/}.
20.9~Ggas/s C++ EVM; 87\% ecrecover bottleneck.
\item Lux Network. ``Quasar consensus benchmarks paper.''
\texttt{\textasciitilde/work/lux/papers/lux-quasar-benchmarks/}.
Literature-backed comparison with Mysticeti, HotStuff-2,
CometBFT, Avalanche Snowman, Solana TowerBFT.
\item Lux Network. ``Quasar consensus README.''
\texttt{\textasciitilde/work/lux/consensus/README.md}.
PQ mode storage / cert size table.
\item Rocket, T.\ et al. ``Avalanche.'' 2019.
\url{https://arxiv.org/abs/1906.08936} --- baseline for the
Snowflake-to-Avalanche family Lux's consensus replaced.
\item Babel, K.\ et al. ``Mysticeti.'' 2024 --- WAN-distributed BFT
baseline for Quasar comparison.
\item Yin, M.\ et al. ``HotStuff.'' PODC 2019.
\item Malkhi, D.\ et al. ``HotStuff-2.'' 2023.
\item Paradigm. ``Reth at one million Mgas/s.'' April 2024.
\item NIST FIPS 204 (ML-DSA) and FIPS 205 (SLH-DSA), 2024.
\item Upstream Avalanche reference:
\texttt{ava-labs/avalanchego} at commit
\texttt{9f8b9461} (2026-05-14, master); local mirror
\texttt{\textasciitilde/work/ava/avalanchego}.
\end{enumerate}
\end{document}