Updates to reflect ZIP 211: add a consensus rule on v^pub_old, and a rule about node and wallet support for sending to Sprout addresses.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood 2020-08-11 13:49:36 +01:00
parent 1d71f6cb31
commit 6fbe17da59
1 changed files with 12 additions and 2 deletions

View File

@ -674,6 +674,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg
\newcommand{\SHOULDNOT}{\conformance{SHOULD NOT}}
\newcommand{\RECOMMENDED}{\conformance{RECOMMENDED}}
\newcommand{\MAY}{\conformance{MAY}}
\newcommand{\OPTIONAL}{\conformance{OPTIONAL}}
\newcommand{\ALLCAPS}{\conformance{ALL CAPS}}
\newcommand{\collisionResistant}{\termandindex{collision\hyp resistant}{collision resistance}}
@ -2059,6 +2060,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg
\newenvironment{nnotes}{\introlist\callout{}{Non-normative notes:}\begin{itemize}}{\end{itemize}}
\newcommand{\canopyonwardnnote}[1]{\canopy{\callout{[\Canopy onward]\,\,}{Non-normative note:}{#1}}}
\newcommand{\canopyonwardpnote}[1]{\canopy{\callout{[\Canopy onward]\,\,}{Note:}{#1}}}
\newcommand{\precanopypnote}[1]{\callout{\notbeforecanopy{\canopy{[Pre-\Canopy\!]\,\,}}}{Note:}{#1}}
\newcommand{\preheartwoodpnote}[1]{\callout{\notbeforeheartwood{\heartwood{[Pre-\Heartwood\!]\,\,}}}{Note:}{#1}}
\newcommand{\presaplingpnote}[1]{\callout{\notsprout{\sapling{[Pre-\ Sapling\!]\,\,}}}{Note:}{#1}}
@ -2190,7 +2192,7 @@ written in \defining{\term{slanted text}}. \emph{Italics} are used for emphasis
for references between sections of the document.
The key words \defining{\MUST, \MUSTNOT, \SHOULD,
\sprout{and \SHOULDNOT}\notsprout{\SHOULDNOT, \MAY, and \RECOMMENDED}} in
\sprout{and \SHOULDNOT}\notsprout{\SHOULDNOT, \RECOMMENDED, \MAY, and \OPTIONAL}} in
this document are to be interpreted as described in \cite{RFC-2119} when
they appear in \defining{\ALLCAPS}. These words may also appear in this document in
lower case as plain English words, absent their normative meanings.
@ -4338,10 +4340,11 @@ $\joinSplitPubKey$ of the containing \transaction:
\begin{consensusrules}
\item Elements of a \joinSplitDescription{} \MUST have the types given
above (for example: $0 \leq \vpubOld \leq \MAXMONEY$ and $0 \leq \vpubNew \leq \MAXMONEY$).
\item Either $\vpubOld$ or $\vpubNew$ \MUST be zero.
\item The proof $\Proof{\JoinSplit}$ \MUST be valid given a \primaryInput formed
from the relevant other fields and $\hSig$ --- i.e.\ $\JoinSplitVerify{}((\rt, \nfOld{\allOld},
\cmNew{\allNew},\changed{\vpubOld,} \vpubNew, \hSig, \h{\allOld}), \Proof{\JoinSplit}) = 1$.
\item Either $\vpubOld$ or $\vpubNew$ \MUST be zero.
\canopyonwarditem{$\vpubOld$ \MUST be zero.}
\end{consensusrules}
@ -4506,6 +4509,11 @@ and signs it with the private \defining{\joinSplitSigningKey}:
Then the encoded \transaction including $\joinSplitSig$ is submitted to the network.
\canopyonwardpnote{\cite{ZIP-211} specifies that nodes and wallets \MUST disable any facilities
to send to \Sprout addresses. This \SHOULD be made clear in user interfaces and API documentation.}
The facility to send to \Sprout addresses is \notbeforecanopy{in any case} \OPTIONAL for a particular
node or wallet implementation.
\sapling{
\introlist
@ -10833,6 +10841,8 @@ Peter Newell's illustration of the Jubjub bird, from \cite{Carroll1902}.
\item Set $\CanopyActivationHeight$ for \Testnet.
\item Modify the tables and notes in \crossref{zip214fundingstreams} to reflect changes in
\cite{ZIP-214}.
\item Updates to reflect \cite{ZIP-211}: add a consensus rule on $\vpubOld$ in \crossref{joinsplitdesc},
and a rule about node and wallet support for sending to \Sprout addresses in \crossref{sproutsend}.
} %canopy
\end{itemize}