1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Copyright 2020 ChainSafe Systems
// SPDX-License-Identifier: Apache-2.0

//!
//! This modules contains all genesis block related stuff
//!

mod config;
pub use config::*;
use mina_rs_base::types::*;
mod genesis_impl;

/// Trait for genesis block initialization logic
/// # Example
/// ```
/// use mina_rs_base::types::*;
/// use mina_consensus::genesis::*;
/// let genesis_mainnet = ExternalTransition::from_genesis_config(&MAINNET_CONFIG);
/// let genesis_devnet = ExternalTransition::from_genesis_config(&DEVNET_CONFIG);
/// ```
pub trait Genesis {
    /// Constructs a genesis block from config
    fn from_genesis_config(config: &GenesisInitConfig) -> ExternalTransition;
}

/// Trait for genesis protocol state
pub trait GenesisProtocolState<T> {
    /// genesis protocol state on berkeley net
    fn berkeley() -> &'static T;
}