mirror of https://github.com/zcash/zips.git
Cosmetics (vertical spacing for the non-NU5 spec).
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
parent
79d1a477db
commit
c5589648c1
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue