mirror of
https://github.com/lux-apps/papers.git
synced 2026-11-03 05:07:46 +00:00
A July commit removed eight papers on the premise "no license — DEX/non-custodial only". That premise is wrong: Lux operates an ATS, a broker-dealer, a transfer agent and a bank, and this material is resold at lux.financial. The merge that brought main in preserved the removal because the commit stated a reason, which is how a stale reason outlives the fact it rested on. Back, at the versions main carried — main never received the removal, so its copies are the later ones: the ATS architecture, the security-token standard, smart order routing, institutional custody, MPC custody, post-quantum securities, the SSB partnership and the CoinBridge brief. 83 files. Co-authored-by: Hanzo Dev <[email protected]>
83 lines
3.1 KiB
TeX
83 lines
3.1 KiB
TeX
\section{2-of-3 Wallet Architecture}
|
|
|
|
\label{sec:wallet}
|
|
%% =====================================================================
|
|
|
|
Each user's wallet uses a $2$-of-$3$ threshold with the following share
|
|
distribution:
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\begin{tabular}{clp{7.5cm}}
|
|
\toprule
|
|
\textbf{Share} & \textbf{Holder} & \textbf{Role} \\
|
|
\midrule
|
|
$\mathbf{s}_1$ & User device & Stored in device secure enclave
|
|
(iOS Keychain / Android Keystore) \\
|
|
$\mathbf{s}_2$ & ATS operator & Auto-co-signs after pre-trade compliance
|
|
(KYC, AML, sanctions, offering checks) \\
|
|
$\mathbf{s}_3$ & Cold backup & Encrypted to user passphrase, stored in
|
|
Shamir backup (S3 + user's custody) \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{2-of-3 share distribution for user wallets.}
|
|
\label{tab:shares}
|
|
\end{table}
|
|
|
|
\begin{theorem}[Non-Custodial Guarantee]
|
|
\label{thm:non-custodial}
|
|
No single party can produce a valid signature. Specifically:
|
|
\begin{enumerate}[nosep]
|
|
\item The ATS operator alone cannot move user assets (holds only
|
|
$\mathbf{s}_2$; needs $\mathbf{s}_1$ or $\mathbf{s}_3$).
|
|
\item The user alone cannot bypass compliance (holds only
|
|
$\mathbf{s}_1$; needs $\mathbf{s}_2$ or $\mathbf{s}_3$).
|
|
\item A compromised backup alone is useless (holds only
|
|
$\mathbf{s}_3$; needs $\mathbf{s}_1$ or $\mathbf{s}_2$).
|
|
\end{enumerate}
|
|
\end{theorem}
|
|
|
|
\begin{proof}
|
|
By the unforgeability of the threshold signing protocol
|
|
(Theorem~\ref{thm:cggmp-uf} for CGGMP21,
|
|
Theorem~\ref{thm:frost-uf} for FROST), producing a valid signature
|
|
requires at least $t = 2$ shares. Each party holds exactly one share.
|
|
Therefore no single party can sign. This holds information-theoretically
|
|
for the secret sharing layer (any single share is uniformly random,
|
|
independent of the key) and computationally for the signing protocol
|
|
(under the OMDL/ECDSA assumptions).
|
|
\end{proof}
|
|
|
|
\subsection{Signing Flows}
|
|
|
|
\textbf{Normal transaction (user + operator):}
|
|
\begin{enumerate}[nosep]
|
|
\item User initiates transaction on their device.
|
|
\item Device generates partial signature using $\mathbf{s}_1$.
|
|
\item ATS operator receives request, runs pre-trade compliance checks.
|
|
\item If compliant, operator generates partial signature using
|
|
$\mathbf{s}_2$.
|
|
\item Signatures are combined into a standard on-chain signature.
|
|
\end{enumerate}
|
|
|
|
\textbf{Device lost (operator + backup):}
|
|
\begin{enumerate}[nosep]
|
|
\item User proves identity through KYC re-verification.
|
|
\item Backup share $\mathbf{s}_3$ is recovered using the user's
|
|
passphrase.
|
|
\item Operator co-signs with $\mathbf{s}_2$ to authorize a reshare
|
|
that generates a new $\mathbf{s}_1$ for the replacement device.
|
|
\item The on-chain address does not change (reshare preserves the
|
|
aggregate public key).
|
|
\end{enumerate}
|
|
|
|
\textbf{Operator compromise (user + backup):}
|
|
\begin{enumerate}[nosep]
|
|
\item User activates emergency recovery using device share
|
|
$\mathbf{s}_1$ and backup share $\mathbf{s}_3$.
|
|
\item Funds are moved to a new threshold address with a fresh
|
|
operator share.
|
|
\end{enumerate}
|
|
|
|
%% =====================================================================
|