mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
Quasar Horizon (consensus composition over Pulsar / ML-DSA / BLS lanes
under Prism + LSS lifecycle), Warp 2.0 (Pulse-backed cross-chain envelope
with forward-only v1->v2 migration and lattigo ReadUint64Slice DoS fix),
benchmark report (microbench, reshare, activation, Warp 2.0 verify, Prism
composition, GPU headroom, cross-WAN latency), and NIST IR 8214C-style
submission package (spec, parameter sets, domain separation, serialization,
reference-impl pointers, evaluation report, security analysis, side-channel
considerations).
All four deliverables compile cleanly via pdflatex+bibtex and reference
the canonical proof bucket files at proofs/{definitions,pulsar,lss,quasar}.
No duplication of proof bodies; cite by file path.
162 lines
6.9 KiB
TeX
162 lines
6.9 KiB
TeX
\section{Discussion}
|
|
|
|
|
|
\subsection{When to Use GPU EVM}
|
|
|
|
The crossover analysis (Table~\ref{tab:crossover}) provides a clear decision rule:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Below 500 ops/tx}: CPU wins. Simple transfers and token operations
|
|
do not generate enough parallel work to amortize GPU launch overhead.
|
|
\item \textbf{500--2{,}000 ops/tx}: Marginal GPU advantage (1.0--2.08$\times$).
|
|
Worth offloading only if the GPU is not otherwise occupied.
|
|
\item \textbf{Above 2{,}000 ops/tx}: Clear GPU advantage. Uniswap swaps ($\sim$3{,}000 ops),
|
|
complex DeFi ($>$5{,}000 ops), and ZK verification ($>$10{,}000 ops) all benefit.
|
|
\item \textbf{Peak}: 50k transactions $\times$ 5k opcodes each: 4.85$\times$.
|
|
\end{itemize}
|
|
|
|
\subsection{The Optimization Priority Stack}
|
|
|
|
Based on measured data, the priority order for EVM acceleration is:
|
|
|
|
\begin{enumerate}
|
|
\item \textbf{Parallel ecrecover} (7.1$\times$ on 87\% of time = 3.76$\times$ overall).
|
|
Implemented. Deployed.
|
|
\item \textbf{C++ interpreter} (5.1$\times$ on 13\% of time = 1.12$\times$ overall).
|
|
Implemented. The marginal gain is small because EVM execution is not the bottleneck.
|
|
\item \textbf{GPU opcodes} (4.85$\times$ on complex contracts). Highest impact on
|
|
computation-heavy workloads where per-transaction opcode count exceeds 2{,}000.
|
|
\item \textbf{Block-STM} (6.4$\times$ on 10 threads for independent transactions).
|
|
Orthogonal to the above; parallelizes across transactions rather than within them.
|
|
\end{enumerate}
|
|
|
|
\subsection{Memory Budget}
|
|
|
|
GPU memory is the practical scaling constraint. At 73\,KB per transaction plus 5\,GB
|
|
persistent state, the memory budget determines maximum block size:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{32\,GB system}: $(32 - 5) / 0.073 \approx 370{,}000$ tx/block
|
|
\item \textbf{64\,GB system}: $(64 - 5) / 0.073 \approx 800{,}000$ tx/block
|
|
\item \textbf{128\,GB (M4 Ultra)}: $(128 - 5) / 0.073 \approx 1{,}685{,}000$ tx/block
|
|
\end{itemize}
|
|
|
|
\subsection{Comparison to External Systems}
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lrrl}
|
|
\toprule
|
|
\textbf{System} & \textbf{Throughput} & \textbf{Notes} \\
|
|
\midrule
|
|
Ethereum mainnet & $\sim$30\,Mgas/s & Sequential geth \\
|
|
Go EVM (Lux, sequential) & 534--1{,}038\,Mgas/s & Measured (this paper) \\
|
|
C++ evmone++ (Lux) & 20.9\,Ggas/s & EVM-only, measured \\
|
|
Go EVM + parallel sig & $\sim$2{,}150\,Mgas/s & Measured (this paper) \\
|
|
Block-STM 10-thread & 3{,}390\,Mgas/s & Measured (this paper) \\
|
|
GPU EVM (50k$\times$5k) & 85.9\,M ops/s & Measured (this paper) \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Throughput comparison. Ethereum mainnet number is the effective gas
|
|
rate under consensus ($\sim$30M gas per 12s block). Lux numbers are execution-only,
|
|
measured without consensus overhead.}
|
|
\label{tab:comparison}
|
|
\end{table}
|
|
|
|
\subsection{Go EVM Workload Benchmarks at 1\,B Gas Blocks}
|
|
|
|
With 47K transactions per block ($\sim$1\,B gas at 21{,}000 gas/tx), the Go EVM
|
|
produces detailed per-workload timing that separates EVM execution from signature
|
|
recovery:
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lrrrr}
|
|
\toprule
|
|
\textbf{Workload} & \textbf{EVM (ms)} & \textbf{Sig (ms)} & \textbf{Total (ms)} & \textbf{EVM-only (Mgas/s)} \\
|
|
\midrule
|
|
ETH Transfer & 241 & 1{,}613 & 1{,}854 & \num{4148} \\
|
|
ERC-20 Transfer & 326 & 1{,}614 & 1{,}940 & \num{4537} \\
|
|
Storage Write & 384 & 1{,}623 & 2{,}007 & \num{5970} \\
|
|
Uniswap Swap & 368 & 1{,}624 & 1{,}992 & \num{4669} \\
|
|
Mixed DeFi & 312 & 1{,}622 & 1{,}934 & \num{4723} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Go EVM workload benchmarks at 47K txs/block (1\,B gas). Signature recovery
|
|
(\SI{1613}{ms}) is constant across workloads---it dominates total time at 82--87\%.
|
|
EVM-only throughput ranges from \SI{4148}{Mgas/s} (ETH Transfer) to \SI{5970}{Mgas/s}
|
|
(Storage Write). All measurements on Apple M1 Max.}
|
|
\label{tab:workload}
|
|
\end{table}
|
|
|
|
The signature bottleneck is stark: \SI{1613}{ms} of ecrecover is constant regardless of
|
|
workload complexity, confirming that GPU batch ecrecover is the highest-leverage
|
|
optimization at production block sizes.
|
|
|
|
\subsection{Consensus Pipeline Benchmarks}
|
|
|
|
With pipelined consensus (building block $N{+}1$ while block $N$ finalizes), the
|
|
consensus layer is no longer the throughput bottleneck:
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lrrr}
|
|
\toprule
|
|
\textbf{Configuration} & \textbf{Blocks/sec} & \textbf{Txs/block} & \textbf{Theoretical TPS} \\
|
|
\midrule
|
|
SoloGPU ($K{=}1$) & \num{107000} & 47K & \num{5100000000} \\
|
|
BurstParams & \num{78000} & 100K & \num{7800000000} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Consensus pipeline throughput on Apple M1 Max. SoloGPU uses $K{=}1$
|
|
(single validator, no network RTT), 1\,ms block time, 1\,B gas limit.
|
|
BurstParams uses 100K txs/block with 2.1\,B gas limit. These are consensus-layer
|
|
measurements---execution is excluded. Theoretical TPS = blocks/sec $\times$ txs/block.}
|
|
\label{tab:consensus_pipeline}
|
|
\end{table}
|
|
|
|
\textbf{Key finding}: Consensus is no longer the bottleneck. At \num{107000} blocks/sec
|
|
(SoloGPU) and \num{78000} blocks/sec (BurstParams), the consensus layer vastly outpaces
|
|
EVM execution. The bottleneck has shifted entirely to execution and signature recovery.
|
|
|
|
\subsection{Throughput at 1\,B Gas Block Limit}
|
|
|
|
Lux Network operates with a \num{1000000000} (1\,B) gas block limit---33$\times$ Ethereum's
|
|
30\,M limit. At 21{,}000 gas per simple transfer, this yields $\sim$47{,}619 transactions
|
|
per block. The following table projects execution throughput at this block size.
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lrrr}
|
|
\toprule
|
|
\textbf{Execution Engine} & \textbf{Time/1B-gas block} & \textbf{Exec TPS$^*$} & \textbf{Notes} \\
|
|
\midrule
|
|
C++ evmone++ (1 core) & 47.8\,ms & \num{952000} & $1\text{B} / 20.9\,\text{Ggas/s}$ \\
|
|
GPU EVM (Metal, 32-core) & $\sim$10\,ms & $\sim$\num{47600000} & Projected from 2.3\,Gops/s \\
|
|
Block-STM (10 threads) & 295\,ms & \num{161000} & $1\text{B} / 3.39\,\text{Ggas/s}$ \\
|
|
Go EVM (sequential) & 1{,}852\,ms & \num{25700} & $1\text{B} / 0.54\,\text{Ggas/s}$ \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Execution throughput projected to Lux's 1\,B gas block limit.
|
|
$^*$Execution-only TPS assuming 21{,}000 gas/tx and no consensus overhead.
|
|
C++ evmone++ processes a full 1\,B-gas block in under 50\,ms, enabling
|
|
sub-100\,ms block times. GPU EVM projection assumes linear scaling from
|
|
measured 2.3\,Gops/s kernel throughput.}
|
|
\label{tab:1b-gas}
|
|
\end{table}
|
|
|
|
With BLS consensus aggregate verify at $16.51\times$ at $n{=}1024$
|
|
on the same-message hot path (cevm v0.47.1, pubkey-decompression cache
|
|
on top of v0.45 batching) and pipelined block execution, the
|
|
theoretical throughput ceiling is:
|
|
\begin{equation}
|
|
\text{TPS}_{\text{ceiling}} = \frac{47{,}619\text{ txs/block}}{10\,\text{ms}} = \num{4761904}\text{ TPS (with finality)}
|
|
\end{equation}
|
|
With 1\,ms InfiniBand interconnect replacing WAN latency, the theoretical
|
|
maximum reaches $\sim$\num{47619047} TPS.
|
|
|