mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
513 lines
26 KiB
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}
|