mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
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.
145 lines
4.8 KiB
TeX
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.
|
|
|