Files
zeekay abf99d05fc papers: reorganize into per-paper dirs, add Antje Worring as co-author
Restructured from flat .tex/.pdf files into per-paper subdirectories.
Added Antje Worring as co-author on all papers.
Synced PDFs to pdfs/ for download site.
2026-04-18 21:50:07 -07:00

145 lines
4.8 KiB
TeX

\section{Lux DID Specification}
\subsection{DID Format}
The Lux DID method follows W3C Decentralized Identifiers (DIDs) v1.0 specification \cite{did-core}. The general format is:
\begin{center}
\texttt{did:lux:<network>:<address>}
\end{center}
Where:
\begin{itemize}
\item \texttt{did} — DID scheme identifier (constant)
\item \texttt{lux} — DID method name
\item \texttt{<network>} — Network identifier (optional, defaults to mainnet)
\item \texttt{<address>} — Lux blockchain address or public key hash
\end{itemize}
\subsection{Network Identifiers}
\begin{table}[h]
\centering
\begin{tabular}{@{}lll@{}}
\toprule
\textbf{Network} & \textbf{Identifier} & \textbf{Example} \\ \midrule
Mainnet & (omitted) & \texttt{did:lux:X-lux1abc...} \\
Testnet & \texttt{testnet} & \texttt{did:lux:testnet:X-lux1abc...} \\
Local & \texttt{local} & \texttt{did:lux:local:X-lux1abc...} \\
Custom Appchain & \texttt{<appchain-id>} & \texttt{did:lux:2oYMBNV4eNHy...} \\ \bottomrule
\end{tabular}
\caption{Lux Network Identifiers}
\end{table}
\subsection{Address Formats}
Lux supports multiple address formats across chains:
\begin{itemize}
\item \textbf{X-Chain (UTXO)}: \texttt{X-lux1<bech32>} (XVM address)
\item \textbf{C-Chain (EVM)}: \texttt{0x<hex>} (Ethereum-compatible)
\item \textbf{P-Chain (Platform)}: \texttt{P-lux1<bech32>} (validator/staking)
\end{itemize}
All formats can be used in DID identifiers:
\begin{lstlisting}[language=bash, caption=Valid Lux DIDs]
did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m
did:lux:0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb
did:lux:P-lux1g65uqn6t77p656w64023nh8nd9updzmxh8ttv
\end{lstlisting}
\subsection{DID Document Structure}
Each DID resolves to a DID Document conforming to W3C standards:
\begin{lstlisting}[language=json, caption=Example DID Document]
{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/ed25519-2020/v1",
"https://w3id.org/security/suites/x25519-2020/v1"
],
"id": "did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m",
"controller": "did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m",
"verificationMethod": [
{
"id": "did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m#key-1",
"type": "Ed25519VerificationKey2020",
"controller": "did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m",
"publicKeyMultibase": "zH3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
},
{
"id": "did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m#key-2",
"type": "Dilithium3VerificationKey2025",
"controller": "did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m",
"publicKeyMultibase": "zMxY...PQ-KEY" // Post-quantum key
}
],
"authentication": [
"did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m#key-1",
"did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m#key-2"
],
"assertionMethod": [
"did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m#key-1"
],
"keyAgreement": [
{
"id": "did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m#key-3",
"type": "X25519KeyAgreementKey2020",
"controller": "did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m",
"publicKeyMultibase": "z6LShs9GGnqk85isEBzzshkuVWrVKsRp24GnDuHk8QWkARMW"
}
],
"service": [
{
"id": "did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m#id-hub",
"type": "IdentityHub",
"serviceEndpoint": "https://id.lux.network/hub/X-lux1qzr..."
},
{
"id": "did:lux:X-lux1qzr2v3dhq0hgqkgdwq36z0z7eqkh5x2g5m#oidc",
"type": "OpenIDConnectProvider",
"serviceEndpoint": "https://id.lux.network/oidc"
}
]
}
\end{lstlisting}
\subsection{DID Operations}
\subsubsection{Create}
Creating a DID involves:
\begin{enumerate}
\item Generate key pair (Ed25519, secp256k1, or Dilithium3)
\item Derive Lux address from public key
\item Construct DID: \texttt{did:lux:<address>}
\item Register DID Document on-chain (optional) or maintain off-chain registry
\end{enumerate}
\subsubsection{Read (Resolve)}
DID resolution follows this priority:
\begin{enumerate}
\item \textbf{On-chain registry}: Check C-Chain smart contract for DID Document
\item \textbf{Lux ID service}: Query centralized resolver for federated identities
\item \textbf{Universal Resolver}: Fall back to DIF Universal Resolver \cite{universal-resolver}
\item \textbf{Derived from address}: Generate minimal DID Document from public key
\end{enumerate}
\subsubsection{Update}
DID Document updates require proof of control:
\begin{itemize}
\item Sign update transaction with private key corresponding to DID
\item Submit to on-chain registry or Lux ID service
\item Version incremented with each update
\end{itemize}
\subsubsection{Deactivate}
Deactivation sets DID Document status to \texttt{deactivated}, preventing future authentication. Keys cannot be recovered after deactivation.