mirror of
https://github.com/lux-apps/papers.git
synced 2026-11-03 05:07:46 +00:00
Every rendered "T-Chain" / "ThresholdVM" / "teleportvm" reference across the paper corpus is rewritten to the correct canonical chain by concern: threshold signing / MPC / bridge custody / key recovery -> M-Chain (MVM); FHE / encrypted compute / threshold decryption -> F-Chain (FVM); teleport / cross-chain messaging -> B-Chain (bridgevm); consensus Pulsar stays Q-Chain. Section lux-trust-kernel/03-t-chain-threshold-governance.tex renamed -> 03-f-chain-encrypted-policy.tex (with \input + xref fixes). Braided "T-Chain" sections split by concern (M vs F). Only lp-020's chain-separation rationale and the shared lux/chains/thresholdvm library path retain the name, to record the removal. All changed papers rebuilt (pdflatex, rc=0, no undefined refs). ยง09 of lux-dao-governance-framework reframed: fabricated "production deployment" metrics ($50M/$240k/$12M, survey %s, "as of Oct 2024") relabeled as illustrative design configurations with no invented replacements; reality noted (DAO treasury is a 1/1 Safe); conclusion echo + one "first production" overclaim softened. This commit also captures concurrent corpus workstreams on the same tree. Co-authored-by: Hanzo Dev <[email protected]>
87 lines
4.5 KiB
TeX
87 lines
4.5 KiB
TeX
\section{The XLock object}
|
|
\label{sec:xlock}
|
|
|
|
\subsection{An X settlement lock, not a raw UTXO}
|
|
|
|
The object an app-chain references under XSS is \emph{not} a raw UTXO.
|
|
A raw UTXO is freely spendable by its owner's signature; that is exactly
|
|
the property a computing module must not have over committed value. The
|
|
referenced object is an \textbf{X settlement lock}: a UTXO whose spend
|
|
authority has been transferred from ``the owner's signature'' to ``an
|
|
accepted settlement of a specific module on a specific chain.''
|
|
|
|
\begin{lstlisting}[language=Go]
|
|
XLock {
|
|
lockID // unique id of this lock (derived from the LockTx)
|
|
sourceUTXOs // the normal X UTXOs consumed to fund the lock
|
|
assetID // single asset; one lock locks one asset
|
|
amount // total locked amount (sum of sourceUTXOs values)
|
|
owner // who gets unused value back (UnlockTx target)
|
|
targetChainID // which computing chain may settle this lock
|
|
targetModule // which module on that chain may settle it
|
|
purpose // stake | dex | bridge | execution | governance
|
|
nonce // owner-scoped replay separator
|
|
expiry // height/time after which UnlockTx-by-timeout is valid
|
|
unlockCondition // predicate for early owner-initiated unlock
|
|
consumed // set true exactly once, by SettleTx or UnlockTx
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\DESIGN{} No such output type exists in xvm today. The closest existing
|
|
constructs are the \texttt{secp256k1fx} \texttt{OutputOwners} with a
|
|
\texttt{Locktime} (a time gate, not a settlement-authority transfer,
|
|
\texttt{vms/xvm/service.go:644}) and the P-Chain's \texttt{StakeOuts}
|
|
(a single-purpose stake lock living on the \emph{wrong} chain,
|
|
\texttt{txs/add\_permissionless\_validator\_tx.go:50}). The XLock
|
|
generalizes the \texttt{StakeOuts} idea to all purposes and moves it
|
|
onto X.
|
|
|
|
\subsection{Why these fields}
|
|
|
|
\begin{itemize}[leftmargin=2em]
|
|
\item \textbf{\texttt{sourceUTXOs}, \texttt{amount}, \texttt{assetID}.}
|
|
The lock is funded by consuming ordinary spendable UTXOs. Their summed
|
|
value is the locked \texttt{amount}; \texttt{assetID} is single because
|
|
conservation is checked per asset (mirroring \texttt{lux.VerifyTx},
|
|
which is per-asset). A multi-asset commitment is several locks.
|
|
\item \textbf{\texttt{owner}.} Locking does not transfer ownership; it
|
|
suspends spendability. Unused value (a rejected order, an unfilled
|
|
remainder, an expired stake) returns to \texttt{owner} via
|
|
\texttt{UnlockTx}.
|
|
\item \textbf{\texttt{targetChainID} $+$ \texttt{targetModule}.} The lock
|
|
names \emph{exactly one} settler. Only an accepted settlement proof
|
|
from this (chain, module) pair can consume the lock. This is the
|
|
capability scoping that makes ``other chains compute, X settles''
|
|
enforceable: a DEX proof cannot settle a stake-lock.
|
|
\item \textbf{\texttt{purpose}.} A coarse, human- and policy-legible tag
|
|
(\texttt{stake}/\texttt{dex}/\texttt{bridge}/\texttt{execution}/
|
|
\texttt{governance}) used by X's acceptance rules and by the plugin
|
|
registry (Section~\ref{sec:migration}, P5). It does not replace
|
|
\texttt{targetModule}; it classifies it.
|
|
\item \textbf{\texttt{nonce}.} Owner-scoped replay separator so two
|
|
otherwise-identical locks have distinct \texttt{lockID}s.
|
|
\item \textbf{\texttt{expiry} $+$ \texttt{unlockCondition}.} Liveness.
|
|
A lock must never be able to strand value forever if the target module
|
|
stalls. \texttt{expiry} permits an \texttt{UnlockTx}-by-timeout;
|
|
\texttt{unlockCondition} permits an earlier owner-initiated unlock
|
|
under a stated predicate (e.g. ``order never rested'').
|
|
\item \textbf{\texttt{consumed}.} The single-use flag. Exactly one of
|
|
\texttt{SettleTx} or \texttt{UnlockTx} sets it; X rejects any second
|
|
attempt. This is the lock-exclusivity guarantee
|
|
(Section~\ref{sec:safety}) and reuses the consume-once discipline the
|
|
atomic rail already implements
|
|
(\texttt{lux/chains/dexvm/atomic.go} \texttt{MarkConsumed}).
|
|
\end{itemize}
|
|
|
|
\subsection{The lock as the universal claim handle}
|
|
|
|
Every computing module's internal record points at a \texttt{lockID}
|
|
rather than carrying its own balance. A D-Chain order references the
|
|
\texttt{lockID} that funds it; a P-Chain validator record references the
|
|
stake \texttt{lockID}; a bridge record references the \texttt{lockID}
|
|
being bridged. The module's ledger thus becomes a table of
|
|
\emph{claims over locks}, and ``settlement'' is uniformly: \emph{prove
|
|
the computation, then \texttt{SettleTx} the referenced locks into new X
|
|
UTXOs (or Z notes)}. This is the single shape that replaces three
|
|
different custody mechanisms.
|