mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
Add explicit, literature-backed comparison scaffolds to: - lux-pq-consensus-benchmarks (sec 09): vs Mysticeti-C, HotStuff/-2, Tendermint, Snowman - lux-quasar-benchmarks (sec 15): vs Mysticeti-C, HotStuff-2, CometBFT, Snowman, TowerBFT - lux-fhe-benchmarks (sec 12): vs TFHE-rs, Concrete, OpenFHE, Microsoft SEAL - lux-zap-benchmarks (sec 14): vs Protobuf, FlatBuffers, Cap'n Proto, gRPC, QUIC, JSON-RPC - evmgpu-benchmark (sec 13): vs geth, reth, erigon, evmone, Block-STM, pevm Lux/competitor columns explicitly marked [TBD-measure] where not yet benchmarked against the competitor's own published harness. Every competitor cell is sourced to a cited paper, repo benchmark, or vendor doc. Each scaffold ends with a Reproducibility spec (hardware, software pins, commands, decision rule) for the actual controlled run. No invented Lux numbers; existing internal numbers retained but flagged as not-yet-apples-to-apples vs literature.
123 lines
6.4 KiB
TeX
123 lines
6.4 KiB
TeX
\section{Named-Competitor Comparison Scaffold}
|
|
\label{sec:evmgpu-named-comp}
|
|
%% ============================================================================
|
|
|
|
This section pins the EVM acceleration claim to specific competitors with
|
|
their published numbers. Lux columns are \texttt{[TBD-measure]} except
|
|
where this paper has already measured the value (those cells cite the
|
|
relevant internal section).
|
|
|
|
\subsection{Competitors and Why}
|
|
|
|
\begin{itemize}
|
|
\item \textbf{geth} (\texttt{go-ethereum})~\cite{gethgithub} ---
|
|
Ethereum mainnet reference client; the baseline every other
|
|
execution layer is measured against.
|
|
\item \textbf{reth} (Paradigm)~\cite{rethgithub,paradigmreth2024} ---
|
|
Rust execution client. Paradigm's published target is 1\,Ggas/s;
|
|
their April 2024 post reports 100--200\,Mgas/s live sync and
|
|
a 690\,Mgas/s historical-sync run on opBNB.
|
|
\item \textbf{erigon} (\texttt{erigontech/erigon})~\cite{erigongithub}
|
|
--- Go execution client with staged sync; widely reported as
|
|
4$\times$ faster than geth on historical sync~\cite{chainstackgetherigon}.
|
|
\item \textbf{evmone} (\texttt{ipsilon/evmone})~\cite{evmonegithub} ---
|
|
C++ interpreter; baseline for ``how fast can the interpreter
|
|
alone go'' (already measured in this paper).
|
|
\item \textbf{pevm} / Block-STM (Aptos, Risechain)~\cite{blockstmppopp,pevmrise}
|
|
--- parallel-EVM baselines. Block-STM publishes up to 170k
|
|
TPS / 32-thread; pevm reports similar magnitudes on EVM.
|
|
\end{itemize}
|
|
|
|
\subsection{Throughput Scaffold}
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{@{}lllrl@{}}
|
|
\toprule
|
|
\textbf{Client} & \textbf{Backend} & \textbf{Workload} & \textbf{Throughput} & \textbf{Source} \\
|
|
\midrule
|
|
\textbf{Lux GPU EVM kernel} & Metal (M1 Max) & opcode mix & 85.9\,M ops/s & Tab.~\ref{tab:peak} \\
|
|
\textbf{Lux C++ evmone+state} & CPU & full block & 20.9\,Ggas/s & Tab.~\ref{tab:cpp_vs_go} \\
|
|
\textbf{Lux Go EVM (baseline)} & CPU & full block & 4.2--5.4\,Ggas/s & Tab.~\ref{tab:cpp_vs_go} \\
|
|
\textbf{Lux + parallel ecrecover} & 10-core CPU & block w/ sigs & 7.1$\times$ over 1-core & Tab.~\ref{tab:ecrecover} \\
|
|
\midrule
|
|
geth (latest) & CPU & live mainnet sync & $\sim$25--50\,Mgas/s (typ.) & \cite{gethgithub,paradigmreth2024} \\
|
|
reth (Paradigm) & CPU & live mainnet sync & 100--200\,Mgas/s & \cite{paradigmreth2024} \\
|
|
reth (Paradigm) & CPU & historical opBNB sync & 690\,Mgas/s & \cite{paradigmreth2024} \\
|
|
erigon & CPU & full sync vs.\ geth & 4$\times$ geth & \cite{chainstackgetherigon} \\
|
|
evmone (C++ interp.) & CPU & interp.-only & $\sim$416\,Ggas/s & this paper, Tab.~\ref{tab:cpp_vs_go} \\
|
|
Block-STM (Aptos) & 32-thread CPU & Aptos workload & up to 170k TPS & \cite{blockstmppopp} \\
|
|
Block-STM (Diem) & 32-thread CPU & Diem workload & up to 110k TPS & \cite{blockstmppopp} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{EVM/execution throughput comparison scaffold. Lux rows are
|
|
already measured (this paper); the comparison is against the cited
|
|
upstream-published numbers. The units differ deliberately (TPS vs.\ Mgas/s
|
|
vs.\ opcodes/s) --- the Reproducibility spec below unifies them.}
|
|
\label{tab:evmgpu-comparison}
|
|
\end{table}
|
|
|
|
\subsection{Crypto Bottleneck Comparison}
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{@{}lrrl@{}}
|
|
\toprule
|
|
\textbf{Operation} & \textbf{Lux (this paper)} & \textbf{Baseline} & \textbf{Source} \\
|
|
\midrule
|
|
\texttt{ecrecover} (single) & \texttt{[TBD-measure]} & $\sim$60--100\,\textmu s (\texttt{secp256k1}) & \cite{secp256k1lib} \\
|
|
\texttt{ecrecover} parallel & 7.1$\times$ on 10 cores & linear scaling (lib-limited) & Tab.~\ref{tab:ecrecover} \\
|
|
\texttt{ecrecover} GPU (Metal) & 20--24$\times$ vs.\ CPU (Lux memory) & none published & \texttt{[TBD-baseline]} \\
|
|
BLS12-381 aggregate verify & \texttt{[TBD-measure]} & blst 1.0--1.5\,ms (n$\sim$128) & \cite{supranationalblstevm} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Crypto-operation comparison. \texttt{ecrecover} dominates 87\%
|
|
of Go EVM block-processing time (Sec.~5, Tab.~\ref{tab:profile}), so this
|
|
is the highest-leverage row to populate.}
|
|
\label{tab:evmgpu-crypto}
|
|
\end{table}
|
|
|
|
\subsection{Reproducibility Specification}
|
|
\label{sec:evmgpu-repro}
|
|
|
|
To turn the unit-normalised entries in Table~\ref{tab:evmgpu-comparison}
|
|
into apples-to-apples cells, all five backends must be re-run on the
|
|
same machine against the same trace.
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Hardware.} (1) Apple M1 Max 64\,GiB (matches this paper's
|
|
existing measurements); (2) AWS \texttt{c7i.16xlarge} (Intel
|
|
Sapphire Rapids, 64 vCPU); (3) AWS \texttt{p4d.24xlarge} (8$\times$A100)
|
|
for the GPU path.
|
|
\item \textbf{Workload.} Replay mainnet blocks 17{,}000{,}000 --
|
|
17{,}010{,}000 (10k blocks, $\sim$30\,M gas avg, $\sim$160\,M
|
|
tx-sigs total). This is the same range Paradigm used in
|
|
\cite{paradigmreth2024}.
|
|
\item \textbf{Builds.} \texttt{ethereum/go-ethereum@latest};
|
|
\texttt{paradigmxyz/reth@latest}; \texttt{erigontech/erigon@latest};
|
|
\texttt{ipsilon/evmone@latest}; \texttt{risechain/pevm@latest}.
|
|
\item \textbf{Metric normalisation.} Report Mgas/s for every backend;
|
|
TPS only as a secondary metric (since gas-per-tx varies). Walltime
|
|
of full replay; CPU\%/thread; peak RSS; disk read GB.
|
|
\item \textbf{Commands.}
|
|
\begin{verbatim}
|
|
# reth (sync from snapshot to block 17_010_000)
|
|
reth import --chain mainnet ./mainnet-17M.rlp
|
|
# geth (import RLP)
|
|
geth import ./mainnet-17M.rlp
|
|
# erigon (stage sync to specific block)
|
|
erigon --chain mainnet --datadir ./erigon-data
|
|
# Lux (this paper)
|
|
bench-evmgpu --replay ./mainnet-17M.rlp --backend gpu
|
|
\end{verbatim}
|
|
\item \textbf{Decision rule.} Lux GPU EVM wins only if Mgas/s on the
|
|
Apple M1 Max GPU path \emph{exceeds reth on a comparable-class
|
|
CPU machine}, measured on the same RLP range. The current
|
|
4.85$\times$ headline is opcodes/s, not gas/s --- the
|
|
gas/s number on the same trace is the falsifiable claim.
|
|
\end{itemize}
|
|
|
|
%% ============================================================================
|