From c5589648c1ff5b004c768f5e3cd22d1ca1cf9c81 Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Fri, 14 May 2021 13:28:47 +0100 Subject: [PATCH] Cosmetics (vertical spacing for the non-NU5 spec). Signed-off-by: Daira Hopwood --- protocol/protocol.tex | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/protocol/protocol.tex b/protocol/protocol.tex index 3de1e5ec..a208f048 100644 --- a/protocol/protocol.tex +++ b/protocol/protocol.tex @@ -7515,7 +7515,7 @@ from $\TransmitPlaintext{}$ \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 \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 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}$, @@ -13214,6 +13214,7 @@ fully defined in the Bitcoin documentation \cite{Bitcoin-nBits}, and so we defin \end{formulae} \introlist +\vspace{-2ex} \lsubsubsection{Definition of Work}{workdef} 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 +\vspace{-2ex} \lsubsection{Calculation of Block Subsidy\notbeforecanopy{, Funding Streams,} and Founders' Reward}{subsidies} \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}$ \vspace{1ex} \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] - &\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] \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} } %notbeforeblossom \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 given by $\FounderAddressList_{\,\FounderAddressIndex(\BlockHeight)}$. -\vspace{-1ex} +\vspace{-1.5ex} \consensusrule{\precanopy{ A \coinbaseTransaction at $\BlockHeight \in \range{1}{\FoundersRewardLastBlockHeight}$ \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$. }} -\vspace{1ex} +\vspace{0.5ex} \begin{pnotes} + \vspace{-0.25ex} \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}. + \vspace{-0.25ex} \item The \foundersReward addresses are not treated specially in any other way, and there can be other outputs to them, in \coinbaseTransactions or otherwise. In particular, it is valid for a \coinbaseTransaction with $\BlockHeight \in \range{1}{\FoundersRewardLastBlockHeight}$ to have 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. + \vspace{-0.25ex} \item The assertion $\FounderAddressIndex(\FoundersRewardLastBlockHeight) \leq \NumFounderAddresses$ holds, ensuring that the \foundersReward address index remains in range for the whole period in which the \foundersReward is paid. \end{pnotes} \blossom{ +\vspace{-0.75ex} \begin{nnotes} + \vspace{-0.25ex} \blossomonwarditem{$\FoundersRewardLastBlockHeight = 1046399$.} + \vspace{-0.25ex} \item \Blossom is not intended to change the total \foundersReward or the effective period over which it is paid. \end{nnotes} } %blossom \canopy{ +\vspace{-2ex} \lsubsection{Payment of Funding Streams}{fundingstreams} +\vspace{-1ex} The \defining{\fundingStreams} are paid by outputs in the \coinbaseTransaction, to one of a pre-defined 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 of address representations: +\introlist \begin{formulae} \item $\fsNumerator \typecolon \PosInt$ + \vspace{-0.25ex} \item $\fsDenominator \typecolon \PosInt$ + \vspace{-0.25ex} \item $\fsStartHeight \typecolon \Nat$ \item $\fsEndHeight \typecolon \Nat$ \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 ``active'' at \blockHeight $\BlockHeight$ when $\fsValue(\BlockHeight) > 0$. +\introlist \consensusrule{ \canopyonward{ The \coinbaseTransaction at \blockHeight $\BlockHeight$ \MUST contain at least