From c0a14ecc8c954d92ca64158c7ad859aa83bd6e0e Mon Sep 17 00:00:00 2001 From: Alfredo Garcia Date: Mon, 12 Oct 2020 18:08:23 -0300 Subject: [PATCH] move genesis parameters to zebra-chain (#1151) --- zebra-chain/src/parameters.rs | 2 ++ .../src/parameters/genesis.rs | 2 +- zebra-consensus/src/checkpoint.rs | 6 +++--- zebra-consensus/src/checkpoint/list.rs | 10 +++++----- zebra-consensus/src/parameters.rs | 2 -- zebra-state/src/sled_state.rs | 4 ++-- zebrad/src/components/sync.rs | 6 +++--- 7 files changed, 16 insertions(+), 16 deletions(-) rename {zebra-consensus => zebra-chain}/src/parameters/genesis.rs (94%) diff --git a/zebra-chain/src/parameters.rs b/zebra-chain/src/parameters.rs index 3e71f234..0fa86428 100644 --- a/zebra-chain/src/parameters.rs +++ b/zebra-chain/src/parameters.rs @@ -12,9 +12,11 @@ //! Typically, consensus parameters are accessed via a function that takes a //! `Network` and `block::Height`. +mod genesis; mod network; mod network_upgrade; +pub use genesis::*; pub use network::Network; pub use network_upgrade::*; diff --git a/zebra-consensus/src/parameters/genesis.rs b/zebra-chain/src/parameters/genesis.rs similarity index 94% rename from zebra-consensus/src/parameters/genesis.rs rename to zebra-chain/src/parameters/genesis.rs index 65abeb91..6f378719 100644 --- a/zebra-consensus/src/parameters/genesis.rs +++ b/zebra-chain/src/parameters/genesis.rs @@ -1,6 +1,6 @@ //! Genesis consensus parameters for each Zcash network. -use zebra_chain::{block, parameters::Network}; +use crate::{block, parameters::Network}; /// The previous block hash for the genesis block. /// diff --git a/zebra-consensus/src/checkpoint.rs b/zebra-consensus/src/checkpoint.rs index 15ef2d10..1ae074ad 100644 --- a/zebra-consensus/src/checkpoint.rs +++ b/zebra-consensus/src/checkpoint.rs @@ -30,11 +30,11 @@ use tower::{Service, ServiceExt}; use tracing::instrument; use zebra_chain::{ block::{self, Block}, - parameters::Network, + parameters::{Network, GENESIS_PREVIOUS_BLOCK_HASH}, }; use zebra_state as zs; -use crate::{parameters, BoxError}; +use crate::BoxError; pub(crate) mod list; mod types; @@ -568,7 +568,7 @@ where // Since genesis blocks are hard-coded in zcashd, and not verified // like other blocks, the genesis parent hash is set by the // consensus parameters. - BeforeGenesis => parameters::GENESIS_PREVIOUS_BLOCK_HASH, + BeforeGenesis => GENESIS_PREVIOUS_BLOCK_HASH, InitialTip(hash) | PreviousCheckpoint(hash) => hash, FinalCheckpoint => return, }; diff --git a/zebra-consensus/src/checkpoint/list.rs b/zebra-consensus/src/checkpoint/list.rs index f28202ec..f57d554c 100644 --- a/zebra-consensus/src/checkpoint/list.rs +++ b/zebra-consensus/src/checkpoint/list.rs @@ -8,7 +8,7 @@ #[cfg(test)] mod tests; -use crate::{parameters, BoxError}; +use crate::BoxError; use std::{ collections::{BTreeMap, HashSet}, @@ -17,7 +17,7 @@ use std::{ }; use zebra_chain::block; -use zebra_chain::parameters::Network; +use zebra_chain::parameters::{genesis_hash, Network}; const MAINNET_CHECKPOINTS: &str = include_str!("main-checkpoints.txt"); const TESTNET_CHECKPOINTS: &str = include_str!("test-checkpoints.txt"); @@ -73,7 +73,7 @@ impl CheckpointList { }; match checkpoint_list.hash(block::Height(0)) { - Some(hash) if hash == parameters::genesis_hash(network) => checkpoint_list, + Some(hash) if hash == genesis_hash(network) => checkpoint_list, Some(_) => { panic!("The hard-coded genesis checkpoint does not match the network genesis hash") } @@ -102,8 +102,8 @@ impl CheckpointList { // Check that the list starts with the correct genesis block match checkpoints.iter().next() { Some((block::Height(0), hash)) - if (hash == ¶meters::genesis_hash(Network::Mainnet) - || hash == ¶meters::genesis_hash(Network::Testnet)) => {} + if (hash == &genesis_hash(Network::Mainnet) + || hash == &genesis_hash(Network::Testnet)) => {} Some((block::Height(0), _)) => { Err("the genesis checkpoint does not match the Mainnet or Testnet genesis hash")? } diff --git a/zebra-consensus/src/parameters.rs b/zebra-consensus/src/parameters.rs index 7fb59db4..31389c79 100644 --- a/zebra-consensus/src/parameters.rs +++ b/zebra-consensus/src/parameters.rs @@ -12,11 +12,9 @@ //! Typically, consensus parameters are accessed via a function that takes a //! `Network` and `block::Height`. -pub mod genesis; pub mod minimum_difficulty; pub mod subsidy; -pub use genesis::*; pub use minimum_difficulty::*; pub use subsidy::*; diff --git a/zebra-state/src/sled_state.rs b/zebra-state/src/sled_state.rs index 644bded9..8a788e1a 100644 --- a/zebra-state/src/sled_state.rs +++ b/zebra-state/src/sled_state.rs @@ -6,7 +6,7 @@ use tracing::trace; use zebra_chain::serialization::{ZcashDeserialize, ZcashSerialize}; use zebra_chain::{ block::{self, Block}, - parameters::Network, + parameters::{Network, GENESIS_PREVIOUS_BLOCK_HASH}, }; use crate::{BoxError, Config, HashOrHeight, QueuedBlock}; @@ -89,7 +89,7 @@ impl FinalizedState { .expect("inability to look up tip is unrecoverable") .map(|(_, hash)| hash) // if the state is empty, return the genesis previous block hash - .unwrap_or(block::Hash([0; 32])) + .unwrap_or(GENESIS_PREVIOUS_BLOCK_HASH) } /// Returns the height of the current finalized tip block. diff --git a/zebrad/src/components/sync.rs b/zebrad/src/components/sync.rs index ed178f73..1609f4b2 100644 --- a/zebrad/src/components/sync.rs +++ b/zebrad/src/components/sync.rs @@ -11,9 +11,9 @@ use tracing_futures::Instrument; use zebra_chain::{ block::{self, Block}, - parameters::Network, + parameters::{genesis_hash, Network}, }; -use zebra_consensus::{checkpoint, parameters}; +use zebra_consensus::checkpoint; use zebra_network as zn; use zebra_state as zs; @@ -162,7 +162,7 @@ where verifier, prospective_tips: HashSet::new(), pending_blocks: Box::pin(FuturesUnordered::new()), - genesis_hash: parameters::genesis_hash(chain), + genesis_hash: genesis_hash(chain), } }