mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +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.
33 lines
1.4 KiB
TeX
33 lines
1.4 KiB
TeX
\section{Read/Write-Set Tracking via ZapDB MVCC}
|
|
|
|
LP-210's correctness reduces to ZapDB's MVCC version vectors. Each
|
|
cell in ZapDB has a version pointer; reads observe the version
|
|
visible from the snapshot; writes create a new version. The
|
|
commit-phase conflict check is a version-vector intersection test:
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{@{}p{6cm}p{7cm}@{}}
|
|
\toprule
|
|
\textbf{Concept} & \textbf{ZapDB primitive} \\
|
|
\midrule
|
|
Read $\textrm{tx}_i$ at key $K$, observing version $V$ &
|
|
\texttt{read\_set[i] $\ni$ (K, V)} \\
|
|
Write $\textrm{tx}_i$ at key $K$, replacing version $V_{\textrm{prior}}$ with $V_{\textrm{new}}$ &
|
|
\texttt{write\_set[i] $\ni$ (K, $V_{\textrm{new}}$, $V_{\textrm{prior}}$)} \\
|
|
Conflict: $\textrm{tx}_i$ read $V_{\textrm{prior}}$ of $K$ but $\textrm{tx}_j$ ($j<i$, committed) wrote $V_{\textrm{new}}$ of $K$ &
|
|
$\textrm{tx}_i.\textrm{read\_set}$ contains $(K, V_{\textrm{prior}})$ and \texttt{staged\_overlay} has key $K$ with a different version \\
|
|
Resolution: roll back $\textrm{tx}_i$, re-execute &
|
|
LP-202 \texttt{txn.Discard()} on $\textrm{tx}_i$'s per-tx overlay; re-execute \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Conflict detection reduces to ZapDB MVCC version-vector
|
|
intersection.}
|
|
\label{tab:mvcc}
|
|
\end{table}
|
|
|
|
No global lock. No serialization across the wave. The pattern is
|
|
identical to a Software Transactional Memory implementation -- hence
|
|
the name.
|