diff --git a/protocol/protocol.tex b/protocol/protocol.tex index d339af06..ed3f5c5b 100644 --- a/protocol/protocol.tex +++ b/protocol/protocol.tex @@ -5099,8 +5099,8 @@ The encoding of $\joinSplitPubKey$ and the data to be signed are specified in \sproutonlyitem{The \transactionVersionNumber{} \MUST be greater than or equal to $1$.} \saplingonlyitem{The \transactionVersionNumber{} \MUST be \todo{}.} \item If $\versionField = 1$ or $\nJoinSplit = 0$, then \txInCount{} \MUSTNOT be $0$. - \item A \transaction with one or more coinbase inputs \MUST have no \transparent outputs - (i.e.\ \txOutCount{} \MUST be $0$). + \item A \transaction with one or more inputs from \coinbaseTransactions{} \MUST have no + \transparent outputs (i.e.\ \txOutCount{} \MUST be $0$). \item If $\nJoinSplit > 0$, then \joinSplitSig{} \MUST represent a valid signature over $\dataToBeSigned$ as defined in \crossref{nonmalleability}. \item If $\nJoinSplit > 0$, then \joinSplitPubKey{} \MUST represent a point of order $\ell$ @@ -5109,7 +5109,11 @@ The encoding of $\joinSplitPubKey$ and the data to be signed are specified in less than $2^{255}-19$. \sproutonlyitem{The encoded size of the \transaction{} \MUST be less than or equal to $100000$ bytes.} - \item \todo{Coinbase maturity rule.} + \item A \coinbaseTransaction{} \MUSTNOT have any + \joinSplitDescriptions\sapling{, \spendDescriptions, or \outputDescriptions}. + \item A \transaction{} \MUSTNOT spend an output of a \coinbaseTransaction + (necessarily a \transparent output) from a \block less than 100 \blocks prior + to the spend. \item \todo{Other rules inherited from \Bitcoin.} \end{consensusrules} @@ -6350,6 +6354,9 @@ Daira Hopwood, Sean Bowe, and Jack Grigg. \subparagraph{2018.0-beta-9} \begin{itemize} + \item Specify the coinbase maturity rule, and the rule that \coinbaseTransactions + cannot contain \joinSplitDescriptions\sapling{, \spendDescriptions, or + \outputDescriptions}. \nuzero{ \item Delay lifting the 100000-byte \transaction size limit from \NUZero to \Sapling.