Files
papers/lux-liquid-staking/sections/13-accounting-and-reporting.tex
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

91 lines
3.5 KiB
TeX

\section{Accounting and Reporting}
\label{sec:accounting}
\subsection{Oracle Integration}
The exchange rate $\rho(t)$ is updated on-chain at every epoch boundary. A Chainlink-compatible oracle reports $\rho(t)$ to DeFi protocols that require external price feeds:
\begin{algorithm}[H]
\caption{Exchange Rate Oracle Update}
\label{alg:oracle}
\begin{algorithmic}[1]
\Procedure{UpdateExchangeRate}{}
\State $\rho \gets \mathsf{totalPooled} / \mathsf{totalShares}$
\State $\mathsf{lastUpdate} \gets \mathsf{block.timestamp}$
\State Emit $\mathsf{ExchangeRateUpdated}(\rho, \mathsf{lastUpdate})$
\State Push to oracle aggregator contract
\EndProcedure
\end{algorithmic}
\end{algorithm}
\subsection{APR Calculation}
The current annual percentage rate (APR) is computed as:
\begin{equation}
\text{APR}(t) = \frac{\rho(t) - \rho(t - 365)}{365} \cdot 365 = \frac{\rho(t)}{\rho(t-365)} - 1
\end{equation}
For real-time estimates (when 365 epochs of history are not available), the protocol extrapolates from the last 7 epochs:
\begin{equation}
\text{APR}_{\text{est}} = \left(\frac{\rho(t)}{\rho(t - 7)}\right)^{365/7} - 1
\end{equation}
\subsection{Tax Reporting Support}
The protocol emits structured events for tax reporting:
\begin{enumerate}
\item \textbf{Deposit event}: Records amount deposited and sLUX received.
\item \textbf{Rebase event}: Records per-share value change at each epoch (for income-based jurisdictions).
\item \textbf{Withdrawal event}: Records sLUX burned and LUX received (for capital-gains-based jurisdictions).
\item \textbf{wsLUX wrap/unwrap}: Records exchange rate at time of conversion.
\end{enumerate}
\subsection{Emergency Withdrawal}
In case of protocol emergency (critical vulnerability, governance attack), an emergency withdrawal mechanism allows users to exit at a guaranteed minimum rate:
\begin{algorithm}[H]
\caption{Emergency Withdrawal}
\label{alg:emergency}
\begin{algorithmic}[1]
\Procedure{EmergencyWithdraw}{user}
\State \textbf{require} $\mathsf{emergencyMode} = \text{true}$ (set by governance)
\State $\mathsf{amount} \gets \mathsf{shares}_{\text{user}} \cdot \mathsf{totalPooled} / \mathsf{totalShares}$
\State $\mathsf{guarantee} \gets \mathsf{shares}_{\text{user}} \cdot 0.95$ \Comment{95\% floor}
\State Transfer $\max(\mathsf{amount}, \mathsf{guarantee})$ to user
\State Burn user's sLUX shares
\EndProcedure
\end{algorithmic}
\end{algorithm}
The 95\% floor ensures users can recover at least 95\% of their principal even under worst-case conditions (e.g., simultaneous slashing of multiple validators while insurance pool is depleted).
\subsection{Restaking Integration}
sLUX and wsLUX are compatible with restaking protocols that provide additional yield by securing additional services:
\begin{definition}[Restaking]
Restaking allows sLUX holders to opt into additional slashing conditions in exchange for rewards from auxiliary protocols (oracles, bridges, data availability layers):
\begin{equation}
\text{Total Yield} = y_{\text{staking}} + \sum_{j \in \text{AVS}} y_j - \text{Risk Premium}_j
\end{equation}
where AVS denotes Actively Validated Services.
\end{definition}
\begin{table}[H]
\centering
\caption{Projected restaking yield by AVS type.}
\label{tab:restaking}
\begin{tabular}{lrrr}
\toprule
\textbf{AVS Type} & \textbf{Additional Yield} & \textbf{Additional Slash Risk} & \textbf{Net Premium} \\
\midrule
Oracle network & 1.5\% & 2\% & +1.0\% \\
Cross-chain bridge & 2.0\% & 5\% & +1.2\% \\
Data availability & 1.0\% & 1\% & +0.8\% \\
\bottomrule
\end{tabular}
\end{table}