mirror of
https://github.com/lux-apps/papers.git
synced 2026-11-03 05:07:46 +00:00
- Pulsar-M qualifier retired (Pulsar is the Module-LWE family; LP-180 rename af3d669). Pulsar-M-65/-87 -> Pulsar-65/-87; sec rename 07-pulsar-m -> 07-pulsar. - Dead repos luxfi/[email protected], luxfi/pulsar-mptc (both 404) -> luxfi/pulsar. - subnet -> chain/L1, Subnet-EVM -> Lux EVM, subnet VM -> L1 VM. - PULSAR-MAC-v1 and other domain-sep constants left intact (lookahead-protected).
150 lines
6.1 KiB
TeX
150 lines
6.1 KiB
TeX
\documentclass[11pt,a4paper]{article}
|
|
\usepackage{../shared/luxcover}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage{amsmath,amssymb,amsfonts,amsthm}
|
|
\usepackage{graphicx}
|
|
\usepackage{hyperref}
|
|
\usepackage{booktabs}
|
|
\usepackage{algorithm}
|
|
\usepackage{algpseudocode}
|
|
\usepackage{listings}
|
|
\usepackage{xcolor}
|
|
\usepackage{tikz}
|
|
\usepackage{float}
|
|
\usepackage{enumitem}
|
|
\usepackage{array}
|
|
\usepackage{multirow}
|
|
\usepackage{tabularx}
|
|
\input{../shared/lstlang}
|
|
\usetikzlibrary{arrows.meta,positioning,shapes.geometric,fit,calc}
|
|
|
|
\hypersetup{colorlinks=true,linkcolor=black,citecolor=blue,urlcolor=blue}
|
|
|
|
\lstset{
|
|
basicstyle=\ttfamily\scriptsize,
|
|
breaklines=true,
|
|
frame=single,
|
|
numbers=left,
|
|
numberstyle=\tiny\color{gray},
|
|
keywordstyle=\color{blue!70!black}\bfseries,
|
|
commentstyle=\color{green!50!black}\itshape,
|
|
stringstyle=\color{red!60!black},
|
|
showstringspaces=false,
|
|
}
|
|
|
|
\newtheorem{theorem}{Theorem}
|
|
\newtheorem{lemma}[theorem]{Lemma}
|
|
\newtheorem{definition}{Definition}
|
|
\newtheorem{proposition}[theorem]{Proposition}
|
|
\newtheorem{remark}{Remark}
|
|
|
|
\title{LUX\_STRICT\_E2E\_PQ:\\
|
|
End-to-End Post-Quantum Architecture\\
|
|
for the Lux Network}
|
|
|
|
\author{
|
|
Zach Kelling\thanks{Corresponding author: \texttt{[email protected]}}\\
|
|
\textit{Lux Industries, Inc.}\\
|
|
\texttt{[email protected]}
|
|
}
|
|
|
|
\date{2026}
|
|
|
|
\begin{document}
|
|
|
|
\luxcoverpage
|
|
|
|
\begin{abstract}
|
|
Most ``post-quantum blockchain'' work today PQ-hardens \emph{consensus} only: a
|
|
threshold signature over block headers replaces BLS, and the rest of the stack
|
|
(transaction authorisation, contract permits, peer handshakes, bridge admission,
|
|
randomness, finality binding, contract auth profiles) continues to use ECDSA,
|
|
Keccak, BN254 pairings, and KZG trusted setups. A Shor-capable adversary
|
|
defeats this stack at every layer the threshold signature does not touch.
|
|
|
|
This paper specifies LUX\_STRICT\_E2E\_PQ, the locked profile under which
|
|
\emph{every} byte that gates a state transition on Lux is bound to a FIPS-203 /
|
|
FIPS-204 / FIPS-205 primitive or a SHA3-family transcript. The profile is a
|
|
single \texttt{ChainSecurityProfile} (\texttt{luxfi/[email protected]},
|
|
\texttt{config/security\_profile.go:244}) with eleven enum-or-flag fields, all
|
|
of which are zero-value-invalid; the profile carries a SHA3-384 digest of every
|
|
other field (\texttt{ComputeHash}, \texttt{security\_profile.go:835}) and that
|
|
digest is pinned in genesis. Booting on a chain whose profile does not match
|
|
the pinned digest fails closed --- there is no permissive default.
|
|
|
|
We specify the fourteen surfaces the profile covers. On signed-transaction
|
|
authorisation: a 17-field \texttt{TxAuthEnvelope}
|
|
(\texttt{protocol/auth/tx\_envelope.go:108}) whose signing digest is
|
|
TupleHash256-bound under customization \texttt{LUX\_TX\_AUTH\_V1}, replacing
|
|
RLP-keccak for raw transactions. On smart-contract permits: an 11-field
|
|
\texttt{PQPermit} (\texttt{protocol/auth/permit.go:70}) under
|
|
\texttt{LUX\_PQ\_PERMIT\_V1}, replacing EIP-2612. On the Z-Chain identity
|
|
rollup: five operations (\texttt{Register} / \texttt{Rotate} / \texttt{Revoke} /
|
|
\texttt{AuthorizeSession} / \texttt{CommitTxAuthBatch} /
|
|
\texttt{CommitPermitBatch}) over a seven-root \texttt{ZRegistryRoots}
|
|
aggregator. On finality: a 23-axis Q-Chain \texttt{ComputeRoundDigest} binding
|
|
consumed by Pulsar, the Module-LWE threshold scheme that replaces BLS in the
|
|
finality lane (\texttt{luxfi/pulsar}). On proofs: the p3q STARK / FRI
|
|
stack over SHA3 with no KZG, no BN254, and no Groth16 wrappers
|
|
(\texttt{luxfi/[email protected]}, ten crates). On the P2P layer: an ML-KEM-768 /
|
|
ML-KEM-1024 + ML-DSA-65 handshake with five cSHAKE customizations
|
|
(\texttt{luxfi/node@dc906d281b}). On bridges: a refused-primitives
|
|
\texttt{BridgeProfile}. On contract auth: a per-contract auth profile resolved
|
|
through the \texttt{PQAuth} precompile at \texttt{0x012202}.
|
|
|
|
We close with a golden vector. Under the locked LUX\_STRICT\_E2E\_PQ profile,
|
|
\texttt{ChainSecurityProfile.ComputeHash} returns
|
|
\[
|
|
\texttt{93efd103\ldots323bfcd0}.
|
|
\]
|
|
This 48-byte digest is the entire E2E security claim, byte-equal, end to end,
|
|
across every Lux node that boots the genesis under this profile. A
|
|
divergent node sees a different digest and refuses to start.
|
|
|
|
\textbf{Honest claim.} The crypto primitives in this paper --- ML-DSA-65,
|
|
ML-KEM-768, cSHAKE256, TupleHash256, FRI, Pulsar --- are not new. What is new
|
|
is the \emph{composition}: a single locked profile that pins every surface a
|
|
classical or post-quantum adversary could touch, with a single 48-byte digest
|
|
binding the entire system together. The paper specifies the surface coverage
|
|
at a level of detail sufficient to reproduce every signing transcript and
|
|
every wire envelope byte-for-byte from \texttt{luxfi/consensus},
|
|
\texttt{luxfi/crypto}, \texttt{luxfi/pulsar}, \texttt{luxfi/p3q}, and
|
|
\texttt{luxfi/node} canonicals.
|
|
|
|
The canonical claims/evidence table and the architectural commitments live in
|
|
LP-105 (Lux Stack Lexicon) and HIP-0078 (Z-Chain registry); other Lux
|
|
documents reference them by section, never duplicate them.
|
|
\end{abstract}
|
|
|
|
\tableofcontents
|
|
\newpage
|
|
|
|
\input{sections/01-intro}
|
|
\input{sections/02-profile}
|
|
\input{sections/03-tx-auth-envelope}
|
|
\input{sections/04-pq-permit}
|
|
\input{sections/05-zchain-rollup}
|
|
\input{sections/06-qchain-finality}
|
|
\input{sections/07-pulsar}
|
|
\input{sections/08-p3q}
|
|
\input{sections/09-p2p-pq}
|
|
\input{sections/10-cpx-coverage}
|
|
\input{sections/11-bridge-pq}
|
|
\input{sections/12-evaluation}
|
|
\input{sections/13-security-considerations}
|
|
\input{sections/14-related-work}
|
|
|
|
\bibliographystyle{plain}
|
|
\bibliography{sections/15-references}
|
|
|
|
\appendix
|
|
\section*{Reproducibility}
|
|
\textbf{Source code.} \texttt{github.com/luxfi/p3q} (commit \texttt{TBD}); proofs at \texttt{github.com/luxfi/proofs/tree/main/strict-e2e-pq}; LP catalogue at \texttt{github.com/luxfi/lps}.\\
|
|
\textbf{Build.} \texttt{go build ./...} for the P3Q reference; \texttt{latexmk -pdf} for proofs.\\
|
|
\textbf{Hardware tested.} TBD (commodity x86\_64 Linux; AVX2 optional).\\
|
|
\textbf{Standards referenced.} FIPS 202 (SHA-3/SHAKE), FIPS 203 (ML-KEM), FIPS 204 (ML-DSA), FIPS 205 (SLH-DSA), NIST SP 800-56C (KDF).\\
|
|
\textbf{Contact.} [email protected].
|
|
|
|
\end{document}
|