Cosmetics (vertical spacing for the non-NU5 spec).

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood 2021-05-14 13:28:47 +01:00
parent 79d1a477db
commit c5589648c1
1 changed files with 20 additions and 6 deletions

View File

@ -7515,7 +7515,7 @@ from $\TransmitPlaintext{}$
\item A previous version of this specification did not have the requirement for the decoded point \item A previous version of this specification did not have the requirement for the decoded point
$\DiversifiedTransmitPublic$ of a \Sapling \note to be in the subgroup $\DiversifiedTransmitPublic$ of a \Sapling \note to be in the subgroup
\smash{$\SubgroupJ$ (i.e.\ ``if ... $\DiversifiedTransmitPublic \not\in \SubgroupJ$}, return $\bot$''). \smash{$\SubgroupJ$ (i.e.\ ``if ... $\DiversifiedTransmitPublic \not\in \SubgroupJ$}, return $\bot$'').
That did not match the implementation in \zcashd\rlap{.}\introlist\vspace{-0.5ex} That did not match the implementation in \zcashd.\!\introlist\vspace{-0.5ex}
\item As explained in the note in \crossref{jubjub}, $\abstJ$ accepts \nonCanonicalPoint \item As explained in the note in \crossref{jubjub}, $\abstJ$ accepts \nonCanonicalPoint
compressed encodings of \jubjubCurve points. Therefore, an implementation \MUST use the original compressed encodings of \jubjubCurve points. Therefore, an implementation \MUST use the original
$\ephemeralKey$ field as encoded in the \transaction as input to $\PRFock{}{}$ and $\KDF{Sapling}$, $\ephemeralKey$ field as encoded in the \transaction as input to $\PRFock{}{}$ and $\KDF{Sapling}$,
@ -13214,6 +13214,7 @@ fully defined in the Bitcoin documentation \cite{Bitcoin-nBits}, and so we defin
\end{formulae} \end{formulae}
\introlist \introlist
\vspace{-2ex}
\lsubsubsection{Definition of Work}{workdef} \lsubsubsection{Definition of Work}{workdef}
As explained in \crossref{blockchain}, a node chooses the ``best'' \blockChain As explained in \crossref{blockchain}, a node chooses the ``best'' \blockChain
@ -13226,6 +13227,7 @@ in its \blockHeader is defined as $\floor{\hfrac{2^{256}}{\ToTarget(\nBits) + 1}
\introlist \introlist
\vspace{-2ex}
\lsubsection{Calculation of Block Subsidy\notbeforecanopy{, Funding Streams,} and Founders' Reward}{subsidies} \lsubsection{Calculation of Block Subsidy\notbeforecanopy{, Funding Streams,} and Founders' Reward}{subsidies}
\crossref{subsidyconcepts} defines the \blockSubsidy, \minerSubsidy,\notcanopy{ and} \foundersReward\canopy{, and \fundingStreams}. \crossref{subsidyconcepts} defines the \blockSubsidy, \minerSubsidy,\notcanopy{ and} \foundersReward\canopy{, and \fundingStreams}.
@ -13256,12 +13258,12 @@ and $\FoundersFraction$ be as defined in \crossref{constants}.
\end{cases}$ \end{cases}$
\vspace{1ex} \vspace{1ex}
\item $\BlockSubsidy(\BlockHeight \typecolon \Nat) := \begin{cases} \item $\BlockSubsidy(\BlockHeight \typecolon \Nat) := \begin{cases}
\SlowStartRate \mult \BlockHeight,&\caseif \BlockHeight < \SlowStartShift \\[1.4ex] \SlowStartRate \mult \BlockHeight,&\caseif \BlockHeight < \SlowStartShift \\[1.2ex]
\SlowStartRate \mult (\BlockHeight + 1),&\caseif \SlowStartShift \leq \BlockHeight \\[-0.8ex] \SlowStartRate \mult (\BlockHeight + 1),&\caseif \SlowStartShift \leq \BlockHeight \\[-0.8ex]
&\text{ and } \BlockHeight < \SlowStartInterval \\[1.4ex] &\text{ and } \BlockHeight < \SlowStartInterval \\[1.2ex]
\floor{\hfrac{\MaxBlockSubsidy}{2^{\Halving(\BlockHeight)}}}\kern-0.25em,&\notblossom{\caseotherwise}\notbeforeblossom{\caseif \SlowStartInterval \leq \BlockHeight} \\[-1.4ex] \floor{\hfrac{\MaxBlockSubsidy}{2^{\Halving(\BlockHeight)}}}\kern-0.25em,&\notblossom{\caseotherwise}\notbeforeblossom{\caseif \SlowStartInterval \leq \BlockHeight} \\[-1.4ex]
\notbeforeblossom { \notbeforeblossom {
&\blossom{\text{ and not } \IsBlossomActivated(\BlockHeight)}\! \\[1.4ex] &\blossom{\text{ and not } \IsBlossomActivated(\BlockHeight)}\! \\[1.2ex]
\blossom{\floor{\hfrac{\MaxBlockSubsidy}{\BlossomPoWTargetSpacingRatio \mult 2^{\Halving(\BlockHeight)}}}\kern-0.25em,}&\blossom{\caseotherwise} \blossom{\floor{\hfrac{\MaxBlockSubsidy}{\BlossomPoWTargetSpacingRatio \mult 2^{\Halving(\BlockHeight)}}}\kern-0.25em,}&\blossom{\caseotherwise}
} %notbeforeblossom } %notbeforeblossom
\end{cases}$ \end{cases}$
@ -13398,7 +13400,7 @@ Let $\FounderRedeemScriptHash(\BlockHeight \typecolon \Nat)$ be the standard red
\cite{Bitcoin-Multisig}, for the P2SH multisig address with \BaseFiftyEightCheck form \cite{Bitcoin-Multisig}, for the P2SH multisig address with \BaseFiftyEightCheck form
given by $\FounderAddressList_{\,\FounderAddressIndex(\BlockHeight)}$. given by $\FounderAddressList_{\,\FounderAddressIndex(\BlockHeight)}$.
\vspace{-1ex} \vspace{-1.5ex}
\consensusrule{\precanopy{ \consensusrule{\precanopy{
A \coinbaseTransaction at $\BlockHeight \in \range{1}{\FoundersRewardLastBlockHeight}$ A \coinbaseTransaction at $\BlockHeight \in \range{1}{\FoundersRewardLastBlockHeight}$
\MUST include at least one output that pays exactly $\FoundersReward(\BlockHeight)$ \zatoshi \MUST include at least one output that pays exactly $\FoundersReward(\BlockHeight)$ \zatoshi
@ -13406,32 +13408,40 @@ with a standard P2SH script of the form \ScriptOP{HASH160} \;$\FounderRedeemScri
as its $\scriptPubKey$. as its $\scriptPubKey$.
}} }}
\vspace{1ex} \vspace{0.5ex}
\begin{pnotes} \begin{pnotes}
\vspace{-0.25ex}
\item No \foundersReward is required to be paid for $\BlockHeight > \FoundersRewardLastBlockHeight$ \item No \foundersReward is required to be paid for $\BlockHeight > \FoundersRewardLastBlockHeight$
(i.e.\ after the first \halving), or for $\BlockHeight = 0$ (i.e.\ the \genesisBlock)\canopy{, or after \Canopy activation}. (i.e.\ after the first \halving), or for $\BlockHeight = 0$ (i.e.\ the \genesisBlock)\canopy{, or after \Canopy activation}.
\vspace{-0.25ex}
\item The \foundersReward addresses are not treated specially in any other way, and \item The \foundersReward addresses are not treated specially in any other way, and
there can be other outputs to them, in \coinbaseTransactions or otherwise. there can be other outputs to them, in \coinbaseTransactions or otherwise.
In particular, it is valid for a \coinbaseTransaction with In particular, it is valid for a \coinbaseTransaction with
$\BlockHeight \in \range{1}{\FoundersRewardLastBlockHeight}$ to have $\BlockHeight \in \range{1}{\FoundersRewardLastBlockHeight}$ to have
other outputs, possibly to the same address, that do not meet the criterion other outputs, possibly to the same address, that do not meet the criterion
in the above consensus rule, as long as at least one output meets it. in the above consensus rule, as long as at least one output meets it.
\vspace{-0.25ex}
\item The assertion $\FounderAddressIndex(\FoundersRewardLastBlockHeight) \leq \NumFounderAddresses$ \item The assertion $\FounderAddressIndex(\FoundersRewardLastBlockHeight) \leq \NumFounderAddresses$
holds, ensuring that the \foundersReward address index remains in range for the holds, ensuring that the \foundersReward address index remains in range for the
whole period in which the \foundersReward is paid. whole period in which the \foundersReward is paid.
\end{pnotes} \end{pnotes}
\blossom{ \blossom{
\vspace{-0.75ex}
\begin{nnotes} \begin{nnotes}
\vspace{-0.25ex}
\blossomonwarditem{$\FoundersRewardLastBlockHeight = 1046399$.} \blossomonwarditem{$\FoundersRewardLastBlockHeight = 1046399$.}
\vspace{-0.25ex}
\item \Blossom is not intended to change the total \foundersReward or the effective period over which \item \Blossom is not intended to change the total \foundersReward or the effective period over which
it is paid. it is paid.
\end{nnotes} \end{nnotes}
} %blossom } %blossom
\canopy{ \canopy{
\vspace{-2ex}
\lsubsection{Payment of Funding Streams}{fundingstreams} \lsubsection{Payment of Funding Streams}{fundingstreams}
\vspace{-1ex}
The \defining{\fundingStreams} are paid by outputs in the \coinbaseTransaction, to one of a pre-defined The \defining{\fundingStreams} are paid by outputs in the \coinbaseTransaction, to one of a pre-defined
set of addresses, depending on the \blockHeight. set of addresses, depending on the \blockHeight.
@ -13439,9 +13449,12 @@ A \fundingStream $\fs$ is defined by a \blockSubsidy fraction (represented as a
denominator), a start \blockHeight (inclusive), an end \blockHeight (exclusive), and a sequence denominator), a start \blockHeight (inclusive), an end \blockHeight (exclusive), and a sequence
of address representations: of address representations:
\introlist
\begin{formulae} \begin{formulae}
\item $\fsNumerator \typecolon \PosInt$ \item $\fsNumerator \typecolon \PosInt$
\vspace{-0.25ex}
\item $\fsDenominator \typecolon \PosInt$ \item $\fsDenominator \typecolon \PosInt$
\vspace{-0.25ex}
\item $\fsStartHeight \typecolon \Nat$ \item $\fsStartHeight \typecolon \Nat$
\item $\fsEndHeight \typecolon \Nat$ \item $\fsEndHeight \typecolon \Nat$
\vspace{-1ex} \vspace{-1ex}
@ -13472,6 +13485,7 @@ or a \Sapling \shieldedPaymentAddress as specified in \crossref{saplingpaymentad
Recall from \crossref{subsidies} the definition of $\fsValue$. A \fundingStream $\fs$ is Recall from \crossref{subsidies} the definition of $\fsValue$. A \fundingStream $\fs$ is
``active'' at \blockHeight $\BlockHeight$ when $\fsValue(\BlockHeight) > 0$. ``active'' at \blockHeight $\BlockHeight$ when $\fsValue(\BlockHeight) > 0$.
\introlist
\consensusrule{ \consensusrule{
\canopyonward{ \canopyonward{
The \coinbaseTransaction at \blockHeight $\BlockHeight$ \MUST contain at least The \coinbaseTransaction at \blockHeight $\BlockHeight$ \MUST contain at least