From a8052562e45aadca9459b8ff526ece682b490e59 Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Fri, 16 Mar 2018 15:58:23 +0000 Subject: [PATCH] Cosmetics. Signed-off-by: Daira Hopwood --- protocol/incremental_merkle.png | Bin 34755 -> 18608 bytes protocol/key_components.png | Bin 71625 -> 59061 bytes protocol/protocol.tex | 621 ++++++++++++++++++-------------- protocol/zcash.bib | 6 +- 4 files changed, 360 insertions(+), 267 deletions(-) diff --git a/protocol/incremental_merkle.png b/protocol/incremental_merkle.png index bb5180477e036f427a36d33121037ee07770b4dc..5d51c7a2120867024e47c827a1340cad41a901ae 100644 GIT binary patch literal 18608 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

M7J_6IqK8+6XV}5m4K@xN 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 literal 34755 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

vc&Vh21~)c8Z9|MFYV_f-2q5IGR$wePJU9 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%0D!yp;ty!cmBB;0$r*4T6kz7<91v{p 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�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 aR_jD<*L2e0>K+~nJl;ory{Jd< \makeatletter \renewcommand{\@pnumwidth}{2em} \makeatother -\newcommand{\pagenumfont}{\fontfamily{pnc}\selectfont\rule[-.2\baselineskip]{0pt}{1.4\baselineskip}} +\newcommand{\pagenumfont}{\fontfamily{pnc}\selectfont\rule[-.2\baselineskip]{0pt}{1.35\baselineskip}} \renewcommand{\cftsecpagefont}{\pagenumfont} \renewcommand{\cftsubsecpagefont}{\pagenumfont} \renewcommand{\cftsubsubsecpagefont}{\pagenumfont} \renewcommand{\cftparapagefont}{\pagenumfont} \hfuzz=1pt -%\overfullrule=2cm +\overfullrule=2cm \setlength{\footnotemargin}{0.6em} \setlength{\footnotesep}{2ex} @@ -100,14 +107,17 @@ \setlength{\bibitemsep}{1.2ex} % default is too cramped! -\setlist[enumerate]{before=\vspace{-1ex}} -\setlist[itemize]{itemsep=0.5ex,topsep=0.2ex,before=\vspace{-1ex},after=\vspace{1.5ex}} +\setlist[enumerate]{before=\vspace{-0.8ex}} +\setlist[itemize]{itemsep=0.5ex,topsep=0.2ex,before=\vspace{-0.8ex},after=\vspace{1.5ex}} + +\newlist{compactitemize}{itemize}{3} +\setlist[compactitemize]{itemsep=-1ex,topsep=0ex,before=\vspace{-0.2ex},leftmargin=1.2em,label=$\cdot$,after=\vspace{-3.3ex}} \newlist{formulae}{itemize}{3} \setlist[formulae]{itemsep=0.2ex,topsep=0ex,leftmargin=1.5em,label=,after=\vspace{1.5ex}} \newlist{lines}{itemize}{3} -\setlist[lines]{itemsep=-0.5ex,topsep=0ex,before=\vspace{1ex},leftmargin=0.6em,label=,after=\vspace{1ex}} +\setlist[lines]{itemsep=-0.5ex,topsep=0ex,before=\vspace{1ex},leftmargin=1.6em,label=,after=\vspace{1ex}} \newcommand{\docversion}{Version unavailable (check protocol.ver)} \newcommand{\SaplingSpec}{Overwinter+Sapling} @@ -134,27 +144,47 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg } \makeatletter -\renewcommand*{\@fnsymbol}[1]{\ensuremath{\ifcase#1\or \dagger\or \ddagger\or - \mathsection\or \mathparagraph\else\@ctrerr\fi}} -\newcommand\slightlylarge{\fontsize{10.5}{10.5}\selectfont} -\newcommand\notsolarge{\fontsize{11}{11}\selectfont} -\newcommand\largeish{\fontsize{12}{12}\selectfont} -\newcommand\larger{\fontsize{13}{13}\selectfont} -\newcommand\Larger{\fontsize{16}{16}\selectfont} +\renewcommand*{\@fnsymbol}[1]{\ensuremath{\ifcase#1\or \dagger\or \ddagger\or \mathsection\or \mathparagraph\else\@ctrerr\fi}} \makeatother +\newcommand{\slightlylarge}{\fontsize{10.5}{10.5}\selectfont} +\newcommand{\notsolarge}{\fontsize{11}{11}\selectfont} +\newcommand{\largeish}{\fontsize{12}{12}\selectfont} +\newcommand{\larger}{\fontsize{13}{13}\selectfont} +\newcommand{\Larger}{\fontsize{16}{16}\selectfont} + \titleformat*{\subsection}{\larger\bfseries} \titleformat*{\subsubsection}{\largeish\bfseries} \titleformat*{\paragraph}{\notsolarge\bfseries} \titleformat*{\subparagraph}{\slightlylarge\bfseries} -\renewcommand{\sectionautorefname}{\S\!} -\renewcommand{\subsectionautorefname}{\S\!} -\renewcommand{\subsubsectionautorefname}{\S\!} -\renewcommand{\paragraphautorefname}{\S\!} -\renewcommand{\subparagraphautorefname}{\S\!} -\newcommand{\crossref}[1]{\autoref{#1}\, \emph{`\nameref*{#1}\kern -0.05em'} on p.\,\pageref*{#1}} -\newcommand{\theoremref}[1]{\autoref{#1} on p.\,\pageref*{#1}} +% Fix the height of citation link underlines. +% Also, biblatex really doesn't want to support Unicode citation labels, but I will not be beaten. +\newcommand{\linkstrut}{\rule[-0.4ex]{0ex}{\fontcharht\font`X}} +\DeclareFieldFormat{labelalpha}{\linkstrut\smash{\StrSubstitute{#1}{MAEA2010}{MAEÁ2010}}} +\DeclareFieldFormat{postnote}{\linkstrut\smash{#1}} +\let\oldcite\cite +\renewcommand{\cite}[2][]{\raisebox{0ex}{\oldcite[{#1}]{#2}}} + +\let\oldfootnote\footnote +\renewcommand{\footnote}[1]{\hairspace{\oldfootnote{#1}}} +\newcommand{\footnotewithlabel}[2]{\hairspace\oldfootnote{\label{#1}{#2}}} + +\newcommand{\crossref}[1]{\raisebox{0ex}{\autoref{#1}}\hspace{0.2em}\emph{`\nameref*{#1}\kern -0.05em'} on p.\,\pageref*{#1}} +\newcommand{\theoremref}[1]{\raisebox{0ex}{\autoref{#1}} on p.\,\pageref*{#1}} +\newcommand{\footnoteref}[1]{\hairspace\raisebox{0ex}{\cref{#1}}} + +\newcommand{\autorefprefix}{\linkstrut\S\!} +\renewcommand{\sectionautorefname}{\autorefprefix} +\renewcommand{\subsectionautorefname}{\autorefprefix} +\renewcommand{\subsubsectionautorefname}{\autorefprefix} +\renewcommand{\paragraphautorefname}{\autorefprefix} +\renewcommand{\subparagraphautorefname}{\autorefprefix} + +%\let\oldhref\href +%\renewcommand{\href}[2]{\raisebox{0ex}{\oldhref{#1}{\linkstrut\smash{#2}}}} +%\let\oldurl\url +%\renewcommand{\url}[1]{\href{#1}{\nolinkurl{#1}}} % \newcommand{\subsubsubsection}[1]{\paragraph{#1}\mbox{}\\} @@ -164,6 +194,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\introlist}{\needspace{15ex}} \newcommand{\introsection}{\needspace{35ex}} +\newcommand{\intropart}{\needspace{55ex}} \mathchardef\mhyphen="2D @@ -212,6 +243,8 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\mhspace}[1]{\mbox{\hspace{#1}}} \newcommand{\tab}{\hspace{1.5em}} +\newcommand{\raisedstrut}{\raisebox{0.3ex}{\strut}} + \newcommand{\plus}{\hairspace +\hairspace} \newcommand{\vv}{\hspace{0.071em}\varv\hspace{0.064em}} \newcommand{\varvv}{\varv\kern 0.02em\varv} @@ -271,6 +304,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\Sprout}{\termbf{Sprout}} \newcommand{\SproutOrZcash}{\notsprout{\Sprout}\sprout{\Zcash}} \newcommand{\SproutOrNothing}{\notsprout{\Sprout}} +\newcommand{\pSproutOrNothing}{\notsprout{(\Sprout)}} \newcommand{\Sapling}{\termbf{Sapling}} \newcommand{\NUZero}{\termbf{Overwinter}} \newcommand{\Bitcoin}{\termbf{Bitcoin}} @@ -287,6 +321,9 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\MAY}{\conformance{MAY}} \newcommand{\ALLCAPS}{\conformance{ALL CAPS}} +\newcommand{\collisionResistant}{collision\hyp resistant } +\newcommand{\collisionResistance}{collision\hyp resistance } + \newcommand{\note}{\term{note}} \newcommand{\notes}{\term{notes}} \newcommand{\Note}{\titleterm{Note}} @@ -426,6 +463,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\auxiliaryInputs}{\term{auxiliary inputs}} \newcommand{\fullValidator}{\term{full validator}} \newcommand{\fullValidators}{\term{full validators}} +\newcommand{\consensusRuleChange}{\term{consensus rule change}} \newcommand{\anchor}{\term{anchor}} \newcommand{\anchors}{\term{anchors}} \newcommand{\block}{\term{block}} @@ -531,7 +569,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\merkleInternalNode}{\term{internal node}} \newcommand{\merkleInternalNodes}{\term{internal nodes}} \newcommand{\MerkleInternalNodes}{\term{Internal nodes}} -\newcommand{\merklePath}{\term{path}} +\newcommand{\merklePath}{\term{Merkle tree path}} \newcommand{\merkleLayer}{\term{layer}} \newcommand{\merkleLayers}{\term{layers}} \newcommand{\merkleIndex}{\term{index}} @@ -637,7 +675,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\ascii}[1]{\textbf{``\texttt{#1}''}} \newcommand{\Justthebox}[2][-1.8ex]{\raisebox{#1}{\;\usebox{#2}\;}} \newcommand{\setof}[1]{\{{#1}\}} -\newcommand{\powerset}[1]{\raisebox{-0.25ex}{\scalebox{1.25}{$\mathscr{P}$}}\kern -0.35em\left(\strut{#1}\right)} +\newcommand{\powerset}[1]{\raisebox{-0.28ex}{\scalebox{1.25}{$\mathscr{P}$}}\kern -0.35em\left(\strut{#1}\right)} \newcommand{\barerange}[2]{{{#1}\,..\,{#2}}} \newcommand{\range}[2]{\setof{\barerange{#1}{#2}}} \newcommand{\rangenozero}[2]{\range{#1}{#2} \difference \setof{0}} @@ -648,18 +686,23 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\trunc}[1]{\mathsf{trunc}\!\left({#1}\right)} \newcommand{\ceiling}[1]{\mathsf{ceiling}\!\left({#1}\right)} \newcommand{\sceiling}[1]{\mathsf{ceiling}\left({#1}\right)} -\newcommand{\vsum}[2]{\smashoperator[r]{\sum_{#1}^{#2}}} -\newcommand{\vproduct}[2]{\smashoperator[r]{\prod_{#1}^{#2}}} -\newcommand{\vxor}[2]{\smashoperator[r]{\bigoplus_{#1}^{#2}}} +\newcommand{\vop}[3]{\,\raisebox{0.29ex}{\scalebox{0.89}{$\smashoperator[r]{#3_{#1}^{#2}}$\,}}} +\newcommand{\sop}[3]{\!\scalebox{0.89}{$\scalebox{1.404}{$\strut#3$}_{#1}^{#2}$}} +\newcommand{\vsum}[2]{\vop{#1}{#2}{\sum}} +\newcommand{\ssum}[2]{\sop{#1}{#2}{\sum}} +\newcommand{\vproduct}[2]{\vop{#1}{#2}{\prod}} +\newcommand{\sproduct}[2]{\sop{#1}{#2}{\prod}} +\newcommand{\vxor}[2]{\vop{#1}{#2}{\bigoplus}} +\newcommand{\sxor}[2]{\sop{#1}{#2}{\bigoplus}} \newcommand{\xor}{\oplus} \newcommand{\band}{\binampersand} \newcommand{\suband}{\raisebox{-0.6ex}{\kern-0.06em\scalebox{0.65}{$\binampersand$}}} -\newcommand{\bchoose}{\,?\,} +\newcommand{\bchoose}{\;\scalebox{1.2}[1]{\textsf{?}}\;} \newcommand{\mult}{\cdot} \newcommand{\smult}{\!\cdot\!} \newcommand{\scalarmult}[2]{\boldsymbol{[}{#1}\boldsymbol{]}\,{#2}} -\newcommand{\rightarrowR}{\buildrel{\scriptstyle\mathrm{R}}\over\rightarrow} -\newcommand{\leftarrowR}{\buildrel{\scriptstyle\mathrm{R}}\over\leftarrow} +\newcommand{\rightarrowR}{\phantom{(}\smash{\buildrel{\scriptstyle\mathrm{R}}\over\rightarrow}\phantom{)}} +\newcommand{\leftarrowR}{\phantom{(}\smash{\buildrel{\scriptstyle\mathrm{R}}\over\leftarrow}\phantom{)}} \newcommand{\union}{\cup} \newcommand{\intersection}{\cap} \newcommand{\difference}{\setminus} @@ -686,7 +729,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\BlakeTwosGeneric}{\mathsf{BLAKE2s}} \newcommand{\BlakeTwos}[1]{\mathsf{BLAKE2s\kern 0.05em\mhyphen{#1}}} \newcommand{\BlakeTwosOf}[2]{\BlakeTwos{#1}\!\left({#2}\right)} -\newcommand{\CRHivk}{\mathsf{CRH}^{\InViewingKey}} +\newcommand{\CRHivk}{\mathsf{CRH^{\InViewingKey}}} \newcommand{\CRHivkText}{\texorpdfstring{$\CRHivk$}{CRHivk}} \newcommand{\CRHivkOutput}{\CRHivk\mathsf{.Output}} \newcommand{\CRHivkOutputLength}{\ell_{\InViewingKey}} @@ -1054,7 +1097,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\encCiphertexts}{\mathtt{encCiphertexts}} \newcommand{\randomSeed}{\mathtt{randomSeed}} \newcommand{\spendAuthSig}{\mathtt{spendAuthSig}} -\newcommand{\Varies}{\textit{Varies}} +\newcommand{\Varies}{\textit{\!Varies}} \newcommand{\heading}[1]{\multicolumn{1}{c|}{#1}} \newcommand{\type}[1]{\texttt{#1}} \newcommand{\compactSize}{\type{compactSize uint}} @@ -1228,8 +1271,8 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\Base}{\mathsf{Base}} \newcommand{\Addend}{\mathsf{Addend}} \newcommand{\Sum}{\mathsf{Sum}} -\newcommand{\ainv}{a_{\mathsf{inv}}} \newcommand{\Ainv}{A_{\mathsf{inv}}} +\newcommand{\Inv}[1]{{#1}_{\mathsf{inv}}} \newcommand{\repr}{\mathsf{repr}} \newcommand{\abst}{\mathsf{abst}} @@ -1283,7 +1326,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg % Consensus rules \newcommand{\consensusrule}[1]{\needspace{3ex}\subparagraph{Consensus rule:}{#1}} -\newenvironment{consensusrules}{\introlist\subparagraph{Consensus rules:}\begin{itemize}}{\end{itemize}} +\newenvironment{consensusrules}{\vspace{-4ex}\introlist\subparagraph{Consensus rules:}\begin{itemize}}{\end{itemize}} \newcommand{\sproutspecificitem}[1]{\item \sproutspecific{#1}} \newcommand{\sproutonlyitem}[1]{\item \sproutonly{#1}} \newcommand{\saplingonwarditem}[1]{\sapling{\item {[\Sapling onward]}\, {#1}}} @@ -1308,6 +1351,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\nuzeroonwardpnote}[1]{\nuzero{[\NUZero onward]\,\,} \textbf{Note:\,} {#1}} \newcommand{\fact}[1]{\subparagraph{Fact:}{#1}} \newcommand{\facts}[1]{\subparagraph{Facts:}{#1}} +\newcommand{\snarkcondition}[1]{\vspace{-3.5ex}\introlist\subparagraph{#1}} \newcommand{\affiliation}{\hairspace$^\dagger$\;} @@ -1438,8 +1482,8 @@ used notwithstanding.} \introsection Value in \Zcash is either \transparent or \shielded. Transfers of \transparent value work essentially as in \Bitcoin and have the same privacy properties. -\xShielded value is carried by \notes\hairspace\footnote{\label{notesandnullifiers} -In \Zerocash \cite{BCG+2014}, \notes were called \quotedterm{coins}, and \nullifiers +\xShielded value is carried by \notes\footnotewithlabel{notesandnullifiers}{In +\Zerocash \cite{BCG+2014}, \notes were called \quotedterm{coins}, and \nullifiers were called \quotedterm{serial numbers}.}, which specify an amount and \sprout{a \payingKey. The \payingKey is part of} \notsprout{(indirectly)} @@ -1448,7 +1492,7 @@ As in \Bitcoin, this is associated with a private key that can be used to spend \notes sent to the address; in \Zcash this is called a \spendingKey. To each \note there is cryptographically associated a \noteCommitment, and -a \nullifier\hairspace\cref{notesandnullifiers} (so that there is a 1:1:1 relation +a \nullifier\footnoteref{notesandnullifiers} (so that there is a 1:1:1 relation between \notes, \noteCommitments, and \nullifiers). Computing the \nullifier requires the associated private \spendingKey\sapling{ (or the \fullViewingKey for \Sapling \notes)}. It is infeasible to correlate the \noteCommitment with the corresponding @@ -1463,7 +1507,7 @@ A \transaction can contain \transparent inputs, outputs, and scripts, which all work as in \Bitcoin \cite{Bitc-Protocol}. \sprout{ It also contains a sequence of zero or more \joinSplitDescriptions. -Each of these describes a \joinSplitTransfer\hairspace\footnote{ +Each of these describes a \joinSplitTransfer\footnote{ \joinSplitTransfers in \Zcash generalize \quotedterm{Mint} and \quotedterm{Pour} \transactions in \Zerocash; see \crossref{trstructure} for differences.} which takes in a \transparent value and up to two input \notes, and produces a @@ -1564,6 +1608,7 @@ one valid \nullifier, and so attempting to spend a \note twice would reveal the \nullifier twice, which would cause the second \transaction to be rejected. +\introsection \section{Notation} $\bit$ means the type of bit values, i.e.\ $\setof{0, 1}$. @@ -1591,7 +1636,7 @@ $f(x, y)$ can also be written $f_x(y)$. \notsprout{ $\fun{x \typecolon T}{e_x \typecolon U}$ means the function of type $T \rightarrow U$ -mapping formal parameter $x$ to $e_x$ (an expression depending on $x$). +mapping formal parameter $x$ to $e_x$ (an expression depending on~$x$). The types $T$ and $U$ are always explicit. $\powerset{T}$ means the powerset of $T$. @@ -1635,11 +1680,11 @@ $\zeros{\ell}$ means the sequence of $\ell$ zero bits. $a..b$, used as a subscript, means the sequence of values with indices $a$ through $b$ inclusive. For example, -$\AuthPublicNew{\allNew}$ means the sequence $[\AuthPublicNew{\mathrm{1}}, -\AuthPublicNew{\mathrm{2}}, ...\,\AuthPublicNew{\NNew}]$. +$\AuthPublicNew{\allNew}$ means the sequence +$\vphantom{\mathsf{a_a}}\smash{[\AuthPublicNew{\mathrm{1}}, \AuthPublicNew{\mathrm{2}}, ...\,\AuthPublicNew{\NNew}]}$. (For consistency with the notation in \cite{BCG+2014} and in \cite{BK2016}, this specification uses 1-based indexing and inclusive ranges, -notwithstanding the compelling arguments to the contrary made in +\raisedstrut notwithstanding the compelling arguments to the contrary made in \cite{EWD-831}.) $\range{a}{b}$ means the set or type of integers from $a$ through @@ -1680,7 +1725,7 @@ $a \xor b$ means the bitwise-exclusive-or of $a$ and $b$, and $a \band b$ means the bitwise-and of $a$ and $b$. These are defined on integers or bit sequences according to context. -$\vsum{i=1}{\mathrm{N}} a_i$ means the sum of $a_{\allN{}}$.\; +$\!\vsum{i=1}{\mathrm{N}} a_i$ means the sum of $a_{\allN{}}$.\; \notsprout{$\vproduct{i=1}{\mathrm{N}} a_i$ means the product of $a_{\allN{}}$.\;} $\vxor{i=1}{\mathrm{N}} a_i$ means the bitwise exclusive-or of $a_{\allN{}}$. @@ -1720,7 +1765,7 @@ and rational constants $\FoundersFraction$, $\PoWMaxAdjustDown$, and $\PoWMaxAdjustUp$ will also be defined in that section. -\introsection +\intropart \section{Concepts} \subsection{Payment Addresses and Keys} \label{addressesandkeys} @@ -1737,8 +1782,8 @@ Arrows point from a component to any other component(s) that can be derived from it. \begin{center} -\sprout{\includegraphics[scale=.7]{key_components}} -\sapling{\includegraphics[scale=.5]{key_components_sapling}} +\sprout{\includegraphics[scale=.7,interpolate]{key_components}} +\sapling{\includegraphics[scale=.5,interpolate]{key_components_sapling}} \end{center} \sproutspecific{ @@ -1810,6 +1855,7 @@ spendable by the recipient who holds the \spendingKey corresponding to a given \paymentAddress. } %notsprout +\introlist A \SproutOrNothing \note is a tuple $\changed{(\AuthPublic, \Value, \NoteAddressRand, \NoteCommitRand)}$, where: \begin{itemize} @@ -1825,6 +1871,7 @@ A \SproutOrNothing \note is a tuple $\changed{(\AuthPublic, is a random \commitmentTrapdoor as defined in \crossref{abstractcommit}. \end{itemize} +\introlist Let $\NoteTypeSprout$ be the type of a \SproutOrNothing \note, i.e. \begin{formulae} \item $\NoteTypeSprout := \changed{\PRFOutput \times \range{0}{\MAXMONEY} \times \PRFOutput @@ -1833,6 +1880,7 @@ Let $\NoteTypeSprout$ be the type of a \SproutOrNothing \note, i.e. \sapling{ \vspace{2ex} +\introlist A \Sapling \note is a tuple $(\Diversifier, \DiversifiedTransmitPublic, \Value, \NoteCommitRand)$, where: \begin{itemize} @@ -1846,6 +1894,7 @@ A \Sapling \note is a tuple $(\Diversifier, \DiversifiedTransmitPublic, is a random \commitmentTrapdoor as defined in \crossref{abstractcommit}. \end{itemize} +\introlist Let $\NoteTypeSapling$ be the type of a \Sapling \note, i.e. \begin{formulae} @@ -1862,8 +1911,10 @@ used by the \zeroKnowledgeProof when the \note is spent, to check that it exists on the \blockchain. \vspace{2ex} -A \notsprout{\Sprout} \noteCommitment on a \note +\introlist +A \SproutOrNothing{} \noteCommitment on a \note $\NoteTuple{} = \changed{(\AuthPublic, \Value, \NoteAddressRand, \NoteCommitRand)}$ is computed as + \begin{formulae} \item $\NoteCommitmentSprout(\NoteTuple{}) = \NoteCommitSprout{\NoteCommitRand}(\AuthPublic, \Value, \NoteAddressRand)$, @@ -1871,11 +1922,13 @@ $\NoteTuple{} = \changed{(\AuthPublic, \Value, \NoteAddressRand, \NoteCommitRand \vspace{-1.5ex} where $\NoteCommitSprout{}$ is instantiated in \crossref{concretesproutcommit}. + \sapling{ \vspace{2ex} +\introlist Let $\GroupJHash{}$ and $U$ be as defined in \crossref{concretegrouphashjubjub}. -A \Sapling \noteCommitment on a \note +A \Sapling{} \noteCommitment on a \note $\NoteTuple{} = (\Diversifier, \DiversifiedTransmitPublic, \Value, \NoteCommitRand)$ is computed as \begin{formulae} @@ -1952,8 +2005,8 @@ of one or valid \blocks consistent with consensus rules, is called a \validBlockchain. Each \block in a \blockchain has a \blockHeight. The \blockHeight of the -\genesisBlock is 0, and the \blockHeight of each subsequent \block in the -\blockchain increments by 1. +\genesisBlock is $0$, and the \blockHeight of each subsequent \block in the +\blockchain increments by $1$. In order to choose the \bestValidBlockchain in its view of the overall \block tree, a node sums the work, as defined in \crossref{workdef}, of @@ -2127,7 +2180,7 @@ for the whole \transaction to balance. \subsection{\NoteCommitmentTrees} \label{merkletree} \begin{center} -\includegraphics[scale=.4]{incremental_merkle} +\includegraphics[scale=.4,interpolate]{incremental_merkle} \end{center} \sapling{\todo{The commitment indices in the above diagram should be zero-based to reflect the \notePosition{}.}} @@ -2191,6 +2244,7 @@ included in this \block. The \coinbaseTransaction must also pay the \foundersRew as described in \crossref{foundersreward}. +\intropart \section{Abstract Protocol} \subsection{Abstract Cryptographic Schemes} @@ -2199,7 +2253,7 @@ as described in \crossref{foundersreward}. \sprout{ $\MerkleCRH \typecolon \MerkleHashSprout \times \MerkleHashSprout \rightarrow \MerkleHashSprout$ -is a collision-resistant \hashFunction used in \crossref{merklepath}. +is a \collisionResistant \hashFunction used in \crossref{merklepath}. It is instantiated in \crossref{merklecrh}. } %sprout \notsprout{ @@ -2210,14 +2264,14 @@ $\MerkleCRHSapling \typecolon \MerkleLayerSapling \times \MerkleHashSapling \tim \rightarrow \MerkleHashSapling$ } are \hashFunctions used in \crossref{merklepath}. -\sapling{$\MerkleCRHSapling$ is collision-resistant on all its arguments, and} -$\MerkleCRHSprout$ is collision-resistant except on its first argument. +\sapling{$\MerkleCRHSapling$ is \collisionResistant on all its arguments, and} +$\MerkleCRHSprout$ is \collisionResistant except on its first argument. Both of these functions are instantiated in \crossref{merklecrh}. } %notsprout \changed{ $\hSigCRH{} \typecolon \bitseq{\RandomSeedLength} \times \typeexp{\PRFOutput}{\NOld} \times \JoinSplitSigPublic \rightarrow \hSigType$ -is a collision-resistant \hashFunction used in \crossref{joinsplitdesc}. +is a \collisionResistant \hashFunction used in \crossref{joinsplitdesc}. It is instantiated in \crossref{hsigcrh}. $\EquihashGen{} \typecolon (n \typecolon \PosInt) \times \PosInt \times \byteseqs \times \PosInt \rightarrow \bitseq{n}$ @@ -2259,7 +2313,9 @@ $\PRFexpand{} $&$\typecolon\; \bitseq{\SpendingKeyLength} $&$\times\; \range{0}{ $\PRFnr{} $&$\typecolon\; \bitseq{\ellJ} $&$\times\; \bitseq{\ellJ} $& &$\rightarrow \GF{\ParamJ{r}} $ \end{tabular} -$\PRFexpand{}$ is used in \crossref{saplingkeycomponents}; $\PRFnr{}$ is used in \crossref{spendstatement}. +$\PRFexpand{}$ is used in \crossref{saplingkeycomponents}. + +$\PRFnr{}$ is used in \crossref{spendstatement}. } %sapling \sprout{They}\notsprout{All of these \pseudoRandomFunctions} are instantiated in \crossref{concreteprfs}. @@ -2268,7 +2324,7 @@ $\PRFexpand{}$ is used in \crossref{saplingkeycomponents}; $\PRFnr{}$ is used in \item Security definitions for \pseudoRandomFunctions are given in \cite[section 4]{BDJR2000}. \item In addition to being \pseudoRandomFunctions, it is required that $\PRFnf{x}$,\changed{ $\PRFaddr{x}$,\sprout{ and} $\PRFrho{x}$}\sapling{, and $\PRFnr{x}$} - be collision-resistant across all $x$ --- i.e.\ finding $(x, y) \neq (x', y')$ + be \collisionResistant across all $x$ --- i.e.\ finding $(x, y) \neq (x', y')$ such that $\PRFnf{x}(y) = \PRFnf{x'}(y')$ should not be feasible\changed{, and similarly for $\PRFaddr{}$ and $\PRFrho{}$\sapling{ and $\PRFnr{}$}}. \end{securityrequirements} @@ -2383,8 +2439,7 @@ If the adversary's advantage is insignificant, then the asymmetric encryption sc constructed from $\KA$, $\KDF$ and $\Sym$ in \crossref{inband} will be key-private as defined in \cite{BBDP2001}. -\pnote{ -The given definition only requires ciphertexts to be indistinguishable +\pnote{The given definition only requires ciphertexts to be indistinguishable between \transmissionKeys that are outputs of $\KADerivePublic$ (which includes all keys generated as in \crossref{sproutkeycomponents}). If a \transmissionKey not in that range is used, it may be distinguishable. @@ -2411,6 +2466,7 @@ such that for any key pair $(\sk, \vk) \leftarrowR \SigGen()$, and any $m \typecolon \SigMessage$ and $s \typecolon \SigSignature \leftarrowR \SigSign{\sk}(m)$, $\SigVerify{\vk}(m, s) = 1$. +\introlist \Zcash uses \sprout{two}\sapling{three} signature schemes: \begin{itemize} @@ -2484,14 +2540,14 @@ valid $\Sig$ key pair, then: \item $\left(\SigRandomizePublic(\pk, \SigRandomness), \SigRandomizePrivate(\sk, \SigRandomness)\right) : \SigRandomness \leftarrowR \SigRandom$ \end{formulae} - \vspace{-0.ex} is identical to the distribution of $\SigGen()$. + \vspace{-0.5ex} is identical to the distribution of $\SigGen()$. \item $\left(\SigRandomizePublic(\pk, \SigRandomnessId), \SigRandomizePrivate(\sk, \SigRandomnessId)\right) = (\pk, \sk)$. \end{itemize} The following security requirement for such signature schemes is based on that given in \cite[section 3]{FKMSSS2016}. Note that we require Strong Unforgeability with Re-randomized Keys, not Existential Unforgeability with Re-randomized Keys -(the latter is just called ``Unforgeability under Re-randomized Keys'' in +(the latter is called ``Unforgeability under Re-randomized Keys'' in \cite[Definition 8]{FKMSSS2016}). Unlike the case for $\JoinSplitSig$, we require security under adaptive chosen message attack with multiple messages signed using a given key. (Although each \note uses a different re-randomized key pair, the same @@ -2589,12 +2645,10 @@ A \representedGroup $\GroupG{}$ consists of: and additive identity $\ZeroG{}$; \item a generator $\GenG{}$ of the subgroup of $\GroupG{}$ of order $\ParamG{r}$; \item a bit-length parameter $\ellG{} \typecolon \Nat$; - \item a representation function $\reprG{} \typecolon - \GroupG{} \rightarrow \bitseq{\ellG{}}$; - \item an abstraction function $\abstG{} \typecolon - \bitseq{\ellG{}} \rightarrow \GroupG{} \union \setof{\bot}$; + \item a representation function \smash{$\reprG{} \typecolon \GroupG{} \rightarrow \bitseq{\ellG{}}$}; + \item an abstraction function \smash{$\abstG{} \typecolon \bitseq{\ellG{}} \rightarrow \GroupG{} \union \setof{\bot}$}; \end{itemize} -\vspace{-2ex} +\vspace{-1.5ex} such that $\abstG{}$ is the left inverse of $\reprG{}$, i.e. for all $P \in \GroupG{}$, $\abstG{}(\reprG{}(P)) = P$, and for all $S$ not in the image of $\reprG{}$, $\abstG{}(S) = \bot$. @@ -2644,7 +2698,7 @@ with the following security requirement. For a randomly selected member $\GroupGHash{\CRS}$ of the family, it is infeasible to find a sequence of distinct inputs $m_{\alln} \typecolon \typeexp{\bitseq{\ell}}{n}$ and a sequence of nonzero scalars $x_{\alln} \typecolon \typeexp{\GFstar{\ParamG{r}}}{n}$ -such that $\vsum{i = 1}{n}\left(\scalarmult{x_i}{\GroupGHash{\CRS}(m_i)}\right) = \ZeroG{}$. +such that $\ssum{i = 1}{n}\!\left(\scalarmult{x_i}{\GroupGHash{\CRS}(m_i)}\right) = \ZeroG{}$. } \begin{pnotes} @@ -2674,7 +2728,7 @@ A \representedPairing $\GroupP{}$ consists of: \begin{itemize} \item a group order parameter $\ParamP{r} \typecolon \PosInt$ which must be prime; \item two \representedGroups $\GroupP{1..2}$, both of order $\ParamP{r}$; - \item a group $\GroupP{T}$ of order $\ParamP{r}$, written multiplicatively with operation + \item a group $\GroupP{T}$ of order $\ParamP{r}$, written multiplicatively with operation\, $\mult \typecolon \GroupP{T} \times \GroupP{T} \rightarrow \GroupP{T}$ and multiplicative identity $\ParamP{\mathbf{1}}$; \item a pairing function @@ -2683,11 +2737,11 @@ A \representedPairing $\GroupP{}$ consists of: \begin{itemize} \item (Bilinearity)\; for all $a, b \typecolon \GFstar{r}$, - $P \typecolon \GroupP{1}$, and $Q \typecolon \GroupP{2}$, - $\PairingP(\scalarmult{a}{P}, \scalarmult{b}{Q}) = \PairingP(P, Q)^{a \mult b}$, and + $P \typecolon \GroupP{1}$, and $Q \typecolon \GroupP{2}$,\; + $\PairingP(\scalarmult{a}{P}, \scalarmult{b}{Q}) = \PairingP(P, Q)^{a \mult b}$;\, and \item (Nondegeneracy)\; there does not exist $P \typecolon \GroupP{1} \setminus \ZeroP{1}$ - such that for all $Q \typecolon \GroupP{2}, - \PairingP(P, Q) = \ParamP{\mathbf{1}}$; + such that for all $Q \typecolon \GroupP{2},\; + \PairingP(P, Q) = \ParamP{\mathbf{1}}$. \end{itemize} \end{itemize} @@ -3003,8 +3057,7 @@ where \item $\rt \typecolon \MerkleHashSapling$ is an \anchor, as defined in \crossref{blockchain}, for the output \treestate of a previous \block. \item $\nf \typecolon \bitseq{\ellJ}$ is the \nullifier for the input \note; - \item $\ProofSpend \typecolon \SpendProof$ is - the \zeroKnowledgeProof for the \spendStatement; + \item $\ProofSpend \typecolon \SpendProof$ is the \zeroKnowledgeProof for the \spendStatement; \item $\spendAuthSig \typecolon \SpendAuthSigSignature$ is a signature authorizing this spend. \end{itemize} @@ -3101,6 +3154,7 @@ the private \joinSplitSigningKey: Then the encoded \transaction including $\joinSplitSig$ is submitted to the network. +\introlist \subsubsection{\DummyNotes\notsprout{ (\Sprout)}} \label{dummynotes} The fields in a \joinSplitDescription allow for $\NOld$ input \notes, and @@ -3129,6 +3183,7 @@ A \dummy output \note is constructed as normal but with zero value, and sent to a random \paymentAddress. \sapling{ +\introlist \subsubsection{Sending \Notes{} (\Sapling)} \label{saplingsend} In order to send \shielded value, the sender constructs a \transaction @@ -3203,6 +3258,7 @@ The encoded \transaction is submitted to the network. } %sapling +\introsection \subsection{Merkle path validity} \label{merklepath} \sprout{ @@ -3220,9 +3276,10 @@ The following discussion applies independently to the \Sprout and \Sapling \note } %notsprout Each \merkleNode in the \incrementalMerkleTree is associated with a \merkleHash, -which is a bit sequence. The \merkleLayer numbered $h$, counting from -\merkleLayer $0$ at the \merkleRoot, has $2^h$ \merkleNodes with \merkleIndices -$0$ to $2^h-1$ inclusive. +which is a bit sequence. + +The \merkleLayer numbered $h$, counting from \merkleLayer $0$ at the \merkleRoot, +has $2^h$ \merkleNodes with \merkleIndices $0$ to $2^h-1$ inclusive. Let $\MerkleNode{h}{i}$ be the \merkleHash associated with the \merkleNode at \merkleIndex $i$ in \merkleLayer $h$. @@ -3278,6 +3335,7 @@ $\SIGHASHALL$. } } +\vspace{3ex} Let $\dataToBeSigned$ be the hash of the \transaction{} \changed{using the $\SIGHASHALL$ \sighashType}. \changed{This \emph{excludes} all of the $\scriptSig$ fields in the non-\Zcash-specific parts of the \transaction.} @@ -3298,8 +3356,10 @@ $\JoinSplitSigVerify{\text{\small\joinSplitPubKey}}(\dataToBeSigned, \joinSplitS % FIXME: distinguish pubkey and signature from their encodings. } -Let $\hSig$ be computed as specified in \crossref{joinsplitdesc}, and let -$\PRFpk{}$ be as defined in \crossref{abstractprfs}. +\introsection +Let $\hSig$ be computed as specified in \crossref{joinsplitdesc}. + +Let $\PRFpk{}$ be as defined in \crossref{abstractprfs}. For each $i \in \setofOld$, the creator of a \joinSplitDescription calculates $\h{i} = \PRFpk{\AuthPrivateOld{i}}(i, \hSig)$. @@ -3319,6 +3379,7 @@ to $\joinSplitPubKey$ to sign this \transaction. A \joinSplitTransfer can be seen, from the perspective of the \transaction, as an input \changed{and an output simultaneously}. + \changed{$\vpubOld$ takes value from the \transparentValuePool and} $\vpubNew$ adds value to the \transparentValuePool. As a result, \changed{$\vpubOld$ is treated like an \emph{output} value, whereas} $\vpubNew$ is treated like an @@ -3327,8 +3388,9 @@ treated like an \emph{output} value, whereas} $\vpubNew$ is treated like an \changed{ Unlike original \Zerocash \cite{BCG+2014}, \Zcash does not have a distinction between Mint and Pour operations. The addition of $\vpubOld$ to a -\joinSplitDescription subsumes the functionality of both Mint and Pour. Also, -a difference in the number of real input \notes does not by itself cause two +\joinSplitDescription subsumes the functionality of both Mint and Pour. + +Also, a difference in the number of real input \notes does not by itself cause two \joinSplitDescriptions to be distinguishable. As stated in \crossref{joinsplitdesc}, either $\vpubOld$ or $\vpubNew$ \MUST be zero. @@ -3347,7 +3409,9 @@ according to client implementation. A \transaction that contains one or more \joinSplitDescriptions\sapling{ or \spendDescriptions}, when entered into the \blockchain, appends to the \noteCommitmentTree with all constituent -\noteCommitments. All of the constituent \nullifiers are also entered into the +\noteCommitments. + +All of the constituent \nullifiers are also entered into the \nullifierSet of the associated \treestate. A \transaction is not valid if it attempts to add a \nullifier to the \nullifierSet that already exists in the set. @@ -3367,22 +3431,22 @@ $\MixingPedersenHash$ is defined in \crossref{concretemixinghash}. Let $\PRFnf{}{}$\sapling{ and $\PRFnr{}{}$} be as instantiated in \crossref{concreteprfs}. -\sprout{The \nullifier of a \note}\notsprout{For a \Sprout \note, the \nullifier} +\sprout{The \nullifier of a \note}\notsprout{For a \Sprout{} \note, the \nullifier} is derived as $\PRFnf{\AuthPrivate}(\NoteAddressRand)$. % TODO: \scalarmults should only be in the concrete section \sapling{ -For a \Sapling \note, the \nullifier is derived as +For a \Sapling{} \note, the \nullifier is derived as $\scalarmult{\PRFnr{\AuthProvePublic}(\NoteAddressRand)}{\AuthSignPublic}$. } %sapling -\introsection +\intropart \subsection{\ZkSNARKStatements} \label{snarkstatements} -\subsubsection{\JoinSplitStatement{} \notsprout{(\Sprout)}} \label{joinsplitstatement} +\subsubsection{\JoinSplitStatement{} \pSproutOrNothing} \label{joinsplitstatement} -A valid instance of $\ProofJoinSplit$ assures that given a \term{primary input}: +A valid instance of $\ProofJoinSplit$ assures that given a \primaryInput: \begin{formulae} \item $(\rt \typecolon \MerkleHashSprout,\\ @@ -3391,12 +3455,11 @@ A valid instance of $\ProofJoinSplit$ assures that given a \term{primary input}: \hparen\changed{\vpubOld \typecolon \range{0}{2^{64}-1},}\vspace{0.4ex}\\ \hparen\vpubNew \typecolon \range{0}{2^{64}-1},\\ \hparen\hSig \typecolon \hSigType,\\ - \hparen\h{\allOld} \typecolon \typeexp{\PRFOutput}{\NOld})$, + \hparen\h{\allOld} \typecolon \smash{\typeexp{\PRFOutput}{\NOld})}$, \end{formulae} - +\vspace{-1ex} \introlist -the prover knows an \term{auxiliary input}: - +the prover knows an \auxiliaryInput: \begin{formulae} \item $(\treepath{\allOld} \typecolon \typeexp{\typeexp{\MerkleHashSprout}{\MerkleDepthSprout} \times \NotePositionTypeSprout}{\NOld},\\ @@ -3406,62 +3469,62 @@ the prover knows an \term{auxiliary input}: \hparen\changed{\NoteAddressPreRand \typecolon \bitseq{\NoteAddressPreRandLength},}\\ \hparen\changed{\EnforceMerklePath{\allOld} \typecolon \bitseq{\NOld}})$, \end{formulae} - +\vspace{-1ex} \introlist where: - \begin{formulae} \item for each $i \in \setofOld$: $\nOld{i} = (\AuthPublicOld{i}, \vOld{i}, \NoteAddressRandOld{i}, \NoteCommitRandOld{i})$; \item for each $i \in \setofNew$: $\nNew{i} = (\AuthPublicNew{i}, \vNew{i}, \NoteAddressRandNew{i}, \NoteCommitRandNew{i})$ \end{formulae} - \introlist such that the following conditions hold: +\vspace{2ex} -\subparagraph{Merkle path validity} \label{sproutmerklepathvalidity} +\snarkcondition{Merkle path validity} \label{sproutmerklepathvalidity} for each $i \in \setofOld$ \changed{$\mid$ $\EnforceMerklePath{i} = 1$}: -$\treepath{i}$ must be a valid \merklePath of depth given by $\MerkleDepthSprout$, as defined in -\crossref{merklepath}, from $\NoteCommitmentSprout(\nOld{i})$ to \noteCommitmentTree root $\rt$. +$\treepath{i}$ is a valid \merklePath (see \crossref{merklepath}) of depth +$\MerkleDepthSprout$ from $\NoteCommitmentSprout(\nOld{i})$ to the \anchor $\rt$. \textbf{Note:} Merkle path validity covers both conditions 1. (a) and 1. (d) of the NP statement -given in \cite[section 4.2]{BCG+2014}. +in \cite[section 4.2]{BCG+2014}. +\vspace{2ex} \changed{ -\subparagraph{Merkle path enforcement} \label{sproutmerklepathenforcement} +\snarkcondition{Merkle path enforcement} \label{sproutmerklepathenforcement} for each $i \in \setofOld$, if $\vOld{i} \neq 0$ then $\EnforceMerklePath{i} = 1$. } -\subparagraph{Balance} \label{sproutbalance} +\snarkcondition{Balance} \label{sproutbalance} -$\changed{\vpubOld\; +} \vsum{i=1}{\NOld} \vOld{i} = \vpubNew + \vsum{i=1}{\NNew} \vNew{i} \in \range{0}{2^{64}-1}$. +$\changed{\vpubOld\; +} \ssum{i=1}{\NOld} \vOld{i} = \vpubNew + \ssum{i=1}{\NNew} \vNew{i} \in \range{0}{2^{64}-1}$. -\subparagraph{\Nullifier{} integrity} \label{sproutnullifierintegrity} +\snarkcondition{\Nullifier{} integrity} \label{sproutnullifierintegrity} for each $i \in \setofOld$: $\nfOld{i} = \PRFnf{\AuthPrivateOld{i}}(\NoteAddressRandOld{i})$. -\subparagraph{Spend authority} \label{sproutspendauthority} +\snarkcondition{Spend authority} \label{sproutspendauthority} for each $i \in \setofOld$: $\AuthPublicOld{i} = \changed{\PRFaddr{\AuthPrivateOld{i}}(0)}$. -\subparagraph{Non-malleability} \label{sproutnonmalleablejs} +\snarkcondition{Non-malleability} \label{sproutnonmalleablejs} for each $i \in \setofOld$: $\h{i} = \PRFpk{\AuthPrivateOld{i}}(i, \hSig)$. \changed{ -\subparagraph{Uniqueness of $\NoteAddressRandNew{i}$} \label{sproutuniquerho} +\snarkcondition{Uniqueness of $\NoteAddressRandNew{i}$} \label{sproutuniquerho} for each $i \in \setofNew$: $\NoteAddressRandNew{i} = \PRFrho{\NoteAddressPreRand}(i, \hSig)$. } -\subparagraph{Note commitment integrity} \label{sproutcommitmentintegrity} +\snarkcondition{Note commitment integrity} \label{sproutcommitmentintegrity} for each $i \in \setofNew$: $\cmNew{i}$ = $\NoteCommitSprout(\nNew{i})$. @@ -3470,6 +3533,7 @@ For details of the form and encoding of proofs, see \crossref{phgr}. \sapling{ +\vspace{50ex} \introsection \subsubsection{\SpendStatement{} (\Sapling)} \label{spendstatement} @@ -3482,7 +3546,7 @@ A valid instance of $\ProofSpend$ assures that given a \term{primary input}: \end{formulae} \introlist -the prover knows an \term{auxiliary input}: +the prover knows an \auxiliaryInput: \begin{formulae} \item $(\treepath{} \typecolon \typeexp{\MerkleHash}{\MerkleDepthSapling} \times \NotePositionTypeSapling,\\ @@ -3501,20 +3565,20 @@ where $\nOld{} = (\Diversifier, \DiversifiedTransmitPublic, \vOld{}, \NoteCommit \introlist such that the following conditions hold: -\subparagraph{Note commitment integrity} \label{saplingnotecommitmentintegrity} +\snarkcondition{Note commitment integrity} \label{saplingnotecommitmentintegrity} $\pack(\cmOld{}) = \NoteCommitmentSapling(\nOld{})$. -\subparagraph{Merkle path validity} \label{saplingmerklepathvalidity} +\snarkcondition{Merkle path validity} \label{saplingmerklepathvalidity} $\treepath{}$ must be a valid \merklePath of depth $\MerkleDepthSapling$, as defined in \crossref{merklepath}, from $\cmOld{}$ to \noteCommitmentTree root $\rt$. -\subparagraph{Value commitment integrity} \label{saplingvaluecommitmentintegrity} +\snarkcondition{Value commitment integrity} \label{saplingvaluecommitmentintegrity} $\cvOld{} = \ValueCommit{\ValueCommitRandOld{}}(\vOld{})$. -\subparagraph{Point validity checks} \label{saplingpointvalidity} +\snarkcondition{Point validity checks} \label{saplingpointvalidity} $\AuthSignPublic, \DiversifiedTransmitBase \in \GroupJ$. @@ -3522,9 +3586,7 @@ $\scalarmult{8}{\AuthSignPublic} \neq \ZeroJ$. $\scalarmult{8}{\DiversifiedTransmitBase} \neq \ZeroJ$. -\subparagraph{\Nullifier{} integrity} \label{saplingnullifierintegrity} - - +\snarkcondition{\Nullifier{} integrity} \label{saplingnullifierintegrity} $\nfOld{} = \scalarmult{\PRFnr{\AuthProvePublic}(\NoteAddressRand)}{\AuthSignPublic}$. @@ -3535,7 +3597,7 @@ where \item $\NoteAddressRand = \MixingPedersenHash(\cmOld{}, \NotePosition)$ \end{formulae} -\subparagraph{Spend authority} \label{saplingspendauthority} +\snarkcondition{Spend authority} \label{saplingspendauthority} \todo{} @@ -3570,30 +3632,34 @@ is used to encrypt them. The recipient's possession of the associated All of the resulting ciphertexts are combined to form a \notesCiphertext. -Let $\Sym$ be the \encryptionScheme instantiated in \crossref{concretesym}. - \introlist +\sprout{ For both encryption and decryption, -\sprout{ \begin{itemize} - \item Let $\KDFSprout$ be the \keyDerivationFunction instantiated in \crossref{concretesproutkdf}. - \item Let $\KASprout$ be the \keyAgreementScheme instantiated in \crossref{concretesproutkeyagreement}. - \item Let $\hSig$ be the value computed for this \joinSplitDescription in \crossref{joinsplitdesc}. + \item let $\Sym$ be the \encryptionScheme instantiated in \crossref{concretesym}; + \item let $\KDFSprout$ be the \keyDerivationFunction instantiated in \crossref{concretesproutkdf}; + \item let $\KASprout$ be the \keyAgreementScheme instantiated in \crossref{concretesproutkeyagreement}; + \item let $\hSig$ be the value computed for this \joinSplitDescription in \crossref{joinsplitdesc}. \end{itemize} -} +} %sprout \notsprout{ -\begin{itemize} - \item Let $\KDFSprout$\sapling{ and $\KDFSapling$} be the \keyDerivationFunctions instantiated in - \crossref{concretesproutkdf}. - \item Let $\KASprout$\sapling{ and $\KASapling$} be the \keyAgreementSchemes instantiated in - \crossref{concretekaandkdf}. - \item \sproutspecific{Let $\hSig$ be the value computed for this \joinSplitDescription in - \crossref{joinsplitdesc}.} -\end{itemize} -} +For both encryption and decryption: -\subsubsection{Encryption} +Let $\Sym$ be the \encryptionScheme instantiated in \crossref{concretesym}. + +Let $\KDFSprout$\sapling{ and $\KDFSapling$} be the \keyDerivationFunctions instantiated in +\crossref{concretesproutkdf}. + +Let $\KASprout$\sapling{ and $\KASapling$} be the \keyAgreementSchemes instantiated in +\crossref{concretekaandkdf}. + +\sproutspecific{Let $\hSig$ be the value computed for this \joinSplitDescription in +\crossref{joinsplitdesc}.} +} %notsprout + + +\subsubsection{Encryption \pSproutOrNothing} Let $\TransmitPublicNew{\allNew}$ be the \transmissionKeys for the intended recipient addresses of each new \note. @@ -3633,7 +3699,7 @@ further security considerations, for example of how to validate a \note received out-of-band, which are not addressed in this document. } -\subsubsection{Decryption by a Recipient} +\subsubsection{Decryption by a Recipient \pSproutOrNothing} Let $\InViewingKey = (\AuthPublic, \TransmitPrivate)$ be the recipient's \incomingViewingKey, and let $\TransmitPublic$ be the corresponding \transmissionKey derived from @@ -3687,6 +3753,7 @@ See \crossref{inbandrationale} for further discussion of the security and engineering rationale behind this encryption scheme. +\intropart \section{Concrete Protocol} \subsection{Caution} @@ -3696,7 +3763,7 @@ abstract and concrete protocol. E.g. \crossref{internalh}} \subsection{Integers, Bit Sequences, and Endianness} \label{boxnotation} \label{endian} -All integers in \emph{\Zcash-specific} encodings are unsigned, have a fixed +All integers in \Zcash-specific encodings are unsigned, have a fixed bit length, and are encoded in little-endian byte order \emph{unless otherwise specified}. @@ -3734,12 +3801,12 @@ as a byte with the bits ordered from \emph{most significant} to is toward the left of a diagram. Where bit fields are used, the text will clarify their position in each case. -\introlist +\introsection \subsection{Constants} \label{constants} Define: -\begin{formulae} +\begin{formulae}[itemsep=\sprout{1ex}\notsprout{0.2ex}] \item $\MerkleDepthSprout \typecolon \Nat := \changed{29}$ \sapling{ \item $\MerkleDepthSapling \typecolon \Nat := 29$ @@ -3755,11 +3822,11 @@ Define: \item $\NoteCommitRandLength \typecolon \Nat := \changed{256}$ \item $\changed{\RandomSeedLength \typecolon \Nat := 256}$ \item $\AuthPrivateLength \typecolon \Nat := \changed{252}$ + \item $\changed{\NoteAddressPreRandLength \typecolon \Nat := 252}$ \sapling{ \item $\SpendingKeyLength \typecolon \Nat := 256$ \item $\DiversifierLength \typecolon \Nat := 88$ } %sapling - \item $\changed{\NoteAddressPreRandLength \typecolon \Nat := 252}$ \item $\UncommittedSprout \typecolon \bitseq{\MerkleHashLengthSprout} := \zeros{\MerkleHashLengthSprout}$ \sapling{ \item $\UncommittedSapling \typecolon \bitseq{\MerkleHashLengthSapling} := \ItoLEBSP{\MerkleHashLengthSapling}(1)$ @@ -3783,7 +3850,7 @@ Define: \end{formulae} -\introlist +\introsection \subsection{Concrete Cryptographic Schemes} \subsubsection{\HashFunctions} @@ -3912,7 +3979,7 @@ $\MerkleCRHSprout \typecolon \MerkleLayerSprout \times \MerkleHashSprout \times \vspace{-2ex} \securityrequirement{ -$\SHACompress$ must be collision-resistant, and it must be infeasible to find a preimage $x$ +$\SHACompress$ must be \collisionResistant, and it must be infeasible to find a preimage $x$ such that $\SHACompress(x) = \zeros{256}$. } @@ -3932,7 +3999,7 @@ $\MerkleCRHSapling \typecolon \MerkleLayerSapling \times \MerkleHashSapling \tim \vspace{-2ex} \securityrequirement{ -$\PedersenHash$ must be collision-resistant. +$\PedersenHash$ must be \collisionResistant\!. } \pnote{ @@ -3943,7 +4010,7 @@ as noted in \crossref{concretewindowedcommit}. } %sapling -\introlist +\introsection \subsubsubsection{\hSigText{} \HashFunction} \label{hsigcrh} \newsavebox{\hsigbox} @@ -3973,7 +4040,7 @@ where $\BlakeTwobOf{256}{p, x}$ is defined in \crossref{concreteblake2}. \securityrequirement{ -$\BlakeTwobOf{256}{\ascii{ZcashComputehSig}, x}$ must be collision-resistant on $x$. +$\BlakeTwobOf{256}{\ascii{ZcashComputehSig}, x}$ must be \collisionResistant on $x$. } @@ -4015,7 +4082,7 @@ $32$ bytes, $8$-byte personalization string $p$, and input $x$. \securityrequirement{ $\LEOStoIPOf{256}{\BlakeTwosOf{256}{\ascii{Zcashivk}, x}} \bmod 2^{251}$ -must be collision-resistant on a $512$-bit input $x$. Note that this +must be \collisionResistant on a $64$-byte input $x$. Note that this does not follow from collision-resistance of $\BlakeTwos{256}$ (and the best possible concrete security is that of a $251$-bit hash rather than a $256$-bit hash), but it is a reasonable assumption @@ -4112,12 +4179,13 @@ See \crossref{cctpedersenhash} for rationale and efficient circuit implementatio of these functions. \securityrequirement{ -$\PedersenHash$ and $\PedersenHashToPoint$ are required to be collision-resistant +$\PedersenHash$ and $\PedersenHashToPoint$ are required to be \collisionResistant between inputs of fixed length, for a given personalization input $D$. No other security properties commonly associated with \hashFunctions are needed. } \vspace{2ex} +\introsection \begin{theorem} \label{thmpedersenencodeinjective} The encoding function $\PedersenEncode{\paramdot}$ is injective. \end{theorem} @@ -4130,6 +4198,7 @@ The range of this expression is a subset of $\rangenozero{-\PedersenRangeOffset}{\PedersenRangeOffset}$ where $\PedersenRangeOffset = 4 \mult \vsum{i=0}{c-1} 2^{4 \mult i} = 4 \mult \hfrac{2^{4 \mult c}}{15}$. +\introlist When $c = 63$, we have \begin{tabular}{@{\hskip 2em}r@{\;}l} @@ -4139,7 +4208,7 @@ When $c = 63$, we have \end{tabular} so the required condition is met. This implies that there is no ``wrap around'' -and so $\vsum{j=1}{k_i} \enc(m_j) \mult 2^{4 \mult (j-1)}$ may be treated as an +and so $\ssum{j=1}{k_i} \enc(m_j) \mult 2^{4 \mult (j-1)}$ may be treated as an integer expression. $\enc$ is injective. In order to prove that $\PedersenEncode{\paramdot}$ is injective, @@ -4147,7 +4216,7 @@ consider $\PedersenEncodeNonneg{\paramdot} \typecolon \bitseq{3 \mult \range{1}{ \range{0}{2 \smult \PedersenRangeOffset}$ such that $\PedersenEncodeNonneg{M_i} = \PedersenEncode{M_i} + \PedersenRangeOffset$. With $k_i$ and $m_j$ defined as above, we have -$\PedersenEncodeNonneg{M_i} = \vsum{j=1}{k_i} \enc'(m_j) \mult 2^{4 \mult (j-1)}$ +$\PedersenEncodeNonneg{M_i} = \ssum{j=1}{k_i} \enc'(m_j) \mult 2^{4 \mult (j-1)}$ where $\enc'(m_j) = \enc(m_j) + 4$ is in $\range{0}{8}$ and $\enc'$ is injective. Express this sum in hexadecimal; then each $m_j$ affects only one hex digit, and it is easy to see that $\PedersenEncodeNonneg{\paramdot}$ is injective. @@ -4157,9 +4226,9 @@ Therefore so is $\PedersenEncode{\paramdot}$. Since the security proof from \cite[Appendix A]{BGG1995} depends only on the encoding being injective and its range not including zero, the proof can be adapted straightforwardly to show that $\PedersenHashToPoint$ -is collision-resistant under the same assumptions and security bounds. +is \collisionResistant under the same assumptions and security bounds. Because $\ItoLEBSP{\MerkleHashLengthSapling}$ and $\ExtractJ$ are injective, -it follows that $\PedersenHash$ is equally collision-resistant. +it follows that $\PedersenHash$ is equally \collisionResistant\!. \vspace{2ex} \begin{theorem} \label{thmnohashtouncommittedsapling} @@ -4167,10 +4236,10 @@ $\UncommittedSapling = \ItoLEBSP{\MerkleHashLengthSapling}(1)$ is not in the ran \end{theorem} \begin{proof} -By the definition of $\PedersenHash$, $\ItoLEBSP{\MerkleHashLengthSapling}(1)$ can be in the -range of $\PedersenHash$ only if there exist $D \typecolon \byteseq{8}$ and $M \typecolon \bitseq{\PosInt}$ -such that $\ExtractJ(\PedersenHashToPoint(D, M)) = 1$. -The latter can only be the affine-Edwards $u$-coordinate of a point in $\GroupJ$. +By the definition of $\PedersenHash$, $\ItoLEBSP{\smash{\MerkleHashLengthSapling}}(1)$ +can be in the range of $\PedersenHash$ only if there exist $D \typecolon \byteseq{8}$ and +$M \typecolon \bitseq{\PosInt}$ such that $\ExtractJ(\PedersenHashToPoint(D, M)) = 1$. +The latter can only be the affine-Edwards $u$-coordinate of a point in $\strut\GroupJ$. We show that there are no points in $\GroupJ$ with affine-Edwards $u$-coordinate $1$. Suppose for a contradiction that $(u, \varv) \in \GroupJ$ for $u = 1$ and some $\varv \typecolon \GF{\ParamJ{r}}$. By writing the curve equation as @@ -4200,9 +4269,10 @@ We define $\MixingPedersenHash \typecolon \GroupJ \times \range{0}{\ParamJ{r}-1} The function \begin{formulae} \item $\fun{(r, M, x) \typecolon \range{0}{\ParamJ{r}-1} \times \bitseq{\PosInt} \times - \range{0}{\ParamJ{r}-1}}{\MixingPedersenHash(\WindowedPedersenCommit{r}(M), x) \typecolon \GroupJ}$. + \range{0}{\ParamJ{r}-1}}{\MixingPedersenHash(\WindowedPedersenCommit{r}(M), x) \typecolon \GroupJ}$ \end{formulae} -must be collision-resistant on $(r, M, x)$. +\vspace{-1ex} +must be \collisionResistant on $(r, M, x)$. } See \crossref{cctmixinghash} for efficient circuit implementation of this function. @@ -4337,7 +4407,7 @@ defined in \crossref{concretesha256}: \end{equation*} \begin{securityrequirements} - \item The \shaCompressFunction must be collision-resistant. + \item The \shaCompressFunction must be \collisionResistant\!. \item The \shaCompressFunction must be a PRF when keyed by the bits corresponding to $x$, $\AuthPrivate$ or $\NoteAddressPreRand$ in the above diagrams, with input in the remaining bits. @@ -4346,10 +4416,10 @@ defined in \crossref{concretesha256}: \changed{ \pnote{ The first four bits --i.e.\ the most significant four bits of the first byte-- -are used to distinguish different uses of $\SHACompress$, ensuring that the functions -are independent. In addition to the inputs shown here, the bits $\mathtt{1011}$ +are used to separate distinct uses of $\SHACompress$, ensuring that the functions +are independent. As well as the inputs shown here, bits $\mathtt{1011}$ in this position are used to distinguish uses of the full $\SHAFull$ hash -function --- see \crossref{concretesproutcommit}. +function; see \crossref{concretesproutcommit}. (The specific bit patterns chosen here were motivated by the possibility of future extensions that might have increased $\NOld$ and/or $\NNew$ to 3, or added an @@ -4401,7 +4471,7 @@ It is instantiated using the $\BlakeTwobGeneric$ \hashFunction defined in \begin{formulae} \item $\PRFexpand{\SpendingKey}() := - \LEOStoIPOf{512}{\BlakeTwobOf{512}{\ascii{Zcash\_ExpandSeed}, \Justthebox{\expandbox}}} \bmod \ParamJ{r}$ + \LEOStoIPOf{512}{\BlakeTwobOf{512}{\ascii{Zcash\_ExpandSeed}, \Justthebox{\expandbox}}} \pmod{\ParamJ{r}}$ \end{formulae} \securityrequirement{ @@ -4583,8 +4653,9 @@ the type of $\JubjubCurve$ secret keys. \todo{expand this} \sapling{ \subsubsubsection{\Sapling \KeyDerivation} \label{concretesaplingkdf} -The $\KDFSapling$ \keyDerivationFunction specified in \crossref{abstractkdf} -is instantiated using $\BlakeTwob{256}$ as follows: +The $\KDFSapling$ \keyDerivationFunction is specified in \crossref{abstractkdf}. + +It is instantiated using $\BlakeTwob{256}$ as follows: \begin{formulae} \item $\KDFSapling(\OutputIndex, \DHSecret{}, \EphemeralPublic) := @@ -4668,17 +4739,17 @@ It is instantiated as EdJubjub, which is defined as $\EdDSA$ \cite{BJLSY2015} ov \newsavebox{\cmbox} \begin{lrbox}{\cmbox} \setchanged -\begin{bytefield}[bitwidth=0.031em]{840} - \sbitbox{24}{$1$} & - \sbitbox{24}{$0$} & - \sbitbox{24}{$1$} & - \sbitbox{24}{$1$} & - \sbitbox{24}{$0$} & - \sbitbox{24}{$0$} & - \sbitbox{24}{$0$} & - \sbitbox{24}{$0$} & +\begin{bytefield}[bitwidth=0.027em]{840} + \sbitbox{28}{$1$} & + \sbitbox{28}{$0$} & + \sbitbox{28}{$1$} & + \sbitbox{28}{$1$} & + \sbitbox{28}{$0$} & + \sbitbox{28}{$0$} & + \sbitbox{28}{$0$} & + \sbitbox{28}{$0$} & \sbitbox{256}{$256$-bit $\AuthPublic$} & - \sbitbox{128}{$64$-bit $\Value$} & + \sbitbox{140}{$64$-bit $\Value$} & \sbitbox{256}{$256$-bit $\NoteAddressRand$} & \sbitbox{256}{$256$-bit $\NoteCommitRand$} \end{bytefield} @@ -4688,7 +4759,7 @@ The commitment scheme $\NoteCommitSprout{}$ specified in \crossref{abstractcommi instantiated using $\SHAFull$ as follows: \begin{formulae}[leftmargin=1em] - \item $\NoteCommitSprout{\NoteCommitRand}(\AuthPublic, \Value, \NoteAddressRand) := \SHAFullBox{\cmbox}$. + \item $\NoteCommitSprout{\NoteCommitRand}(\AuthPublic, \Value, \NoteAddressRand) := \SHAFullBox{\cmbox}$ \end{formulae} \pnote{ @@ -4696,7 +4767,7 @@ The leading byte of the $\SHAFull$ input is $\hexint{B0}$. } \begin{securityrequirements} - \item The \shaCompressFunction must be collision-resistant. + \item The \shaCompressFunction must be \collisionResistant\!. \item The \shaCompressFunction must be a PRF when keyed by the bits corresponding to the position of $\NoteCommitRand$ in the second block of $\SHAFull$ input, with input to the PRF in the remaining bits of the block and @@ -4752,15 +4823,15 @@ $\MerkleDepthSapling < 64$. The windowed Pedersen commitments defined in the preceding section are highly efficient, but they do not support the homomorphic property we -need when instantiating $\ValueCommit{}$ (see \crossref{spendsandoutputs} -and \crossref{saplingbalance}). +need when instantiating $\ValueCommit{}$ (see \crossref{saplingbalance} and +\crossref{spendsandoutputs}). In order to support this property, we also define \quotedterm{homomorphic} \xPedersenCommitments as follows: \begin{formulae} \item $\HomomorphicPedersenCommit{\ValueCommitRand}(D, \Value) := - \scalarmult{\Value}{\FindGroupJHashOf{D}, \ascii{v}} + \scalarmult{\ValueCommitRand}{\FindGroupJHashOf{D, \ascii{r}}}$ + \scalarmult{\Value}{\FindGroupJHashOf{D, \ascii{v}}} + \scalarmult{\ValueCommitRand}{\FindGroupJHashOf{D, \ascii{r}}}$ \end{formulae} @@ -4828,10 +4899,10 @@ Let $\GenG{1} \typecolon \GroupGstar{1} := (1, 2)$. \begin{tabular}{@{}l@{}r@{}l@{}} Let $\GenG{2} \typecolon \GroupGstar{2} :=\;$ % are these the right way round? -&$(11559732032986387107991004021392285783925812861821192530917403151452391805634$ & $\mult\, t\;+$ \\ -&$ 10857046999023057135944570762232829481370756359578518086990519993285655852781$ & $, $ \\ -&$ 4082367875863433681332203403145435568316851327593401208105741076214120093531$ & $\mult\, t\;+$ \\ -&$ 8495653923123431417604973247489272438418190587263600148770280649306958101930$ & $). $ +&$(11559732032986387107991004021392285783925812861821192530917403151452391805634$ & $\,\mult\, t\;+$ \\ +&$ 10857046999023057135944570762232829481370756359578518086990519993285655852781$ & $, $ \\ +&$ 4082367875863433681332203403145435568316851327593401208105741076214120093531$ & $\,\mult\, t\;+$ \\ +&$ 8495653923123431417604973247489272438418190587263600148770280649306958101930$ & $). $ \end{tabular} $\GenG{1}$ and $\GenG{2}$ are generators of $\GroupG{1}$ and $\GroupG{2}$ respectively. @@ -4955,7 +5026,7 @@ The \representedPairing $\BLSCurve$ is defined in this section. Parameters are t \cite{Bowe2017}. \introlist -Let $\ParamS{q} :=\;$\scalebox{0.812}[1]{$4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787$}. +Let $\ParamS{q} :=\;$\scalebox{0.81}[1]{$4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787$.} Let $\ParamS{r} := 52435875175126190479447740508185965837690552500527637822603658699938581184513$. @@ -4992,10 +5063,10 @@ Let $\GenS{1} \typecolon \GroupSstar{1} := (1, 2)$. \begin{tabular}{@{}l@{}r@{}l@{}} Let $\GenS{2} \typecolon \GroupSstar{2} :=\;$ % are these the right way round? -&$(11559732032986387107991004021392285783925812861821192530917403151452391805634$ & $\mult\, t\;+$ \\ -&$ 10857046999023057135944570762232829481370756359578518086990519993285655852781$ & $, $ \\ -&$ 4082367875863433681332203403145435568316851327593401208105741076214120093531$ & $\mult\, t\;+$ \\ -&$ 8495653923123431417604973247489272438418190587263600148770280649306958101930$ & $). $ +&$(11559732032986387107991004021392285783925812861821192530917403151452391805634$ & $\,\mult\, t\;+$ \\ +&$ 10857046999023057135944570762232829481370756359578518086990519993285655852781$ & $, $ \\ +&$ 4082367875863433681332203403145435568316851327593401208105741076214120093531$ & $\,\mult\, t\;+$ \\ +&$ 8495653923123431417604973247489272438418190587263600148770280649306958101930$ & $). $ \end{tabular} $\GenS{1}$ and $\GenS{2}$ are generators of $\GroupS{1}$ and $\GroupS{2}$ respectively. @@ -5206,7 +5277,7 @@ Let $\FindGroupJHashOf{D, M} = \begin{pnotes} \item The $\BlakeTwos{256}$ chaining variable after processing $\CRS$ may be precomputed. \item For random input, $\FindGroupJHash$ returns $\bot$ with probability approximately $2^{-256}$. - The uses of $\FindGroupJHash$ in the \Zcash protocol never return $\bot$. + In the \Zcash protocol, uses of $\FindGroupJHash$ never return $\bot$. \end{pnotes} } @@ -5443,7 +5514,7 @@ The encoding of a \Sapling \notePlaintext consists of: The encoding of $\Diversifier$ and $\DiversifiedTransmitPublic$ is identical to the raw encoding of a \Sapling \paymentAddress in \crossref{saplingpaymentaddrencoding}. } -} +} %sapling \subsection{Encodings of Addresses and Keys} \label{addressandkeyencoding} @@ -5652,7 +5723,8 @@ The raw encoding of an \incomingViewingKey consists of, in order: $\TransmitPrivate$ \MUST be ``clamped'' using $\KASproutFormatPrivate$ as specified in \crossref{sproutkeycomponents}. That is, a decoded \incomingViewingKey{} \MUST be considered invalid if $\TransmitPrivate \neq \KASproutFormatPrivate(\TransmitPrivate)$. -($\KASproutFormatPrivate$ is defined in \crossref{concretesproutkeyagreement}.) + +$\KASproutFormatPrivate$ is defined in \crossref{concretesproutkeyagreement}. \pnote{ For addresses on the production network, the lead bytes and encoded length @@ -5727,6 +5799,7 @@ For \incomingViewingKeys on the test network, the \humanReadablePart is \ascii{z } +\introsection \subsubsection{\SproutOrNothing \SpendingKeys} \label{sproutspendingkeyencoding} A \SproutOrNothing \spendingKey consists of $\AuthPrivate$, which is a sequence of @@ -5851,20 +5924,20 @@ At the time of writing, two upgrades are planned: \NUZero, and from \Sprout to \NUZero and then \Sapling. The upgrade mechanism is described in \cite{ZIP-200}. -The content of the \NUZero upgrade is described in \cite{ZIP-201}, +The specifications of the \NUZero upgrade are described in \cite{ZIP-201}, \cite{ZIP-202}, \cite{ZIP-203}, and \cite{ZIP-143}. \NUZero and \Sapling will each be introduced in a ``bilateral hard fork''. In this kind of fork, -\begin{enumerate} +\begin{itemize} \item there is a \blockHeight at which the fork takes effect; \item \blocks and \transactions that are valid according to the post-fork rules are not valid before the forking \block; \item \blocks and \transactions that are valid according to the pre-fork rules are no longer valid in or after the forking \block. -\end{enumerate} +\end{itemize} Full support for each upgrade is indicated by a minimum version of the peer-to-peer protocol. Before the planned fork \blockHeight, @@ -5904,7 +5977,7 @@ for use by \Sapling \transactions. } -\introsection +\intropart \section{Consensus Changes from \Bitcoin} \subsection{Encoding of \Transactions} \label{txnencoding} @@ -6204,7 +6277,7 @@ $4$ & $\nBitsField$ & \type{uint32\_t} & An encoded version of the \targetThresh \header hash must be less than or equal to, in the same nBits format used by \Bitcoin. \cite{Bitc-nBits} \\ \hline -$32$ & $\nNonce$ & \type{char[32]} & An arbitrary field miners change to modify the +$32$ & $\nNonce$ & \type{char[32]} & An arbitrary field that miners can change to modify the \header hash in order to produce a hash less than or equal to the \targetThreshold. \\ \hline $3$ & $\solutionSize$ & \compactSize & The size of an Equihash solution in bytes (always $1344$). \\ \hline @@ -6315,11 +6388,10 @@ The Equihash parameters for the production and test networks are $n = 200, k = 9 The Generalized Birthday Problem is defined as follows: given a sequence $X_\barerange{1}{\mathrm{N}}$ of $n$-bit strings, find $2^k$ distinct $X_{i_j}$ such that -$\vxor{j=1}{2^k} X_{i_j} = 0$. +$\sxor{j=1}{2^k} X_{i_j} = 0$. -\introlist In Equihash, $\mathrm{N} = 2^{\frac{n}{k+1}+1}$, and the sequence $X_\barerange{1}{\mathrm{N}}$ is -derived from the \blockHeader and a nonce: +derived from the \blockHeader and a nonce. \newsavebox{\powheaderbox} \begin{lrbox}{\powheaderbox} @@ -6336,6 +6408,7 @@ derived from the \blockHeader and a nonce: Let $\powheader := \Justthebox[-11.5ex]{\powheaderbox}$ +\vspace{1ex} For $i \in \range{1}{N}$, let $X_i = \EquihashGen{n, k}(\powheader, i)$. $\EquihashGen{}$ is instantiated in \crossref{equihashgen}. @@ -6346,21 +6419,24 @@ as in \crossref{endian}. A \validEquihashSolution is then a sequence $i \typecolon \range{1}{N}^{2^k}$ that satisfies the following conditions: +\vspace{-4ex} \subparagraph{Generalized Birthday condition} $\vxor{j=1}{2^k} X_{i_j} = 0$. +\vspace{-2ex} \subparagraph{Algorithm Binding conditions} - +\vspace{-2ex} \introlist \begin{itemize} \item For all $r \in \range{1}{k\!-\!1}$, for all $w \in \range{0}{2^{k-r}\!-\!1}: - \vxor{j=1}{2^r} X_{i_{w \mult 2^r + j}}$ has $\frac{n \mult r}{k+1}$ leading zeros; and + \smash{\vxor{j=1}{2^r}} X_{i_{w \mult 2^r + j}}$ has $\frac{n \mult r}{k+1}$ leading zeros; and \item For all $r \in \range{1}{k}$, for all $w \in \range{0}{2^{k-r}\!-\!1}: i_{w \mult 2^r + 1 .. w \mult 2^r + 2^{r-1}} < i_{w \mult 2^r + 2^{r-1} + 1 .. w \mult 2^r + 2^r}$ lexicographically. \end{itemize} +\vspace{-2ex} \begin{pnotes} \item This does not include a difficulty condition, because here we are defining validity of an Equihash solution independent of difficulty. @@ -6578,10 +6654,12 @@ $\MaxBlockSubsidy$, and $\FoundersFraction$ are instantiated in \crossref{consta The \foundersReward is paid by a \transparent output in the \coinbaseTransaction, to one of $\NumFounderAddresses$ \transparent addresses, depending on the \blockHeight. -\renewcommand{\arraystretch}{0.95} +\renewcommand{\arraystretch}{1} +\vspace{1ex} For the production network, $\FounderAddressList_\barerange{\mathrm{1}}{\NumFounderAddresses}$ is: +\scalebox{0.95}{ \begin{tabular}{@{\hskip 2.5em}l@{\;}l} [& \ascii{t3Vz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd}, \ascii{t3cL9AucCajm3HXDhb5jBnJK2vapVoXsop3}, \\ & \ascii{t3fqvkzrrNaMcamkQMwAyHRjfDdM2xQvDTR}, \ascii{t3TgZ9ZT2CTSK44AnUPi6qeNaHa2eC7pUyF}, \\ @@ -6608,10 +6686,13 @@ For the production network, $\FounderAddressList_\barerange{\mathrm{1}}{\NumFoun & \ascii{t3WDhPfik343yNmPTqtkZAoQZeqA83K7Y3f}, \ascii{t3PSn5TbMMAEw7Eu36DYctFezRzpX1hzf3M}, \\ & \ascii{t3R3Y5vnBLrEn8L6wFjPjBLnxSUQsKnmFpv}, \ascii{t3Pcm737EsVkGTbhsu2NekKtJeG92mvYyoN}\, ] \end{tabular} +} %scalebox +\vspace{1ex} \introlist For the test network, $\FounderAddressList_\barerange{\mathrm{1}}{\NumFounderAddresses}$ is: +\scalebox{0.96}{ \begin{tabular}{@{\hskip 2.5em}l@{\;}l} [& \ascii{t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi}, \ascii{t2N9PH9Wk9xjqYg9iin1Ua3aekJqfAtE543}, \\ & \ascii{t2NGQjYMQhFndDHguvUw4wZdNdsssA6K7x2}, \ascii{t2ENg7hHVqqs9JwU5cgjvSbxnT2a9USNfhy}, \\ @@ -6638,8 +6719,8 @@ For the test network, $\FounderAddressList_\barerange{\mathrm{1}}{\NumFounderAdd & \ascii{t29pHDBWq7qN4EjwSEHg8wEqYe9pkmVrtRP}, \ascii{t2Ez9KM8VJLuArcxuEkNRAkhNvidKkzXcjJ}, \\ & \ascii{t2D5y7J5fpXajLbGrMBQkFg2mFN8fo3n8cX}, \ascii{t2UV2wr1PTaUiybpkV3FdSdGxUJeZdZztyt}\, ] \end{tabular} - -\renewcommand{\arraystretch}{1} +} %scalebox +\renewcommand{\arraystretch}{\defaultarraystretch} \pnote{For the test network only, the addresses from index 4 onward have been changed from what was implemented at launch. This reflects a hard fork on the test network, starting @@ -6948,7 +7029,7 @@ dependent on the position of the \noteCommitment in the \Sapling{} $\NoteAddressRand = \cm + \scalarmult{\NotePosition}{\NotePositionBase}$, where $\NotePositionBase$ is a generator independent of the generators used in $\NoteCommitSaplingAlg$. Therefore, $\NoteAddressRand$ commits uniquely -to the \note and its position, and this commitment is collision-resistant +to the \note and its position, and this commitment is \collisionResistant by the same argument used to prove collision resistance of \xPedersenHashes. Note that it is possible for two distinct \Sapling \positionedNotes (having different $\NoteAddressRand$ values and \nullifiers, but different @@ -6984,12 +7065,11 @@ The motivation for the nested construction in \Zerocash was to allow Mint transactions to be publically verified without requiring a \zeroKnowledgeProof (as described under step 3 in \cite[section 1.3]{BCG+2014}). Since \Zcash combines ``Mint'' and ``Pour'' -transactions into generalized -\notsprout{\joinSplitTransfers (for \Sprout), \sapling{or \spendTransfers and -\outputTransfers (for \Sapling)}, and each transfer always uses a \zeroKnowledgeProof\!\!, -\Zcash does not require the nesting.} -\sprout{\joinSplitTransfers, and each transfer always uses a \zeroKnowledgeProof\!\!, -it does not require the nesting.} +transactions into generalized \notsprout{\joinSplitTransfers (for \Sprout), +\sapling{or \spendTransfers and \outputTransfers (for \Sapling)}, and each +transfer always uses a \zeroKnowledgeProof\!\!, +\Zcash does not require the nesting.}\sprout{\joinSplitTransfers, +and each transfer always uses a \zeroKnowledgeProof\!\!, it does not require the nesting.} A side benefit is that this reduces the cost of computing the \noteCommitments: \notsprout{for \Sprout} it reduces the number of $\SHACompress$ evaluations needed to compute each \noteCommitment from three to two, @@ -7184,7 +7264,7 @@ $\AuthPrivate$ is $252$ bits, and $\TransmitPrivate$ is no shorter than $\AuthPr \subsection{Omission in \Zerocash security proof} \label{crprf} The abstract \Zerocash protocol requires $\PRFaddr{}$ only to be a PRF; -it is not specified to be collision-resistant. This reveals a flaw in +it is not specified to be \collisionResistant\!. This reveals a flaw in the proof of the Balance property. Suppose that an adversary finds a collision on $\PRFaddr{}$ such that @@ -7220,7 +7300,7 @@ A similar error occurs in the argument for the ``$\Adversary$ violates Condition II'' case. The flaw is not exploitable for the actual instantiations of $\PRFaddr{}$ -in \Zerocash and \SproutOrZcash, which \emph{are} collision-resistant assuming +in \Zerocash and \SproutOrZcash, which \emph{are} \collisionResistant assuming that $\SHACompress$ is. The proof can be straightforwardly repaired. The intuition is that we can rely @@ -7262,6 +7342,7 @@ distinct openings of the \noteCommitment when Condition I or II is violated. \end{itemize} +\introsection \section{Acknowledgements} The inventors of \Zerocash are Eli Ben-Sasson, Alessandro Chiesa, @@ -7294,9 +7375,18 @@ Daira Hopwood, Sean Bowe, and Jack Grigg. } -\introsection +\intropart \section{Change History} +\subparagraph{2018.0-beta-15} + +\begin{itemize} + \item Change the \texttt{Makefile} to avoid multiple reloads in PDF readers while + rebuilding the PDF. + \item Spacing and pagination improvements. +\end{itemize} + +\introlist \subparagraph{2018.0-beta-14} \begin{itemize} @@ -7316,7 +7406,7 @@ Daira Hopwood, Sean Bowe, and Jack Grigg. \sapling{ \item Change how $(\AuthSignPrivate, \AuthProvePrivate)$ are derived from the \spendingKey $\SpendingKey$ to ensure they are on the full range of $\GF{\ParamJ{r}}$. - \item Change $\PRFnr{}$ to produce output computationally indistinguishable from uniform on + \item Change $\PRF{}{\mathsf{nr}}$ to produce output computationally indistinguishable from uniform on $\GF{\ParamJ{r}}$. \item Change $\UncommittedSapling$ to be a $u$-coordinate for which there is no point on the curve. \item Appendix A updates: @@ -7344,7 +7434,7 @@ Daira Hopwood, Sean Bowe, and Jack Grigg. } \sapling{ \item Add a section on re-randomizable signatures. - \item Add definition of $\PRFnr{}$. + \item Add definition of $\PRF{}{\mathsf{nr}}$. \item Work-in-progress on \Sapling statements. \item Rename \quotedterm{raw} to \quotedterm{homomorphic} \xPedersenCommitments. \item Add packing modulo the field size and range checks to Appendix A. @@ -7377,7 +7467,7 @@ Daira Hopwood, Sean Bowe, and Jack Grigg. \sapling{ \item Refer to \NUZero and \Sapling just as ``upgrades'' in the abstract, not as the next ``minor version'' and ``major version''. - \item $\PRFnr{}$ must be collision-resistant. + \item $\PRF{}{\mathsf{nr}}$ must be \collisionResistant\!. \item Correct an error in the \xPedersenHash specification. \item Use a named variable, $c$, for chunks per segment in the \xPedersenHash specification, and change its value from $61$ to $63$. Add a proof @@ -7805,7 +7895,7 @@ Daira Hopwood, Sean Bowe, and Jack Grigg. \item Clarify endianness, and that uses of $\BlakeTwobGeneric$ are unkeyed. \item Minor correction to what \sighashTypes cover. \item Add ``as intended for the \Zcash release of summer 2016" to title page. - \item Require $\PRFaddr{}$ to be collision-resistant (see \crossref{crprf}). + \item Require $\PRFaddr{}$ to be \collisionResistant (see \crossref{crprf}). \item Add specification of path computation for the \incrementalMerkleTree. \item Add a note in \crossref{sproutmerklepathvalidity} about how this condition corresponds to conditions in the \Zerocash paper. @@ -7820,6 +7910,7 @@ Daira Hopwood, Sean Bowe, and Jack Grigg. \end{itemize} +\intropart \section{References} \begingroup @@ -7831,7 +7922,7 @@ Daira Hopwood, Sean Bowe, and Jack Grigg. \notsprout{ -\introsection +\intropart \vspace{20ex} \appendix \phantomsection @@ -7994,17 +8085,17 @@ boolean-constrained, can be implemented as: Since only nonzero elements of $\GF{\ParamS{r}}$ have a multiplicative inverse, the assertion $a \neq 0$ can be implemented by witnessing the inverse, -$\ainv = a^{-1} \pmod{\ParamS{r}}$: +$\Inv{a} = a^{-1} \pmod{\ParamS{r}}$: \begin{formulae} - \item $\constraint{\ainv}{a}{1}$ + \item $\constraint{\Inv{a}}{a}{1}$ \end{formulae} A global optimization allows to use a single inverse computation outside the circuit for any number of nonzero constraints. Suppose that we have $n$ variables (or \linearCombinations) that are supposed to be nonzero: $a_\barerange{0}{n-1}$. Multiply these together (using $n\!-\!1$ constraints) -to give $a^* = \vproduct{i=0}{n-1} a_i$; then, constrain $a^*$ to be nonzero. +to give $a^* = \sproduct{i=0}{n-1} a_i$; then, constrain $a^*$ to be nonzero. This works because the product $a^*$ is nonzero if and only if all of $a_\barerange{0}{n-1}$ are nonzero. @@ -8081,7 +8172,7 @@ Let $a = \vsum{i=0}{n-1} a_i \mult 2^i$, and suppose we want to constrain $a \leq c$ for some \emph{constant} $c = \vsum{i=0}{n-1} c_i \mult 2^i$. Without loss of generality we can assume that $c_{n-1} = 1$, because if it -were not then we would reduce $n$. +were not then we would decrease $n$ accordingly. Note that since $a$ and $c$ are provided in binary representation, their bit length $n$ is not limited by the field element size. We \emph{do not} assume @@ -8091,12 +8182,14 @@ Suppose $c$ has $k$ bits set to $1$, and let $j_\barerange{0}{k-1}$ be the indices of those bits in ascending order. Let $t$ be the minimum of $k-1$ and the number of trailing $1$ bits in $c$. +\introlist Let $\Pi_{j_{k-1}} = a_{j_{k-1}}$. For $z \in \range{t}{k-2}$, constrain: \begin{formulae} \item $\constraint{\Pi_{j_{z+1}}}{a_{j_z}}{\Pi_{j_z}}$ \end{formulae} +\introlist For $i \in \range{0}{n-1}$: \begin{itemize} \item if $c_i = 0$, constrain $\constraint{1 - \Pi_{j_z} - a_i}{a_i}{0}$ where $j_z$ is the least element of $j$ greater than $i$; @@ -8384,7 +8477,7 @@ also, the $u$-coordinate of the result is zero if-and-only-if the intermediate v $A$ is zero. \begin{formulae} - \item // Curve check. + \item // Curve equation check. \item $\constraint{u}{u}{uu}$ \item $\constraint{\varv}{\varv}{\varvv}$ \item $\constraint{\ParamJ{d} \smult uu}{\varvv}{\ParamJ{a} \smult uu + \varvv - 1}$ @@ -8456,8 +8549,8 @@ $750$ constraints. \pnote{ It would be more efficient to use arithmetic on the Montgomery curve, as in \crossref{cctpedersenhash}. However since there are only three instances of -fixed-base scalar multiplication in the \spendCircuit and two in the \outputCircuit -\footnote{A Pedersen commitment uses fixed-base scalar multiplication as a subcomponent.}, +fixed-base scalar multiplication in the \spendCircuit and two in the +\outputCircuit\footnote{A Pedersen commitment uses fixed-base scalar multiplication as a subcomponent.}, the additional complexity was not considered justified for \Sapling. } @@ -8476,7 +8569,7 @@ Given $k = \vsum{i=0}{250} k_i \smult 2^i$, we calculate $R = \scalarmult{k}{B}$ \item let $\Base^u_0 = \SelectuOf{B}$ \item let $\Base^{\vv}_0\hairspace = B_{\vv}$ \item let $\Acc^u_0 = k_0 \bchoose B^u : 0$ - \item let $\Acc^{\vv}\_0hairspace = k_0 \bchoose B^{\vv} : 1$ + \item let $\Acc^{\vv}_0\hairspace = k_0 \bchoose B^{\vv} : 1$ \vspace{1ex} \item for $i$ from $1$ up to $250$: \item \tab let $\Base_i = \scalarmult{2}{\Base_{i-1}}$ @@ -8674,7 +8767,7 @@ The unpacking need not be canonical in the sense discussed in \crossref{cctmodpa that is, it is \emph{not} necessary to ensure that the previous-layer or sibling bit-sequence inputs represent integers in the range $\range{0}{\ParamS{r}-1}$. Since the root of the Merkle tree is calculated outside the circuit using the -canonical representations, and since the \xPedersenHashes are collision-resistant +canonical representations, and since the \xPedersenHashes are \collisionResistant on arbitrary bit-sequence inputs, an attempt by an adversarial prover to use a non-canonical input would result in the wrong root being calculated, and the overall path check would fail. @@ -8727,11 +8820,11 @@ as follows: \begin{formulae} \item $\HomomorphicPedersenCommit{\ValueCommitRand}(D, \Value) = - \scalarmult{\Value}{\FindGroupJHashOf{D, \ascii{v}}} + \scalarmult{\ValueCommitRand}{\FindGroupJHashOf{D, \ascii{r}}}$ + \scalarmult{\Value}{\FindGroupJHashOf{D, \ascii{v}}} + \scalarmult{\ValueCommitRand}{\FindGroupJHashOf{D, \ascii{r}}}$ \end{formulae} -In the case that we need for $\ValueCommit{}$, $\Value$ has $64$ bits -\footnote{It would be sufficient to use $51$ bits, which accomodates the range +In the case that we need for $\ValueCommit{}$, $\Value$ has $64$ +bits\footnote{It would be sufficient to use $51$ bits, which accomodates the range $\range{0}{\MAXMONEY}$, but the \Sapling circuit uses $64$.}. This can be straightforwardly implemented in ... constraints. diff --git a/protocol/zcash.bib b/protocol/zcash.bib index 3c668aa5..09ad72c0 100644 --- a/protocol/zcash.bib +++ b/protocol/zcash.bib @@ -131,7 +131,7 @@ Proceedings of the 9th International Conference on Theory and Practice in Public title={High-speed high-security signatures}, journal={Journal of Cryptographic Engineering}, volume={2}, - pages={77-89}, + pages={77--89}, date={2011-09-26}, url={http://cr.yp.to/papers.html#ed25519}, urldate={2016-08-14}, @@ -315,7 +315,7 @@ L. Hernández Encinas and C. Sánchez Ávila}, (23--25 August 2010, Atlanta, GA, USA, 23--25 August 2010)}, isbn={978-1-4244-7407-3}, year={2010}, - pages={1-4}, + pages={1--4}, publisher={IEEE}, doi={10.1109/ISIAS.2010.5604194}, url={https://digital.csic.es/bitstream/10261/32674/1/Gayoso_A%20Comparison%20of%20the%20Standardized%20Versions%20of%20ECIES.pdf}, @@ -731,7 +731,7 @@ generic composition paradigm}, month={February}, year={2004}, publisher={TarcherPerigee}, - pages={109-110}, + pages={109--110}, isbn={1-58542-206-1} }