Add a consensus rule in \crossref{merkletree} that a block MUST NOT add note commitments that

exceed the capacity of each of the Sprout, Sapling, and Orchard note commitment trees.

Also add a cross-reference for constants used in \crossref{merkletree}.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood 2021-07-29 17:27:23 +01:00
parent 8b8761b302
commit a6fd0153d2
1 changed files with 25 additions and 0 deletions

View File

@ -3559,6 +3559,10 @@ the same \transaction.
\introsection
\lsubsection{Note Commitment Trees}{merkletree}
Let $\MerkleHashLength{Sprout}$, $\MerkleDepth{Sprout}$\sapling{, $\MerkleHashLength{Sapling}$,\notnufive{ and }
$\MerkleDepth{Sapling}$}\nufive{, $\MerkleHashLength{Orchard}$, and $\MerkleDepth{Orchard}$} be as
defined in \crossref{constants}.
\vspace{-2ex}
\begin{center}
\includegraphics[scale=.4]{incremental_merkle}
@ -3587,6 +3591,19 @@ The \merkleIndex of a \notesCommitment at the leafmost layer
($\MerkleDepth{Sprout}$\sapling{ or $\MerkleDepth{Sapling}$}\nufive{ or $\MerkleDepth{Orchard}$})
is called its \defining{\notePosition}.
\begin{consensusrules}
\item A \block \MUSTNOT add \Sprout \noteCommitments that would result in the
\Sprout \noteCommitmentTree exceeding its capacity of $2^{\MerkleDepth{Sprout}}$
\merkleLeafNodes.
\saplingonwarditem{A \block \MUSTNOT add \Sapling \noteCommitments that would result in the
\Sapling \noteCommitmentTree exceeding its capacity of $2^{\MerkleDepth{Sapling}}$
\merkleLeafNodes.}
\nufiveonwarditem{A \block \MUSTNOT add \Orchard \noteCommitments that would result in the
\Orchard \noteCommitmentTree exceeding its capacity of $2^{\MerkleDepth{Orchard}}$
\merkleLeafNodes.}
\end{consensusrules}
\lsubsection{Nullifier Sets}{nullifierset}
Each \fullValidator maintains a \defining{\nullifierSet} logically associated with
@ -14473,6 +14490,14 @@ Peter Newell's illustration of the Jubjub bird, from \cite{Carroll1902}.
\lsection{Change History}{changehistory}
\historyentry{2021.2.13}{2021-07-29}
\begin{itemize}
\item Add consensus rules in \crossref{merkletree} that a \block \MUSTNOT add
\noteCommitments that exceed the capacity of any of the \Sprout\sapling{ and
\Sapling}\nufive{ and \Orchard} \noteCommitmentTrees.
\end{itemize}
\historyentry{2021.2.12}{2021-07-29}
\begin{itemize}
\nufive{