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