mirror of
https://github.com/lux-apps/papers.git
synced 2026-11-02 11:39:52 +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.
70 lines
2.3 KiB
TeX
70 lines
2.3 KiB
TeX
\section{Teleporter Contract}
|
|
|
|
\label{sec:teleporter}
|
|
%% =========================================================================
|
|
|
|
The Teleporter is a chain-agnostic contract that implements the wire protocol. One audited Solidity implementation is deployed across all EVM chains. Non-EVM chains receive functionally identical implementations in their native languages, each tested against the same conformance suite (\S\ref{sec:conformance}).
|
|
|
|
\subsection{Contract Interface}
|
|
|
|
\begin{lstlisting}[language=Solidity,caption={Core Teleporter interface (simplified)}]
|
|
interface ITeleporter {
|
|
// User-facing
|
|
function deposit(
|
|
address token,
|
|
uint256 amount,
|
|
uint64 dstChainId,
|
|
bytes32 recipient
|
|
) external;
|
|
|
|
function withdraw(
|
|
bytes32 tag, // RELEASE only
|
|
uint64 srcChainId,
|
|
uint256 nonce,
|
|
address token,
|
|
address recipient,
|
|
uint256 amount,
|
|
bytes calldata proof
|
|
) external;
|
|
|
|
// MPC-submitted
|
|
function submitBacking(
|
|
address token,
|
|
uint256 backing,
|
|
uint256 timestamp,
|
|
uint64 srcChainId,
|
|
bytes calldata proof
|
|
) external;
|
|
|
|
function submitYield(
|
|
address token,
|
|
uint256 newSharePrice,
|
|
uint256 epoch,
|
|
uint64 srcChainId,
|
|
bytes calldata proof
|
|
) external;
|
|
|
|
// Views
|
|
function isNonceUsed(uint64 srcChainId, uint256 nonce)
|
|
external view returns (bool);
|
|
function backingRatio(address token)
|
|
external view returns (uint256);
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\subsection{State Variables}
|
|
|
|
The contract holds five categories of state:
|
|
|
|
\begin{enumerate}[nosep]
|
|
\item \textbf{MPC public key} --- set once at deployment, rotated via 7-day timelock.
|
|
\item \textbf{Nonce bitmaps} --- \texttt{mapping(uint64 => mapping(uint256 => bool))}, one per source chain.
|
|
\item \textbf{Release counters} --- \texttt{mapping(uint64 => uint256)}, enforcing Property~\ref{prop:seq-nonce}.
|
|
\item \textbf{Backing state} --- per-token latest backing amount, timestamp, and derived pause flag.
|
|
\item \textbf{Yield state} --- per-token share price numerator and epoch index.
|
|
\end{enumerate}
|
|
|
|
The contract is non-upgradeable. No proxy pattern, no \texttt{delegatecall}, no admin functions beyond timelocked MPC key rotation.
|
|
|
|
%% =========================================================================
|