zcash_primitives: Add Network Upgrade 6 to `consensus::NetworkUpgrade` (#1048)

Co-authored-by: Jack Grigg <jack@electriccoin.co>
This commit is contained in:
Tomek Piotrowski 2023-12-04 15:41:41 +01:00 committed by GitHub
parent 764127f952
commit 22ad737267
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 0 deletions

View File

@ -23,6 +23,7 @@ zcash_proofs.workspace = true
[features]
transparent-inputs = []
unstable-nu6 = ["zcash_primitives/unstable-nu6"]
[lib]
bench = false

View File

@ -512,6 +512,8 @@ mod tests {
NetworkUpgrade::Heartwood => Some(BlockHeight::from_u32(903_800)),
NetworkUpgrade::Canopy => Some(BlockHeight::from_u32(1_028_500)),
NetworkUpgrade::Nu5 => Some(BlockHeight::from_u32(1_200_000)),
#[cfg(feature = "unstable-nu6")]
NetworkUpgrade::Nu6 => Some(BlockHeight::from_u32(1_300_000)),
NetworkUpgrade::ZFuture => Some(BlockHeight::from_u32(1_400_000)),
}
}

View File

@ -106,6 +106,7 @@ multicore = ["bellman/multicore", "orchard/multicore"]
transparent-inputs = ["hdwallet", "ripemd", "secp256k1"]
temporary-zcashd = []
test-dependencies = ["proptest", "orchard/test-dependencies"]
unstable-nu6 = []
zfuture = []
[lib]

View File

@ -212,6 +212,8 @@ impl Parameters for MainNetwork {
NetworkUpgrade::Heartwood => Some(BlockHeight(903_000)),
NetworkUpgrade::Canopy => Some(BlockHeight(1_046_400)),
NetworkUpgrade::Nu5 => Some(BlockHeight(1_687_104)),
#[cfg(feature = "unstable-nu6")]
NetworkUpgrade::Nu6 => None,
#[cfg(feature = "zfuture")]
NetworkUpgrade::ZFuture => None,
}
@ -263,6 +265,8 @@ impl Parameters for TestNetwork {
NetworkUpgrade::Heartwood => Some(BlockHeight(903_800)),
NetworkUpgrade::Canopy => Some(BlockHeight(1_028_500)),
NetworkUpgrade::Nu5 => Some(BlockHeight(1_842_420)),
#[cfg(feature = "unstable-nu6")]
NetworkUpgrade::Nu6 => None,
#[cfg(feature = "zfuture")]
NetworkUpgrade::ZFuture => None,
}
@ -393,6 +397,11 @@ pub enum NetworkUpgrade {
///
/// [Nu5]: https://z.cash/upgrade/nu5/
Nu5,
/// The [Nu6] network upgrade.
///
/// [Nu6]: https://z.cash/upgrade/nu6/
#[cfg(feature = "unstable-nu6")]
Nu6,
/// The ZFUTURE network upgrade.
///
/// This upgrade is expected never to activate on mainnet;
@ -413,6 +422,8 @@ impl fmt::Display for NetworkUpgrade {
NetworkUpgrade::Heartwood => write!(f, "Heartwood"),
NetworkUpgrade::Canopy => write!(f, "Canopy"),
NetworkUpgrade::Nu5 => write!(f, "Nu5"),
#[cfg(feature = "unstable-nu6")]
NetworkUpgrade::Nu6 => write!(f, "Nu6"),
#[cfg(feature = "zfuture")]
NetworkUpgrade::ZFuture => write!(f, "ZFUTURE"),
}
@ -428,6 +439,8 @@ impl NetworkUpgrade {
NetworkUpgrade::Heartwood => BranchId::Heartwood,
NetworkUpgrade::Canopy => BranchId::Canopy,
NetworkUpgrade::Nu5 => BranchId::Nu5,
#[cfg(feature = "unstable-nu6")]
NetworkUpgrade::Nu6 => BranchId::Nu6,
#[cfg(feature = "zfuture")]
NetworkUpgrade::ZFuture => BranchId::ZFuture,
}
@ -445,6 +458,8 @@ const UPGRADES_IN_ORDER: &[NetworkUpgrade] = &[
NetworkUpgrade::Heartwood,
NetworkUpgrade::Canopy,
NetworkUpgrade::Nu5,
#[cfg(feature = "unstable-nu6")]
NetworkUpgrade::Nu6,
];
pub const ZIP212_GRACE_PERIOD: u32 = 32256;
@ -478,6 +493,9 @@ pub enum BranchId {
Canopy,
/// The consensus rules deployed by [`NetworkUpgrade::Nu5`].
Nu5,
/// The consensus rules deployed by [`NetworkUpgrade::Nu6`].
#[cfg(feature = "unstable-nu6")]
Nu6,
/// Candidates for future consensus rules; this branch will never
/// activate on mainnet.
#[cfg(feature = "zfuture")]
@ -498,6 +516,8 @@ impl TryFrom<u32> for BranchId {
0xf5b9_230b => Ok(BranchId::Heartwood),
0xe9ff_75a6 => Ok(BranchId::Canopy),
0xc2d6_d0b4 => Ok(BranchId::Nu5),
#[cfg(feature = "unstable-nu6")]
0xc8e7_1055 => Ok(BranchId::Nu6),
#[cfg(feature = "zfuture")]
0xffff_ffff => Ok(BranchId::ZFuture),
_ => Err("Unknown consensus branch ID"),
@ -515,6 +535,8 @@ impl From<BranchId> for u32 {
BranchId::Heartwood => 0xf5b9_230b,
BranchId::Canopy => 0xe9ff_75a6,
BranchId::Nu5 => 0xc2d6_d0b4,
#[cfg(feature = "unstable-nu6")]
BranchId::Nu6 => 0xc8e7_1055,
#[cfg(feature = "zfuture")]
BranchId::ZFuture => 0xffff_ffff,
}
@ -587,6 +609,8 @@ impl BranchId {
let upper = None;
(lower, upper)
}),
#[cfg(feature = "unstable-nu6")]
BranchId::Nu6 => None,
#[cfg(feature = "zfuture")]
BranchId::ZFuture => params
.activation_height(NetworkUpgrade::ZFuture)
@ -634,6 +658,8 @@ pub mod testing {
BranchId::Heartwood,
BranchId::Canopy,
BranchId::Nu5,
#[cfg(feature = "unstable-nu6")]
BranchId::Nu6,
#[cfg(feature = "zfuture")]
BranchId::ZFuture,
])

View File

@ -239,6 +239,8 @@ impl TxVersion {
TxVersion::Sapling
}
BranchId::Nu5 => TxVersion::Zip225,
#[cfg(feature = "unstable-nu6")]
BranchId::Nu6 => TxVersion::Zip225,
#[cfg(feature = "zfuture")]
BranchId::ZFuture => TxVersion::ZFuture,
}
@ -970,6 +972,8 @@ pub mod testing {
Just(TxVersion::Sapling).boxed()
}
BranchId::Nu5 => Just(TxVersion::Zip225).boxed(),
#[cfg(feature = "unstable-nu6")]
BranchId::Nu6 => Just(TxVersion::Zip225).boxed(),
#[cfg(feature = "zfuture")]
BranchId::ZFuture => Just(TxVersion::ZFuture).boxed(),
}