Explicitly state the consensus rule that a coinbase transaction must not spend more than is available from the block subsidy and transaction fees.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood 2020-08-30 21:07:34 +01:00
parent c7180872a3
commit 4d00112f5d
1 changed files with 13 additions and 2 deletions

View File

@ -9118,6 +9118,10 @@ $\versionField \geq 4$ and $\nShieldedSpend + \nShieldedOutput > 0$.
\end{itemize}}
\saplingonwarditem{If $\versionField \geq 4$ and $\nShieldedSpend + \nShieldedOutput = 0$,
then $\valueBalance$ \MUST be $0$.}
\item The total amount of \transparentOutputs from a \coinbaseTransaction,\heartwood{ minus
the amount of the $\valueBalance$ field if present,} \MUSTNOT be greater than the
amount of \minerSubsidy plus the total amount of \transactionFees paid by \transactions
in this \block.
\notheartwood{
\item A \coinbaseTransaction{} \MUSTNOT have any
\joinSplitDescriptions\sapling{, \spendDescriptions, or \outputDescriptions}.
@ -9182,6 +9186,11 @@ each \spendDescription (\crossref{spendencoding}), and each \outputDescription (
\Bitcoin, where it is associated with support for \ScriptOP{CHECKSEQUENCEVERIFY}
as specified in \cite{BIP-68}. \Zcash was forked from \Bitcoin v0.11.2
and does not currently support BIP 68.
\saplingonwarditem{As a consequence of \coinbaseTransactions having no
\spendDescriptions\notheartwood{ or \outputDescriptions}, the $\valueBalance$ field of a
\coinbaseTransaction must have a\heartwood{ negative or} zero value.
\heartwood{The negative case can only occur after \Heartwood activation, for \transactions
with \cite{ZIP-213} \shieldedOutputs.}}
\heartwood{
\item Prior to the \Heartwood{} \networkUpgrade, it was not possible for \coinbaseTransactions
to have \shielded outputs, and therefore the ``coinbase maturity'' rule and the requirement
@ -10836,9 +10845,11 @@ Peter Newell's illustration of the Jubjub bird, from \cite{Carroll1902}.
\lsection{Change History}{changehistory}
\historyentry{2020.1.14}{}
\historyentry{2020.1.14}{2020-08-19}
\begin{itemize}
\item No changes to \Sprout.
\item The consensus rule that a \coinbaseTransaction must not spend more than is
available from the \blockSubsidy and \transactionFees, was not explicitly stated.
(This rule was correctly implemented in \zcashd.)
\sapling{
\item Fix a type error in the output of $\PRFnfSapling{}$; a \Sapling \nullifier is a
sequence of $32$ bytes, not a bit sequence.