diff --git a/protocol/protocol.tex b/protocol/protocol.tex index ddcdc67a..6ee0defd 100644 --- a/protocol/protocol.tex +++ b/protocol/protocol.tex @@ -44,6 +44,7 @@ \usepackage{hyphenat} \usepackage{tocloft} \usepackage{pict2e} +\usepackage{zref-savepos} % Must be loaded before hyperref. % noautomatic is used because either latexmk or the Makefile will take care of running @@ -276,6 +277,8 @@ \titleformat{\paragraph}{\notsolarge\bfseries}{\theparagraph}{1em}{\headingandlabel{#1}{\#\sectionlabel}} \titleformat{\subparagraph}{\slightlylarge\bfseries}{\thesubparagraph}{1em}{\headingandlabel{#1}{\#\sectionlabel}} +\newcommand{\extralabel}[2]{\zsaveposy{before-#1}#2\zsaveposy{after-#1}\vspace{\dimexpr\zposy{after-#1}sp-\zposy{before-#1}sp}\phantomsection\label{#1}\vspace{\dimexpr\zposy{before-#1}sp-\zposy{after-#1}sp}} + \newcommand{\addparttocontents}[1]{\phantomsection\addcontentsline{toc}{section}{\larger{#1}}} \newcommand{\phantompart}[2]{\def\sectionlabel{#2} \addparttocontents{#1}\label{#2}} @@ -4821,7 +4824,7 @@ according to client implementation. \sapling{ \introsection -\lsubsection{Balance and Binding Signature (\SaplingText)}{saplingbalance} \label{bindingsig} +\extralabel{bindingsig}{\lsubsection{Balance and Binding Signature (\SaplingText)}{saplingbalance}} \Sapling adds \spendTransfers and \outputTransfers to the transparent and \joinSplitTransfers present in \Sprout. @@ -5897,7 +5900,7 @@ and its final status (spent or unspent). \todo{Explain the kind of things that can go wrong with linkage between abstract and concrete protocol. E.g. \crossref{internalh}} -\lsubsection{Integers, Bit Sequences, and Endianness}{endian} \label{boxnotation} +\extralabel{boxnotation}{\lsubsection{Integers, Bit Sequences, and Endianness}{endian}} All integers in \Zcash-specific encodings are unsigned, have a fixed bit length, and are encoded in little-endian byte order \emph{unless otherwise @@ -7031,7 +7034,7 @@ $\BlakeTwobOf{256}{p, x}$ is defined in \crossref{concreteblake2}. } %sapling -\lsubsubsection{\EdSpecificText}{concreteed25519} \label{concretejssig} +\extralabel{concretejssig}{\lsubsubsection{\EdSpecificText}{concreteed25519}} \EdSpecific is a \signatureScheme as specified in \crossref{abstractsig}. It is used to instantiate $\JoinSplitSig$ as described in \crossref{sproutnonmalleability}. @@ -7128,7 +7131,7 @@ using libsodium~v1.0.15.} \sapling{ -\lsubsubsection{\RedDSAText{} and \RedJubjubText{}}{concretereddsa} \label{concreteredjubjub} +\extralabel{concreteredjubjub}{\lsubsubsection{\RedDSAText{} and \RedJubjubText{}}{concretereddsa}} $\RedDSA$ is a Schnorr-based \signatureScheme, optionally supporting key re-randomization as described in \crossref{abstractsigrerand}. It also supports a @@ -7389,7 +7392,7 @@ The leading byte of the \shaHash input is $\hexint{B0}$. \sapling{ \introsection -\lsubsubsubsection{Windowed Pedersen commitments}{concretewindowedcommit} \label{concretesaplingnotecommit} +\extralabel{concretesaplingnotecommit}{\lsubsubsubsection{Windowed Pedersen commitments}{concretewindowedcommit}} \crossref{concretepedersenhash} defines a \xPedersenHash construction. We construct \definingquotedterm{windowed} \defining{\xPedersenCommitments} by reusing that construction, @@ -7437,7 +7440,7 @@ instantiated as follows using $\WindowedPedersenCommitAlg$: \sapling{ -\lsubsubsubsection{Homomorphic Pedersen commitments}{concretehomomorphiccommit} \label{concretevaluecommit} +\extralabel{concretevaluecommit}{\lsubsubsubsection{Homomorphic Pedersen commitments}{concretehomomorphiccommit}} The windowed Pedersen commitments defined in the preceding section are highly efficient, but they do not support the homomorphic property we @@ -13367,7 +13370,7 @@ $\NoteCommitRandRepr$, $\ValueCommitRandRepr$, and $\vOldRepr$ as bit sequences \notsprout{ \lsection{Batching Optimizations}{batching} -\lsubsection{\RedDSAText{} batch validation}{reddsabatchvalidate} \label{reddsabatchverify} +\extralabel{reddsabatchverify}{\lsubsection{\RedDSAText{} batch validation}{reddsabatchvalidate}} The reference validation algorithm for $\RedDSA$ signatures is defined in \crossref{concretereddsa}.