Files
zeekay f4ee7a0525 Publish under the org, not a person
Bylines, paper authorship, correspondence addresses and the founder blurb under
each post named an individual. They name the organisation that published the
work instead: the brand on posts and pages, the research byline on papers, and
research@ in place of a personal address. Both are what these repositories
already used elsewhere — nothing new was coined.

Co-authors are untouched. Where a paper named someone else alongside, they stay
named; only the one byline changed. Bibliography entries, running heads,
PDF metadata and affiliations move with it, so a citation still resolves to
whoever the cited paper names.

Sample and fixture data uses the placeholder name these tests already use
elsewhere, so no assertion changed meaning.
2026-09-01 08:58:10 -07:00

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{
Lux Research\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}