mirror of
https://github.com/lux-apps/papers.git
synced 2026-11-03 05:07:46 +00:00
Companion LaTeX papers to luxfi/LPs: - lp-200-zap-stack: full ZAP-as-substrate paper (10-layer model, deco- mplected concerns, performance). - lp-200-lux-vs-avalanche-diff: code-translation appendix. - lp-203-gpu-native-verify, lp-205-pipelined-quasar, lp-208-dag-mempool, lp-209-mysticeti-ordering, lp-210-block-stm, lp-211-cross-shard-atomic, lp-217-cert-profile-modes, lp-218-zap-p3q-pq-rollup, lp-220-p3q-corona-magnetar, lp-221-stark-fri-verifier, lp-300-schema-registry. Pitch / outreach decks (luxcover.sty templated): - blackrock-nahmii-pitch, corporate-dao-stack-analysis, nahmii-patent-acquisition, pq-patent-family-future-infringers, lux-substrate-platform-pitch, w3a-foundation-membership, multi-validator-scale, vfs-archive-cost-study. Edits aligning to LP-217 / LP-200: - lp-020-quasar-consensus 02-system-model + 08-performance. - lp-073-pulsar 11-quasar. - lp-103-omnichain-explorer 03-chain-support. - lp-104-graph-engine. - lp-201-zap-universal-wire/wire-inventory.csv. - lp-306-lx-social-dex sections/02. - lux-adoption-roadmap, lux-chain-architecture, lux-consensus-engines/08-composition, lux-crypto-agility, lux-evm-precompile-engineering/02, lux-fhe-smart-contracts/05, lux-quasar-composition/04+06+10, lux-reproducible-builds. - INDEX.md cross-links the new papers.
146 lines
5.4 KiB
TeX
146 lines
5.4 KiB
TeX
\section{Wire Schemas}
|
|
|
|
Rollup transaction envelopes are ZAP frames in the
|
|
\texttt{0xE0}--\texttt{0xEF} rollup schema range. The umbrella
|
|
LP-200 reconciles the range against LP-211 (cross-shard wire
|
|
\texttt{0xE2}--\texttt{0xE7}) and LP-208 (DAG header/body, current
|
|
allocation \texttt{0xF0}--\texttt{0xF1}).
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{@{}lllp{5cm}@{}}
|
|
\toprule
|
|
\textbf{Schema} & \textbf{Envelope} & \textbf{Kind} & \textbf{Purpose} \\
|
|
\midrule
|
|
\texttt{0xE0} & \texttt{RollupBatchTx} & \texttt{0x40} & Sequencer commit of a batch \\
|
|
\texttt{0xE1} & \texttt{RollupChallengeTx} & \texttt{0x41} & Fraud-proof challenge for optimistic rollups \\
|
|
\texttt{0xE2} & \texttt{RollupExitTx} & \texttt{0x42} & User exit from rollup to parent L1 \\
|
|
\texttt{0xE3} & \texttt{RollupGenesisTx} & \texttt{0x43} & Rollup-creation tx at deploy time \\
|
|
\texttt{0xE4}--\texttt{0xEF} & reserved & --- & Future rollup-VM envelopes \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Rollup wire schemas. Note: per LP-211, schemas
|
|
\texttt{0xE2}--\texttt{0xE7} are reserved for cross-shard wire;
|
|
the umbrella allocation in LP-200 resolves this so that
|
|
LP-218 rollup envelopes use \texttt{0xE0}, \texttt{0xE1},
|
|
plus higher slots in the rollup range. The exact final
|
|
schema-ID-to-name mapping is reconciled in the LP-200 schema map.}
|
|
\label{tab:schemas}
|
|
\end{table}
|
|
|
|
\subsection{RollupBatchTx (\texttt{0xE0}, Kind \texttt{0x40})}
|
|
|
|
Fixed section (offset table):
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{@{}rlrp{6cm}@{}}
|
|
\toprule
|
|
\textbf{Offset} & \textbf{Field} & \textbf{Size} & \textbf{Description} \\
|
|
\midrule
|
|
$0$ & Kind & $1$ & \texttt{0x40} \\
|
|
$1$ & Version & $1$ & \texttt{0x01} \\
|
|
$2$ & SequencerID & $20$ & Sequencer node ID (or threshold-group ID for $t$-of-$n$) \\
|
|
$22$ & PrevRoot & $32$ & State root before this batch \\
|
|
$54$ & NewRoot & $32$ & State root after this batch \\
|
|
$86$ & BatchHash & $32$ & \texttt{sha256(concat(tx\_i bytes))} \\
|
|
$118$ & BatchNum & $8$ & Monotonic batch counter per rollup \\
|
|
$126$ & TxCount & $4$ & $N$ -- number of txs in batch \\
|
|
$130$ & PulsarSigOff & $4$ & Offset to Pulsar threshold sig in tail \\
|
|
$134$ & GroupPubKeyOff & $4$ & Offset to Pulsar group public key in tail \\
|
|
$138$ & ZKProofOff & $4$ & Offset to STARK / Groth16 proof (zero if optimistic) \\
|
|
$142$ & TxFramesOff & $4$ & Offset to packed list of tx ZAP frames \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{\texttt{RollupBatchTx} field layout.}
|
|
\label{tab:batchtx}
|
|
\end{table}
|
|
|
|
Variable-length tail: Pulsar sig, group pubkey, optional ZK proof,
|
|
packed tx frames. The tx frames are the exact same ZAP buffers the
|
|
sequencer received from clients -- no re-encode, no re-frame.
|
|
|
|
\subsection{RollupChallengeTx (\texttt{0xE1}, Kind \texttt{0x41})}
|
|
|
|
Submitted by any peer to challenge an optimistic rollup batch
|
|
during its challenge window.
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{@{}rlrp{6cm}@{}}
|
|
\toprule
|
|
\textbf{Offset} & \textbf{Field} & \textbf{Size} & \textbf{Description} \\
|
|
\midrule
|
|
$0$ & Kind & $1$ & \texttt{0x41} \\
|
|
$1$ & Version & $1$ & \texttt{0x01} \\
|
|
$2$ & ChallengedBatchID & $32$ & \texttt{sha256} of the challenged \texttt{RollupBatchTx} \\
|
|
$34$ & ChallengerID & $20$ & Challenger node ID \\
|
|
$54$ & FraudWitnessOff & $4$ & Offset to fraud witness in tail \\
|
|
$58$ & BondAmount & $8$ & Challenger bond (slashable if invalid) \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{\texttt{RollupChallengeTx} field layout.}
|
|
\label{tab:challengetx}
|
|
\end{table}
|
|
|
|
Tail: fraud witness -- typically a single tx ZAP frame plus a state
|
|
witness showing the sequencer applied the tx incorrectly. The
|
|
Z-Chain re-executes the tx witness; if the sequencer's claimed new
|
|
root disagrees, the batch is rejected and the sequencer is slashed.
|
|
Omitted entirely from ZK rollups (no challenge window).
|
|
|
|
\subsection{RollupExitTx (\texttt{0xE2}, Kind \texttt{0x42})}
|
|
|
|
User exits a rollup back to the parent L1 by proving inclusion of a
|
|
withdrawal record in a finalized batch.
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{@{}rlrp{6cm}@{}}
|
|
\toprule
|
|
\textbf{Offset} & \textbf{Field} & \textbf{Size} & \textbf{Description} \\
|
|
\midrule
|
|
$0$ & Kind & $1$ & \texttt{0x42} \\
|
|
$1$ & Version & $1$ & \texttt{0x01} \\
|
|
$2$ & UserAddress & $20$ & Parent L1 address receiving the exit \\
|
|
$22$ & BatchID & $32$ & Anchored batch ID \\
|
|
$54$ & ExitAmount & $32$ & uint256 -- amount being exited \\
|
|
$86$ & TokenID & $20$ & Token contract address on rollup \\
|
|
$106$ & MerkleProofOff & $4$ & Offset to state-membership proof \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{\texttt{RollupExitTx} field layout.}
|
|
\label{tab:exittx}
|
|
\end{table}
|
|
|
|
\subsection{RollupGenesisTx (\texttt{0xE3}, Kind \texttt{0x43})}
|
|
|
|
Submitted once at rollup deploy time.
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{@{}rlrp{6cm}@{}}
|
|
\toprule
|
|
\textbf{Offset} & \textbf{Field} & \textbf{Size} & \textbf{Description} \\
|
|
\midrule
|
|
$0$ & Kind & $1$ & \texttt{0x43} \\
|
|
$1$ & Version & $1$ & \texttt{0x01} \\
|
|
$2$ & RollupID & $20$ & Globally-unique rollup ID \\
|
|
$22$ & DeployerAddress & $20$ & Parent L1 deployer address \\
|
|
$42$ & RollupMode & $1$ & \texttt{0x00} optimistic, \texttt{0x01} ZK \\
|
|
$43$ & CertModeFloor & $1$ & LP-217 cert mode required on parent L1 \\
|
|
$44$ & ChallengeWindowBlocks & $8$ & Optimistic window (zero for ZK) \\
|
|
$52$ & InitialRootOff & $4$ & Offset to initial state root \\
|
|
$56$ & SequencerPubKeyOff & $4$ & Offset to sequencer Pulsar group pubkey \\
|
|
$60$ & ConfigOff & $4$ & Offset to rollup-specific config blob \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{\texttt{RollupGenesisTx} field layout.}
|
|
\label{tab:genesistx}
|
|
\end{table}
|