mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +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]>
67 lines
2.6 KiB
TeX
67 lines
2.6 KiB
TeX
\section{Controller Operations with MPC}
|
|
\label{sec:controller}
|
|
|
|
\subsection{Threshold Controller}
|
|
|
|
In the original Arca \texttt{st-contracts}, the controller was a single Ethereum address. If that key was compromised, the attacker could force-transfer any holder's securities. The Lux standard replaces the single controller with an MPC threshold controller.
|
|
|
|
Controller operations (forced transfers, redemptions, document updates) require a $t$-of-$n$ threshold signature from a controller quorum. The default configuration uses 2-of-3:
|
|
|
|
\begin{enumerate}[nosep]
|
|
\item \textbf{Issuer share}: Held by the securities issuer.
|
|
\item \textbf{Platform share}: Held by the ATS operator \cite{lux-ats-architecture}.
|
|
\item \textbf{Regulatory share}: Held by the regulatory custodian or compliance officer.
|
|
\end{enumerate}
|
|
|
|
\begin{lstlisting}[language=Solidity,caption={MPC-controlled forced transfer.}]
|
|
contract SecurityToken is ISecurityToken {
|
|
address public mpcController; // MPC threshold address
|
|
|
|
modifier onlyController() {
|
|
require(msg.sender == mpcController, "not controller");
|
|
_;
|
|
}
|
|
|
|
function controllerTransfer(
|
|
address from, address to, uint256 value,
|
|
bytes calldata data, bytes calldata operatorData
|
|
) external override onlyController {
|
|
// Controller can transfer regardless of restrictions
|
|
// Used for: court orders, regulatory seizures, error correction
|
|
_transfer(from, to, value);
|
|
emit ControllerTransfer(msg.sender, from, to, value, data, operatorData);
|
|
}
|
|
|
|
function controllerRedeem(
|
|
address holder, uint256 value,
|
|
bytes calldata data, bytes calldata operatorData
|
|
) external override onlyController {
|
|
_burn(holder, value);
|
|
emit ControllerRedemption(msg.sender, holder, value, data, operatorData);
|
|
}
|
|
}
|
|
\end{lstlisting}
|
|
|
|
The \texttt{mpcController} address is the public key derived from the distributed key generation ceremony. No single party ever possesses the full private key.
|
|
|
|
\subsection{Controller Action Types}
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\caption{Controller actions and their legal bases.}
|
|
\label{tab:controller-actions}
|
|
\begin{tabular}{lp{6.5cm}}
|
|
\toprule
|
|
\textbf{Action} & \textbf{Legal Basis} \\
|
|
\midrule
|
|
Forced transfer & Court order, regulatory directive \\
|
|
Forced redemption & Issuer buyback, regulatory delisting \\
|
|
Account freeze & SAR investigation, OFAC designation \\
|
|
Document update & Prospectus amendment, offering circular update \\
|
|
Partition migration & Corporate action (merger, conversion) \\
|
|
Emergency pause & Material adverse event, security incident \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{table}
|
|
|