mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
40 lines
6.3 KiB
TeX
40 lines
6.3 KiB
TeX
%% ====================================================================
|
|
\section{Introduction}
|
|
\label{sec:introduction}
|
|
%% ====================================================================
|
|
|
|
Lux is not merely adding post-quantum signatures to a chain; it defines a hybrid finality architecture for DAG-native consensus, with protocol-agnostic threshold lifecycle, post-quantum threshold sealing, and cross-chain propagation of Horizon finality.
|
|
|
|
This paper specifies the cross-chain leg of that thesis. Warp 2.0 evolves the Lux cross-chain messaging protocol (LP-021 \cite{lp021}, \texttt{github.com/luxfi/warp} \cite{warpgo}) to carry source-chain Horizon finality across chain boundaries via a Pulsar Pulse over a canonical envelope transcript. The receiving chain's verifier runs Prism over the source chain's transcript, producing a destination-side Horizon-final acceptance whose PQ root of trust resolves to the source's Pulsar GroupKey, not to a bridge or an oracle.
|
|
|
|
\subsection{Why Warp 2.0}
|
|
|
|
Warp 1.x is shipping (LP-021, LP-075 \cite{lp021,lp075}). It signs cross-chain messages with a BLS aggregate over the source chain's validator-key registry. The classical-only design has three structural shortcomings:
|
|
|
|
\begin{enumerate}[leftmargin=2em,nosep]
|
|
\item \textbf{No post-quantum guarantee.} A quantum adversary that breaks BLS in polynomial time can forge a Warp 1.x envelope from any source chain to any destination, with no fallback PQ check. The destination has no cryptographic basis to discriminate honest from forged Warp 1.x bytes.
|
|
\item \textbf{No source-finality binding.} A Warp 1.x envelope binds a source chain id, a payload, and a $\geq 2/3$-weight BLS aggregate. It does not bind \emph{when} on the source the message was finalized: the same source-chain validator set could sign multiple conflicting payloads, and Warp 1.x has no transcript field that anchors the message to a specific source-chain $\mathsf{NebulaRoot}$.
|
|
\item \textbf{No source-key-era lineage.} A Warp 1.x envelope does not carry the source's $\mathsf{KeyEraID}$ / $\mathsf{Generation}$ tuple. A destination that wants to verify against the source's current key state has to reconcile the envelope's BLS aggregate against a registry view that may have shifted post-signing.
|
|
\end{enumerate}
|
|
|
|
Warp 2.0 fixes all three. The shape is direct: take the source-chain Horizon certificate (Beam + ML-DSA + Pulse, all bound to the source's $\mathsf{NebulaRoot}$ via the canonical \texttt{QuasarTranscript}); embed it in a cross-chain envelope; bind the envelope's signed $\mathsf{Message}$ to a single canonical digest $D$, which each lane signs under its own \texttt{LUX-WARP-ZAP-*} domain-separation tag; have the destination verifier run Prism over the source-chain transcript using the source-chain key registry. The result: a cross-chain envelope that, if Prism-accepted, is post-quantum-sound under the same composition theorem (Theorem~\ref{thm:warp-v2-soundness}, Section~\ref{sec:soundness}) as its consensus cousin.
|
|
|
|
\subsection{Forward-only migration}
|
|
|
|
Warp 1.x and Warp 2.0 share the wire space. The discipline is forward-only:
|
|
\begin{itemize}[leftmargin=2em,nosep]
|
|
\item A Warp 2.0 envelope begins with the 5-byte ZAP magic \texttt{"LWZP"}$\,\|\,$\texttt{0x01} followed by the kind byte \texttt{0x02}. A legacy Warp 1.x RLP decoder fed these bytes rejects: the leading \texttt{'L'} (\texttt{0x4c}) is below RLP's list-prefix floor (\texttt{0xc0}--\texttt{0xff}), so it is not a valid RLP list. This is the correct refusal: a legacy verifier cannot validate the ZAP transcript binding, so it must not act on the bytes.
|
|
\item A Warp 2.0 receiver parses ZAP bytes with one parser, \texttt{ParseEnvelope} (magic, kind, then $\mathsf{Message}$, Beam, and the two PQ lanes). There is no in-band cross-version dispatcher: legacy RLP bytes are rejected at the magic check, never lifted. A locally-originated message with no Pulsar lineage is simply a $\mathsf{Message}$ with zero lineage fields and the two PQ lanes carried as empty \texttt{u32(0)} frames --- Beam-only semantics without a separate envelope version.
|
|
\item Senders that must reach legacy v1-only verifiers emit legacy v1 bytes on the legacy channel; the ZAP channel is independent. The ZAP Beam signs \texttt{LUX-WARP-ZAP-BEAM-v1}$\,\|\,D$ over the full $\mathsf{Message}$ (lineage included), so it is \emph{not} bit-equal to a legacy v1 BLS aggregate over the old unsigned body --- the two channels are cryptographically as well as syntactically distinct.
|
|
\end{itemize}
|
|
|
|
There is no v1 $\leftrightarrow$ v2 negotiation. There is no protocol downgrade. There is no v3 reserved that ``maybe re-encrypts the wire.'' The only forward step from Warp 2.0 is Warp Private (FHE-encrypted payload, optionally Pulse-signed), which is orthogonal to v2 (Section~\ref{sec:warp-private}).
|
|
|
|
\subsection{What this paper specifies}
|
|
|
|
Section~\ref{sec:warp-evolution} traces the Warp version history (1.x $\to$ 1.5 hybrid $\to$ 2.0 Pulse-backed $\to$ Warp Private). Section~\ref{sec:envelope-format} gives the canonical wire format and cites the transcript-binding definition. Section~\ref{sec:cross-chain-binding} specifies the cross-chain binding fields ($\mathsf{sourceNebulaRoot}$, $\mathsf{sourceKeyEraID}$, $\mathsf{sourceGeneration}$) and the L1/L2/L3 transitive inheritance. Section~\ref{sec:soundness} states the cross-chain soundness theorem and its connection to Quasar Horizon. Section~\ref{sec:fuzz-vuln} documents the lattigo $\mathsf{ReadUint64Slice}$ DoS that the fuzz harness surfaced and that is fixed in production. Section~\ref{sec:warp-implementation} cites the running Go canonical (\texttt{warp/codec.go}, \texttt{warp/zap.go}, \texttt{warp/envelope.go}, \texttt{warp/pulsar/pulsar.go}) and the wire-format / lane-verification tests. Section~\ref{sec:warp-related-work} compares to CCIP, Wormhole, IBC, and LayerZero, with emphasis on the Pulse-backed PQ source finality angle.
|
|
|
|
\subsection{What this paper does not do}
|
|
|
|
We do not specify the source-chain Horizon construction (that is \cite{luxquasarhorizon}). We do not specify Pulsar (that is LP-073 \cite{lp073,luxpulsar}) or LSS (that is \cite{luxlssmpc,lp077}). Where the underlying threshold mathematics is needed, we cite the canonical proof-bucket files (\texttt{proofs/quasar/warp-pq-soundness.tex}, \texttt{proofs/pulsar/unforgeability.tex}, \texttt{proofs/definitions/transcript-binding.tex}). We do not duplicate proof bodies; we cite them.
|