mirror of
https://github.com/lux-apps/papers.git
synced 2026-11-02 11:39:52 +00:00
Sweep across the non-Tier-1 paper catalogue (Tier-1 owned by parallel
agent and excluded). All 113 processed papers already had luxcover
wired up; this commit fixes 14 build breakers and produces fresh
PDFs across the catalogue.
Fixes:
- lux-blockchain-scaling-laws: em-dash inside lstlisting -> --
- lux-corona-pq: stale \input pointing at 03-the-corona-scheme renamed
to 03-the-corona-scheme (file already renamed on disk)
- lux-lattice-cryptography-primer: same Corona->Corona rename
- lux-formal-verification-lean4: Lean source uses unicode (×, ∀, ∃, ∈,
∧, ∨, ∩, ≠, ⟨, ⟩, ·, ¬) inside lstlistings. Added a literate map
so listings render the math glyphs without UTF-8 fault.
- lux-id-did-specification: ✓/✗ in tabular replaced with \ding{51}
/ \ding{55} (pifont). Added pifont package.
- lux-ntt-simd-implementation: middle-dot in Go assembly listings;
added literate {·}{\textperiodcentered}.
- lux-ntt-transform: μ, ×, –, — in regular text (no T1 fontenc).
Replaced with $\mu$/$\times$/--/--- via unicode->latex sweep.
- lux-perpetuals-derivatives, lux-quantum-consensus,
lux-quasar-consensus, lux-tee-computing-mesh: same unicode->latex
sweep across body text. Also fixed broken math segment
`$L_{avg} = 10$\times$$` -> `$L_{avg} = 10\times$`.
- lux-zchain: emoji glyphs in roadmap table replaced with
parenthetical text.
- lux-triple-proof-consensus: dropped duplicate \usepackage{geometry}
that clashed with luxcover (geometry option clash).
- pq: defined missing \Rq macro.
PDFs rebuilt for the full Tier-2/3 set.
Excluded (Tier-1, parallel agent): lp-073-pulsar, lp-stricte2epq,
dag-evm-formal, lp-010-quasar-stm-{3,4}, lp-020-quasar-consensus,
lux-institutional-custody, lux-nist-mptc-submission, pqsafe-il5,
pq-rns, plus shared/ and lps/.
144 lines
6.1 KiB
TeX
144 lines
6.1 KiB
TeX
\section{Honest Scope Statement}
|
|
\label{sec:honesty}
|
|
|
|
This paper reports what we measured. It does not extrapolate to
|
|
hardware we do not own or workloads we did not run. This section
|
|
pins the boundary explicitly.
|
|
|
|
\subsection{What was directly measured}
|
|
|
|
\begin{itemize}[nosep,leftmargin=2em]
|
|
\item NTT throughput sweep on Apple M1 Max: 10 batch sizes $\times$
|
|
3 backends (CPU, Metal native, WGSL via wgpu-native 29.0.0). Source:
|
|
\texttt{luxcpp/crypto/corona/test/lattice\_ring\_sweep\_bench.cpp}
|
|
($\sim$\,260 LoC) commit \texttt{luxcpp/crypto@bb9e9613}. Raw TSV in
|
|
\texttt{papers/lux-blockchain-scaling-laws/data/}.
|
|
|
|
\item ZAP message round-trip: \texttt{luxfi/consensus/bench/
|
|
zap\_throughput\_test.go::BenchmarkZAPThroughput} on M1 Max,
|
|
\texttt{benchtime=2s}, $5.47$ \textmu s/op.
|
|
|
|
\item TFHE bootstrap: \texttt{luxfi/fhe/bench\_crdt\_test.go::
|
|
BenchmarkBootstrapSingle}, $119.9$ ms/op single-threaded pure-Go.
|
|
|
|
\item Pulsar reshare $n \in \{21, 64, 128\}$:
|
|
\texttt{luxfi/threshold/protocols/lss/lss\_pulsar\_bench\_test.go::
|
|
BenchmarkPulsarReshare}, single-process serial, $12.67$/$156.61$/$1212.74$ s
|
|
end-to-end.
|
|
|
|
\item Cross-runtime KAT release gates (Go $\leftrightarrow$ C++):
|
|
$991$ assertions across codec / modarith / NTT / sample. All pass
|
|
byte-equal.
|
|
\end{itemize}
|
|
|
|
\subsection{What was NOT measured}
|
|
|
|
\begin{itemize}[nosep,leftmargin=2em]
|
|
\item \textbf{NVIDIA H100 / RTX / consumer GPU throughput.} No NVIDIA
|
|
hardware on the measurement host. The CUDA driver compiles but live
|
|
device dispatch needs CI-runner provisioning. CI workflow IDs
|
|
attempted on 2026-05-04 (\texttt{25304130314}, \texttt{25311210772},
|
|
\texttt{25313586744}, \texttt{25314213586}) all cancelled or stayed
|
|
queued; runner pool was either CPU-only or saturated.
|
|
|
|
\item \textbf{Block-STM parallel EVM throughput.}
|
|
\texttt{luxfi/evm/core/parallel/blockstm.go} ships, with unit tests
|
|
passing, but no Go-side \texttt{Benchmark} harness exercises it
|
|
under contention. Adding one (with synthetic read/write set
|
|
generator + version-conflict distribution) is roughly a day of work
|
|
and is queued for v0.3.0.
|
|
|
|
\item \textbf{DEX matching engine throughput.} The Lux DEX matching
|
|
engine lives at \texttt{$\sim$/work/lx/dex} (accessed in this tree
|
|
as the symlink \texttt{$\sim$/work/lux/dex}). It has no GPU surface
|
|
today; reporting "DEX on GPU" would require either porting the
|
|
match path to a compute kernel or measuring the existing CPU path
|
|
under realistic order-book load. Neither is in scope of this paper.
|
|
|
|
\item \textbf{End-to-end consensus + EVM + DEX + FHE pipeline.}
|
|
The Lux components ship as separate Go modules with no integrated
|
|
bench harness. Construction of one is a v0.3.0 deliverable (it
|
|
requires harmonizing goroutine schedules, shared bus, and KAT
|
|
gating across four runtimes that today don't share a process).
|
|
|
|
\item \textbf{precompile crypto package perf.} The 30+ packages in
|
|
\texttt{$\sim$/work/lux/precompile} (BLS / curves / hashes / VRF /
|
|
ZK / pairing-based) have their own scattered benchmark files. We
|
|
did not aggregate or measure them for this paper. The
|
|
\texttt{luxfi/math} substrate currently covers params + backend +
|
|
codec + modarith + NTT + poly + RNS + sample only — not curves,
|
|
not hashes, not pairings.
|
|
|
|
\item \textbf{WGSL on non-Apple silicon.} Our WGSL number is
|
|
wgpu-native dispatching to Metal under the hood on Darwin arm64.
|
|
On a Linux x86 host with Vulkan, or a D3D12 host on Windows, the
|
|
WGSL crossover may move. We did not measure those.
|
|
\end{itemize}
|
|
|
|
\subsection{Honest "one and only one way" status}
|
|
|
|
The architectural commitment from LP-107 is "one and only one way to
|
|
do everything." The math substrate now has that property for its 8
|
|
packages (params / backend / codec / modarith / NTT / poly / RNS /
|
|
sample) — every consumer (\texttt{luxfi/pulsar/wire},
|
|
\texttt{luxfi/lens/wire}, \texttt{luxfi/fhe/wire},
|
|
\texttt{luxfi/lattice/wire}) consumes the same canonical body, and
|
|
$991$ cross-runtime KATs gate any drift. The \texttt{luxfi/math}
|
|
\texttt{ntt/canonical/} body owns the Lattigo-derived Montgomery NTT;
|
|
\texttt{luxfi/lattice/ring/modular\_reduction.go} is a thin shim
|
|
over it.
|
|
|
|
The architectural commitment is NOT yet met for:
|
|
\begin{itemize}[nosep,leftmargin=2em]
|
|
\item \textbf{Curves.} Each precompile curve package
|
|
(BLS12-381, secp256k1, Ed25519, ...) has its own implementation. A
|
|
\texttt{luxfi/math/curve} substrate to consolidate them is queued.
|
|
\item \textbf{Hashes.} Each precompile hash (BLAKE3, Keccak, Poseidon)
|
|
has its own implementation. A \texttt{luxfi/math/hash} substrate is queued.
|
|
\item \textbf{ML-DSA / ML-KEM / SLH-DSA.} The pqcrypto packages live
|
|
in \texttt{$\sim$/work/lux/precompile/} with their own implementations.
|
|
Substrate consolidation queued.
|
|
\end{itemize}
|
|
|
|
These gaps are real. v0.1.x ships the substrate for the lattice/PQ
|
|
threshold path because that's the production hot path Lux currently
|
|
runs on; the curve / hash / pqcrypto consolidation is a v0.2.0+
|
|
deliverable.
|
|
|
|
\subsection{Reproduce}
|
|
|
|
\begin{lstlisting}[basicstyle=\small\ttfamily,frame=single,
|
|
xleftmargin=0pt, framesep=4pt]
|
|
# 1. NTT throughput sweep
|
|
cd ~/work/luxcpp/crypto
|
|
brew install wgpu-native # macOS -- provides libwgpu_native
|
|
cmake -B build -DCRYPTO_BUILD_TESTS=ON \
|
|
-DCRYPTO_ENABLE_METAL=ON -DCRYPTO_ENABLE_WGSL=ON
|
|
cmake --build build --target corona_lattice_ring_sweep_bench
|
|
cd build && \
|
|
CRYPTO_CORONA_LATTICE_RING_METALLIB=$PWD/lattice_ring.metallib \
|
|
./corona_lattice_ring_sweep_bench \
|
|
../corona/test/kat/montgomery_ntt.json
|
|
|
|
# 2. ZAP throughput
|
|
cd ~/work/lux/consensus
|
|
GOWORK=off go test -bench=BenchmarkZAPThroughput -benchtime=5s \
|
|
-run='^$' ./bench/
|
|
|
|
# 3. FHE bootstrap
|
|
cd ~/work/lux/fhe
|
|
GOWORK=off go test -bench=BenchmarkBootstrapSingle -benchtime=5s \
|
|
-run='^$' ./
|
|
|
|
# 4. Pulsar reshare
|
|
cd ~/work/lux/threshold
|
|
GOWORK=off go test -bench='BenchmarkPulsarReshare' -benchtime=1x \
|
|
-timeout=60m -run='^$' ./protocols/lss/...
|
|
\end{lstlisting}
|
|
|
|
Hardware: Apple M1 Max, macOS 14.5, clang 17, Go 1.26.1,
|
|
wgpu-native 29.0.0, CMake 4.3.2. The exact M1 Max numbers in
|
|
this paper come from a single warm-CPU run on 2026-05-04 evening
|
|
post-fuzz-battery; reruns on the same hardware land within $\pm 5\%$
|
|
on the per-poly measurements.
|