mirror of
https://github.com/zoo-apps/papers.git
synced 2026-11-02 17:38:34 +00:00
116 lines
5.0 KiB
TeX
116 lines
5.0 KiB
TeX
\section{Zoo Bridge Post-Quantum Attestations}
|
|
\label{sec:bridge-pq}
|
|
|
|
The \Zoo{} Bridge moves assets between \Zoo{} L2 and external
|
|
chains: \Lux{} C-Chain (canonical), Ethereum, BSC, and other EVM
|
|
ecosystems for which the bridge committee has stood up adapters.
|
|
In 2.0 the bridge attestation was a classical multisig over the
|
|
mint event. In 3.0 the bridge attestation lives on M-Chain and is
|
|
secured by post-quantum threshold signatures per
|
|
LP-016 \cite{lp-016} and LP-017 \cite{lp-017}.
|
|
|
|
\subsection{Bridge attestation flow under 3.0}
|
|
|
|
\begin{enumerate}[leftmargin=1.4em]
|
|
\item \textbf{Source observation.} The bridge committee observes a
|
|
finalised burn or lock event on the source chain.
|
|
\item \textbf{Quorum vote.} The committee runs a threshold
|
|
$\MLDSA{}\text{-}65$ ceremony on M-Chain: each member submits
|
|
an $\MLDSA{}$ signature over the event digest. The threshold
|
|
is $t$-of-$n$ with $t \geq \lceil 2n/3 \rceil$.
|
|
\item \textbf{\Corona{} co-attestation.} The committee additionally
|
|
emits a \Corona{} threshold proof over the same digest.
|
|
Both proofs must succeed for a mint message to be valid.
|
|
\item \textbf{B-Chain emission.} The pair of proofs is wrapped into
|
|
a B-Chain bridge message (\textsc{lp-016}) and delivered
|
|
across to the destination chain.
|
|
\item \textbf{Destination mint.} The destination contract verifies
|
|
both proofs --- $\MLDSA{}$ via on-chain precompile and
|
|
\Corona{} via the verifier shipped in 3.0 --- and only
|
|
then mints.
|
|
\end{enumerate}
|
|
|
|
\subsection{Why two PQ proofs on the bridge}
|
|
|
|
Bridges are the highest-value targets in the ecosystem. A break of
|
|
either lattice scheme would compromise mint authority on the
|
|
destination chain. Requiring both \Corona{} (Ring-LWE) and
|
|
$\MLDSA{}$ (Module-LWE/SIS) means the attacker must break two
|
|
distinct lattice problems --- not just two parameter sets of the
|
|
same family --- to forge a mint. Combined with the source-chain
|
|
finality requirement and the threshold $t \geq \lceil 2n/3 \rceil$
|
|
on the committee, this is the strongest practical defence against
|
|
both Q-day and committee compromise.
|
|
|
|
The classical $\BLS{}$ proof is also recorded for fast-path
|
|
verification on legacy explorers and as defence-in-depth, but
|
|
it is not load-bearing in 3.0; verifiers ignore it for mint
|
|
authorisation.
|
|
|
|
\subsection{Committee key schedule (LP-017)}
|
|
|
|
Per LP-017 \cite{lp-017}, the committee re-keys on a defined
|
|
schedule:
|
|
|
|
\begin{itemize}[leftmargin=1.2em]
|
|
\item Every 90 days the committee runs a key-refresh ceremony,
|
|
rotating each member's $\MLDSA{}$ and \Corona{} share.
|
|
\item The ceremony is itself M-Chain-anchored: the new shares
|
|
are committed under the previous round's threshold key,
|
|
so an attacker who compromises a single member at one
|
|
round cannot persist the compromise through the rotation.
|
|
\item Members who fail to participate in two consecutive rotations
|
|
are removed from the committee by L1 governance.
|
|
\end{itemize}
|
|
|
|
\subsection{Cross-chain message format}
|
|
|
|
A 3.0 bridge mint message carries:
|
|
|
|
\begin{lstlisting}[language=C++,caption={Bridge mint message v3}]
|
|
struct BridgeMintMsg3 {
|
|
ChainId src_chain;
|
|
ChainId dst_chain;
|
|
Hash src_event; // finalised burn/lock event
|
|
Hash asset;
|
|
Address beneficiary;
|
|
Amount amount;
|
|
Hash committee_epoch; // identifies key schedule epoch
|
|
MlDsa::Sig mldsa_threshold; // t-of-n ML-DSA-65
|
|
Corona::Sig corona_threshold; // t-of-n Corona
|
|
Bls::Agg bls_legacy; // for fast-path observers, advisory
|
|
};
|
|
\end{lstlisting}
|
|
|
|
The destination-chain verifier rejects on a missing or invalid
|
|
$\MLDSA{}$ or \Corona{} proof. The $\BLS{}$ field is optional under
|
|
3.0.
|
|
|
|
\subsection{2021 BSC migration adapter}
|
|
|
|
The \Zoo{} Bridge supports a one-way migration adapter for legacy
|
|
2021-cohort BSC \Zoo{} holders. Holders burn the legacy BEP-20
|
|
token; the bridge committee attests the burn under the 3.0
|
|
attestation discipline; the holder receives the \Zoo{} 3.0 native
|
|
asset on \Zoo{} L2. The legacy-side burn cannot itself be PQ-attested
|
|
(BSC does not implement \MLDSA{} or \Corona{} verification), but
|
|
the destination-side mint is fully PQ-attested. This is the
|
|
correct posture: the chain we control is post-quantum; the chain
|
|
we are migrating from continues to be classical for as long as
|
|
upstream chooses.
|
|
|
|
\subsection{Failure modes and recovery}
|
|
|
|
\begin{itemize}[leftmargin=1.2em]
|
|
\item \textbf{Quorum failure.} If the committee cannot reach the
|
|
threshold, the message is not emitted. Mint does not happen.
|
|
No silent fallback to a smaller quorum.
|
|
\item \textbf{Single-member compromise.} The threshold structure
|
|
absorbs up to $n - t$ compromised members. Compromise above
|
|
that triggers L1 governance to slash and rotate.
|
|
\item \textbf{Lattice scheme break.} If a published break of either
|
|
\Corona{} or $\MLDSA{}$ surfaces, the bridge halts pending
|
|
emergency re-parameterisation; the committee proposes new
|
|
parameters via L1 governance and re-keys before resuming.
|
|
\end{itemize}
|