mirror of https://github.com/zcash/zips.git
Specify a retrospective soft fork implemented in zcashd v2.1.1-1 that limits the nTime field
of a block relative to its median-time-past. Correct the definition of median-time-past for the first PoWMedianBlockSpan blocks in a chain. Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
parent
ed6baf0fef
commit
0d582758dd
|
@ -873,6 +873,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg
|
||||||
\newcommand{\activationHeight}{\term{activation block height}}
|
\newcommand{\activationHeight}{\term{activation block height}}
|
||||||
\newcommand{\activationHeights}{\terms{activation block height}}
|
\newcommand{\activationHeights}{\terms{activation block height}}
|
||||||
\newcommand{\genesisBlock}{\term{genesis block}}
|
\newcommand{\genesisBlock}{\term{genesis block}}
|
||||||
|
\newcommand{\medianTimePast}{\term{median-time-past}}
|
||||||
\newcommand{\transaction}{\term{transaction}}
|
\newcommand{\transaction}{\term{transaction}}
|
||||||
\newcommand{\transactions}{\terms{transaction}}
|
\newcommand{\transactions}{\terms{transaction}}
|
||||||
\newcommand{\Transaction}{\titleterm{Transaction}}
|
\newcommand{\Transaction}{\titleterm{Transaction}}
|
||||||
|
@ -9032,6 +9033,11 @@ the consensus protocol.
|
||||||
Let $\ThresholdBits$ be as defined in \crossref{diffadjustment}, and let $\PoWMedianBlockSpan$
|
Let $\ThresholdBits$ be as defined in \crossref{diffadjustment}, and let $\PoWMedianBlockSpan$
|
||||||
be the constant defined in \crossref{constants}.
|
be the constant defined in \crossref{constants}.
|
||||||
|
|
||||||
|
\defining{Define the \medianTimePast of a \block to be the median (as defined in \crossref{diffadjustment})
|
||||||
|
of the $\nTimeField$ fields of the \emph{preceding} $\PoWMedianBlockSpan$ \blocks (or all
|
||||||
|
preceding \blocks if there are fewer than $\PoWMedianBlockSpan$). The \medianTimePast of a
|
||||||
|
\genesisBlock is not defined.}
|
||||||
|
|
||||||
\vspace{2ex}
|
\vspace{2ex}
|
||||||
\begin{consensusrules}
|
\begin{consensusrules}
|
||||||
\item The \blockVersionNumber{} \MUST be greater than or equal to $4$.
|
\item The \blockVersionNumber{} \MUST be greater than or equal to $4$.
|
||||||
|
@ -9039,8 +9045,11 @@ be the constant defined in \crossref{constants}.
|
||||||
$\ThresholdBits(\BlockHeight)$.
|
$\ThresholdBits(\BlockHeight)$.
|
||||||
\item The \block{} \MUST pass the difficulty filter defined in \crossref{difficulty}.
|
\item The \block{} \MUST pass the difficulty filter defined in \crossref{difficulty}.
|
||||||
\item $\solution$ \MUST represent a \validEquihashSolution as defined in \crossref{equihash}.
|
\item $\solution$ \MUST represent a \validEquihashSolution as defined in \crossref{equihash}.
|
||||||
\item $\nTimeField$ \MUST be strictly greater than the median time of the previous
|
\item For each \block other than the \genesisBlock, $\nTimeField$ \MUST be strictly greater
|
||||||
$\PoWMedianBlockSpan$ \blocks.
|
than the \medianTimePast of that \block.
|
||||||
|
\item For each \block at \blockHeight $2$ or greater on the production network, or \blockHeight
|
||||||
|
$653606$ or greater on the test network, $\nTimeField$ \MUST be less than or equal to
|
||||||
|
the \medianTimePast of that \block plus $90 \mult 60$ seconds.
|
||||||
\item The size of a \block{} \MUST be less than or equal to $2000000$ bytes.
|
\item The size of a \block{} \MUST be less than or equal to $2000000$ bytes.
|
||||||
\saplingonwarditem{$\hashFinalSaplingRoot$ \MUST be $\LEBStoOSPOf{256}{\rt}$ where
|
\saplingonwarditem{$\hashFinalSaplingRoot$ \MUST be $\LEBStoOSPOf{256}{\rt}$ where
|
||||||
$\rt$ is the \merkleRoot of the \Sapling{} \noteCommitmentTree for the final
|
$\rt$ is the \merkleRoot of the \Sapling{} \noteCommitmentTree for the final
|
||||||
|
@ -9078,6 +9087,10 @@ rejected by this rule at a given point in time may later be accepted.
|
||||||
the median of the timestamps of the past $\PoWMedianBlockSpan$ \blocks. The
|
the median of the timestamps of the past $\PoWMedianBlockSpan$ \blocks. The
|
||||||
Bitcoin Developer Reference \cite{Bitcoin-Block} was previously in error on this point,
|
Bitcoin Developer Reference \cite{Bitcoin-Block} was previously in error on this point,
|
||||||
but has now been corrected.
|
but has now been corrected.
|
||||||
|
\item The rule limiting $\nTimeField$ to be no later than $90 \mult 60$ seconds after the
|
||||||
|
\medianTimePast is a retrospective consensus change, applied as a soft fork in
|
||||||
|
\zcashd v2.1.1-1. It had not been violated by any \block from the given \blockHeights
|
||||||
|
in the consensus \blockchains of either the production or test networks.
|
||||||
\overwinter{
|
\overwinter{
|
||||||
\item There are no changes to the \blockVersionNumber or format for \Overwinter.
|
\item There are no changes to the \blockVersionNumber or format for \Overwinter.
|
||||||
}
|
}
|
||||||
|
@ -10251,6 +10264,10 @@ Peter Newell's illustration of the Jubjub bird, from \cite{Carroll1902}.
|
||||||
\historyentry{2020.1.0}{2020-02-06}
|
\historyentry{2020.1.0}{2020-02-06}
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
\item Specify a retrospective soft fork implemented in \zcashd v2.1.1-1 that
|
||||||
|
limits the $\nTimeField$ field of a \block relative to its \medianTimePast.
|
||||||
|
\item Correct the definition of \medianTimePast for the first $\PoWMedianBlockSpan$
|
||||||
|
\blocks in a \blockchain.
|
||||||
\item Add acknowledgements to Henry de Valence, Deirdre Connolly, Chelsea Komlo,
|
\item Add acknowledgements to Henry de Valence, Deirdre Connolly, Chelsea Komlo,
|
||||||
and Zancas Wilcox.
|
and Zancas Wilcox.
|
||||||
\item Add an acknowledgement to Trail of Bits for their security audit.
|
\item Add an acknowledgement to Trail of Bits for their security audit.
|
||||||
|
@ -13165,7 +13182,7 @@ the cost of batched verification is therefore
|
||||||
\listtheorems{theorem,lemma}
|
\listtheorems{theorem,lemma}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
\needspace{30ex}
|
||||||
\phantompart{Index}{index}
|
\phantompart{Index}{index}
|
||||||
|
|
||||||
\begin{flushleft}
|
\begin{flushleft}
|
||||||
|
|
Loading…
Reference in New Issue