Remove duplicate and redundant consensus parameter code (#4760)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
parent
f9d7451fa2
commit
2978cae54c
|
|
@ -37,7 +37,6 @@
|
||||||
mod block;
|
mod block;
|
||||||
mod checkpoint;
|
mod checkpoint;
|
||||||
mod config;
|
mod config;
|
||||||
#[allow(dead_code)]
|
|
||||||
mod parameters;
|
mod parameters;
|
||||||
mod primitives;
|
mod primitives;
|
||||||
mod script;
|
mod script;
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,6 @@
|
||||||
//! Typically, consensus parameters are accessed via a function that takes a
|
//! Typically, consensus parameters are accessed via a function that takes a
|
||||||
//! `Network` and `block::Height`.
|
//! `Network` and `block::Height`.
|
||||||
|
|
||||||
pub mod minimum_difficulty;
|
|
||||||
pub mod subsidy;
|
pub mod subsidy;
|
||||||
|
|
||||||
pub use minimum_difficulty::*;
|
|
||||||
pub use subsidy::*;
|
pub use subsidy::*;
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests;
|
|
||||||
|
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
//! The minimum difficulty block rule for Zcash.
|
|
||||||
|
|
||||||
use zebra_chain::{block, parameters::Network};
|
|
||||||
|
|
||||||
/// The testnet block height when minimum difficulty blocks start being
|
|
||||||
/// accepted.
|
|
||||||
pub(crate) const TESTNET_MINIMUM_DIFFICULTY_HEIGHT: block::Height = block::Height(299_188);
|
|
||||||
|
|
||||||
/// The Zcash Testnet consensus rules were changed to allow
|
|
||||||
/// minimum-difficulty blocks, shortly after Testnet Sapling activation.
|
|
||||||
/// See ZIP-205 and ZIP-208 for details.
|
|
||||||
///
|
|
||||||
/// This change represents a hard-fork on Testnet, but it doesn't appear on
|
|
||||||
/// Mainnet, so we handle it as an independent consensus rule change.
|
|
||||||
#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
|
|
||||||
pub enum MinimumDifficulty {
|
|
||||||
/// Minimum difficulty blocks are rejected.
|
|
||||||
///
|
|
||||||
/// Always returned for Mainnet blocks.
|
|
||||||
Rejected,
|
|
||||||
/// Minimum difficulty blocks are allowed.
|
|
||||||
///
|
|
||||||
/// Only allowed for Testnet blocks.
|
|
||||||
AllowedOnTestnet,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl MinimumDifficulty {
|
|
||||||
/// Returns the current minimum difficulty rule for `network` and `height`.
|
|
||||||
pub fn current(network: Network, height: block::Height) -> MinimumDifficulty {
|
|
||||||
use MinimumDifficulty::*;
|
|
||||||
use Network::*;
|
|
||||||
|
|
||||||
match network {
|
|
||||||
Mainnet => Rejected,
|
|
||||||
Testnet if (height >= TESTNET_MINIMUM_DIFFICULTY_HEIGHT) => AllowedOnTestnet,
|
|
||||||
Testnet => Rejected,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -52,15 +52,6 @@ pub enum FundingStreamReceiver {
|
||||||
MajorGrants,
|
MajorGrants,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FundingStreamReceiver {
|
|
||||||
/// Get a list of receiver types
|
|
||||||
pub const fn receivers() -> [Self; 3] {
|
|
||||||
[Self::Ecc, Self::ZcashFoundation, Self::MajorGrants]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/// The number of funding stream receiver categories.
|
|
||||||
pub const FUNDING_STREAM_RECEIVERS_NUMBER: usize = FundingStreamReceiver::receivers().len();
|
|
||||||
|
|
||||||
/// Denominator as described in [protocol specification §7.10.1][7.10.1].
|
/// Denominator as described in [protocol specification §7.10.1][7.10.1].
|
||||||
///
|
///
|
||||||
/// [7.10.1]: https://zips.z.cash/protocol/protocol.pdf#zip214fundingstreams
|
/// [7.10.1]: https://zips.z.cash/protocol/protocol.pdf#zip214fundingstreams
|
||||||
|
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
//! Consensus parameter tests for Zebra.
|
|
||||||
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
use zebra_chain::{
|
|
||||||
block,
|
|
||||||
parameters::Network::{self, *},
|
|
||||||
};
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn minimum_difficulty_mainnet() {
|
|
||||||
minimum_difficulty(Mainnet)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn minimum_difficulty_testnet() {
|
|
||||||
minimum_difficulty(Testnet)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Test MinimumDifficulty
|
|
||||||
fn minimum_difficulty(network: Network) {
|
|
||||||
zebra_test::init();
|
|
||||||
use block::Height;
|
|
||||||
use MinimumDifficulty::*;
|
|
||||||
|
|
||||||
let allowed_if_testnet = match network {
|
|
||||||
Mainnet => Rejected,
|
|
||||||
Testnet => AllowedOnTestnet,
|
|
||||||
};
|
|
||||||
|
|
||||||
assert_eq!(MinimumDifficulty::current(network, Height(0)), Rejected);
|
|
||||||
assert_eq!(
|
|
||||||
MinimumDifficulty::current(network, Height(299_187)),
|
|
||||||
Rejected
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
MinimumDifficulty::current(network, Height(299_188)),
|
|
||||||
allowed_if_testnet
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
MinimumDifficulty::current(network, Height(299_189)),
|
|
||||||
allowed_if_testnet
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
MinimumDifficulty::current(network, Height::MAX),
|
|
||||||
allowed_if_testnet
|
|
||||||
);
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue