mirror of
https://github.com/lux-apps/papers.git
synced 2026-11-03 05:07:46 +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.
59 lines
2.2 KiB
TeX
59 lines
2.2 KiB
TeX
\section{Multi-Tenant Architecture}
|
|
|
|
\label{sec:multitenant}
|
|
%% =========================================================================
|
|
|
|
Teleport supports white-label deployment: multiple independent bridge brands operate from a single binary, sharing MPC infrastructure while maintaining distinct identities, fee structures, and chain sets.
|
|
|
|
\subsection{Routing}
|
|
|
|
Incoming requests are routed by hostname:
|
|
|
|
\begin{lstlisting}[language=Go,caption={Hostname-based tenant routing}]
|
|
func (s *Server) resolveTenant(
|
|
r *http.Request,
|
|
) (*TenantConfig, error) {
|
|
host := r.Host
|
|
cfg, ok := s.tenants[host]
|
|
if !ok {
|
|
return nil, ErrUnknownTenant
|
|
}
|
|
return cfg, nil
|
|
}
|
|
\end{lstlisting}
|
|
|
|
Each tenant hostname (e.g., \texttt{bridge.lux.network}, \texttt{bridge.example.com}) maps to a \texttt{TenantConfig} specifying allowed chains, fee parameters, branding assets, and yield strategy set.
|
|
|
|
\subsection{Tenant Manifest}
|
|
|
|
\begin{lstlisting}[language=JSON,caption={Tenant manifest example}]
|
|
{
|
|
"id": "tenant-lux",
|
|
"hostnames": ["bridge.lux.network"],
|
|
"chains": [1, 56, 137, 42161, 10, 8453, 96369],
|
|
"fee_bps": 30,
|
|
"stakeholder_bps": 5000,
|
|
"yield_strategies": ["babylon", "dchain-lp"],
|
|
"shariah_mode": false,
|
|
"mpc_group": "default"
|
|
}
|
|
\end{lstlisting}
|
|
|
|
The \texttt{mpc\_group} field selects which MPC key set to use. Multiple tenants can share the same MPC group (shared security) or use dedicated groups (isolated key material).
|
|
|
|
\subsection{Isolation Guarantees}
|
|
|
|
\begin{property}[Tenant Isolation]
|
|
Tenants share MPC signing infrastructure but are isolated in:
|
|
\begin{enumerate}[nosep]
|
|
\item Nonce namespaces: each tenant's nonce bitmaps are independent.
|
|
\item Fee accounting: bridge fees accrue to tenant-specific addresses.
|
|
\item Chain access: a tenant can only bridge to chains listed in its manifest.
|
|
\item Rate limits: per-tenant daily volume caps.
|
|
\end{enumerate}
|
|
\end{property}
|
|
|
|
The on-chain Teleporter contract does not encode tenant identity. Tenant isolation is enforced at the API and MPC relay layer. The contract's security properties (soundness, conservation) hold regardless of tenant configuration.
|
|
|
|
%% =========================================================================
|