Files
papers/lux-bridge/sections/03-zk-light-client-protocol.tex
zeekay 9504b4c3ef papers: cover-consistency + build pass on Lux Tier-2/3 catalogue
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/.
2026-05-13 01:27:59 -07:00

52 lines
1.8 KiB
TeX

\section{ZK Light Client Protocol}
%% +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\subsection{Light Client Verification}
Traditional light clients verify block headers by checking:
\begin{equation}
\text{Valid}(H_i) = \text{VerifySig}(\sigma_i, H_i) \land \text{ValidChain}(H_{i-1}, H_i)
\end{equation}
\textbf{Challenge}: Verifying ECDSA signatures on-chain costs 200k+ gas per block.
\textbf{Our Solution}: ZK-SNARK proof of header validity:
\begin{equation}
\pi \leftarrow \text{Prove}\left(\{H_i\}_{i=1}^n, \{\sigma_i\}_{i=1}^n, \text{genesis}\right)
\end{equation}
Verifying $\pi$ costs only 50k gas regardless of $n$ (batch size).
\subsection{Proof Generation}
\begin{algorithm}[H]
\caption{ZK Light Client Proof Generation}
\begin{algorithmic}[1]
\State \textbf{Input:} Block headers $\{H_1, \ldots, H_n\}$, signatures $\{\sigma_1, \ldots, \sigma_n\}$
\State \textbf{Output:} ZK-SNARK proof $\pi$
\State
\State // Circuit constraints
\For{$i = 1$ to $n$}
\State Verify $\sigma_i$ is valid signature on $H_i$
\State Verify $H_i.\text{prevHash} = \text{Hash}(H_{i-1})$
\State Verify $H_i.\text{timestamp} > H_{i-1}.\text{timestamp}$
\State Verify $H_i.\text{height} = H_{i-1}.\text{height} + 1$
\EndFor
\State
\State // Public inputs: $(H_1.\text{hash}, H_n.\text{hash}, \text{genesis})$
\State $\pi \leftarrow \text{Groth16.Prove}(\text{circuit}, \text{witness})$
\State \textbf{return} $\pi$
\end{algorithmic}
\end{algorithm}
\textbf{Performance}:
\begin{itemize}[leftmargin=1.1em]
\item Proof size: 192 bytes (constant)
\item Prove time: 3.2s for 100 blocks
\item Verify time: 8ms on-chain
\item Gas cost: 48,000 (vs 20M for native verification)
\end{itemize}
%% +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++