Update beacon_node
to work w/ BeaconStateTypes
This commit is contained in:
parent
42b7aa89d4
commit
4c0c93f0c9
@ -9,8 +9,8 @@ use std::net::{IpAddr, Ipv4Addr};
|
|||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use types::multiaddr::Protocol;
|
use types::multiaddr::Protocol;
|
||||||
use types::multiaddr::ToMultiaddr;
|
use types::multiaddr::ToMultiaddr;
|
||||||
use types::ChainSpec;
|
|
||||||
use types::Multiaddr;
|
use types::Multiaddr;
|
||||||
|
use types::{BeaconStateTypes, ChainSpec, LighthouseTestnetStateTypes};
|
||||||
|
|
||||||
/// Stores the client configuration for this Lighthouse instance.
|
/// Stores the client configuration for this Lighthouse instance.
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
@ -35,7 +35,7 @@ impl Default for ClientConfig {
|
|||||||
fs::create_dir_all(&data_dir)
|
fs::create_dir_all(&data_dir)
|
||||||
.unwrap_or_else(|_| panic!("Unable to create {:?}", &data_dir));
|
.unwrap_or_else(|_| panic!("Unable to create {:?}", &data_dir));
|
||||||
|
|
||||||
let default_spec = ChainSpec::lighthouse_testnet();
|
let default_spec = LighthouseTestnetStateTypes::spec();
|
||||||
let default_net_conf = NetworkConfig::new(default_spec.boot_nodes.clone());
|
let default_net_conf = NetworkConfig::new(default_spec.boot_nodes.clone());
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
|
@ -7,6 +7,7 @@ use beacon_chain::{
|
|||||||
BeaconChain,
|
BeaconChain,
|
||||||
};
|
};
|
||||||
use fork_choice::ForkChoice;
|
use fork_choice::ForkChoice;
|
||||||
|
use types::{BeaconStateTypes, FewValidatorsStateTypes, FoundationStateTypes};
|
||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
@ -14,10 +15,11 @@ pub trait ClientTypes {
|
|||||||
type DB: ClientDB + 'static;
|
type DB: ClientDB + 'static;
|
||||||
type SlotClock: SlotClock + 'static;
|
type SlotClock: SlotClock + 'static;
|
||||||
type ForkChoice: ForkChoice + 'static;
|
type ForkChoice: ForkChoice + 'static;
|
||||||
|
type BeaconStateTypes: BeaconStateTypes + 'static;
|
||||||
|
|
||||||
fn initialise_beacon_chain(
|
fn initialise_beacon_chain(
|
||||||
config: &ClientConfig,
|
config: &ClientConfig,
|
||||||
) -> Arc<BeaconChain<Self::DB, Self::SlotClock, Self::ForkChoice>>;
|
) -> Arc<BeaconChain<Self::DB, Self::SlotClock, Self::ForkChoice, Self::BeaconStateTypes>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct StandardClientType;
|
pub struct StandardClientType;
|
||||||
@ -25,11 +27,12 @@ pub struct StandardClientType;
|
|||||||
impl ClientTypes for StandardClientType {
|
impl ClientTypes for StandardClientType {
|
||||||
type DB = DiskDB;
|
type DB = DiskDB;
|
||||||
type SlotClock = SystemTimeSlotClock;
|
type SlotClock = SystemTimeSlotClock;
|
||||||
type ForkChoice = BitwiseLMDGhost<DiskDB>;
|
type ForkChoice = BitwiseLMDGhost<DiskDB, Self::BeaconStateTypes>;
|
||||||
|
type BeaconStateTypes = FoundationStateTypes;
|
||||||
|
|
||||||
fn initialise_beacon_chain(
|
fn initialise_beacon_chain(
|
||||||
config: &ClientConfig,
|
config: &ClientConfig,
|
||||||
) -> Arc<BeaconChain<Self::DB, Self::SlotClock, Self::ForkChoice>> {
|
) -> Arc<BeaconChain<Self::DB, Self::SlotClock, Self::ForkChoice, Self::BeaconStateTypes>> {
|
||||||
initialise::initialise_beacon_chain(&config.spec, Some(&config.db_name))
|
initialise::initialise_beacon_chain(&config.spec, Some(&config.db_name))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -39,11 +42,12 @@ pub struct TestingClientType;
|
|||||||
impl ClientTypes for TestingClientType {
|
impl ClientTypes for TestingClientType {
|
||||||
type DB = MemoryDB;
|
type DB = MemoryDB;
|
||||||
type SlotClock = SystemTimeSlotClock;
|
type SlotClock = SystemTimeSlotClock;
|
||||||
type ForkChoice = BitwiseLMDGhost<MemoryDB>;
|
type ForkChoice = BitwiseLMDGhost<MemoryDB, Self::BeaconStateTypes>;
|
||||||
|
type BeaconStateTypes = FewValidatorsStateTypes;
|
||||||
|
|
||||||
fn initialise_beacon_chain(
|
fn initialise_beacon_chain(
|
||||||
config: &ClientConfig,
|
config: &ClientConfig,
|
||||||
) -> Arc<BeaconChain<Self::DB, Self::SlotClock, Self::ForkChoice>> {
|
) -> Arc<BeaconChain<Self::DB, Self::SlotClock, Self::ForkChoice, Self::BeaconStateTypes>> {
|
||||||
initialise::initialise_test_beacon_chain(&config.spec, None)
|
initialise::initialise_test_beacon_chain(&config.spec, None)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ use std::sync::Arc;
|
|||||||
use std::time::{Duration, Instant};
|
use std::time::{Duration, Instant};
|
||||||
use tokio::runtime::TaskExecutor;
|
use tokio::runtime::TaskExecutor;
|
||||||
use tokio::timer::Interval;
|
use tokio::timer::Interval;
|
||||||
|
use types::BeaconStateTypes;
|
||||||
|
|
||||||
/// Main beacon node client service. This provides the connection and initialisation of the clients
|
/// Main beacon node client service. This provides the connection and initialisation of the clients
|
||||||
/// sub-services in multiple threads.
|
/// sub-services in multiple threads.
|
||||||
@ -27,9 +28,9 @@ pub struct Client<T: ClientTypes> {
|
|||||||
/// Configuration for the lighthouse client.
|
/// Configuration for the lighthouse client.
|
||||||
_config: ClientConfig,
|
_config: ClientConfig,
|
||||||
/// The beacon chain for the running client.
|
/// The beacon chain for the running client.
|
||||||
_beacon_chain: Arc<BeaconChain<T::DB, T::SlotClock, T::ForkChoice>>,
|
_beacon_chain: Arc<BeaconChain<T::DB, T::SlotClock, T::ForkChoice, T::BeaconStateTypes>>,
|
||||||
/// Reference to the network service.
|
/// Reference to the network service.
|
||||||
pub network: Arc<NetworkService>,
|
pub network: Arc<NetworkService<T::BeaconStateTypes>>,
|
||||||
/// Signal to terminate the RPC server.
|
/// Signal to terminate the RPC server.
|
||||||
pub rpc_exit_signal: Option<Signal>,
|
pub rpc_exit_signal: Option<Signal>,
|
||||||
/// Signal to terminate the slot timer.
|
/// Signal to terminate the slot timer.
|
||||||
@ -141,11 +142,12 @@ impl<TClientType: ClientTypes> Client<TClientType> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn do_state_catchup<T, U, F>(chain: &Arc<BeaconChain<T, U, F>>, log: &slog::Logger)
|
fn do_state_catchup<T, U, F, B>(chain: &Arc<BeaconChain<T, U, F, B>>, log: &slog::Logger)
|
||||||
where
|
where
|
||||||
T: ClientDB,
|
T: ClientDB,
|
||||||
U: SlotClock,
|
U: SlotClock,
|
||||||
F: ForkChoice,
|
F: ForkChoice,
|
||||||
|
B: BeaconStateTypes,
|
||||||
{
|
{
|
||||||
if let Some(genesis_height) = chain.slots_since_genesis() {
|
if let Some(genesis_height) = chain.slots_since_genesis() {
|
||||||
let result = chain.catchup_state();
|
let result = chain.catchup_state();
|
||||||
|
@ -12,6 +12,7 @@ pub trait BeaconStateTypes: 'static + Default + Sync + Send + Clone + Debug + Pa
|
|||||||
fn spec() -> ChainSpec;
|
fn spec() -> ChainSpec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Ethereum Foundation specifications.
|
||||||
#[derive(Clone, PartialEq, Debug, Default)]
|
#[derive(Clone, PartialEq, Debug, Default)]
|
||||||
pub struct FoundationStateTypes;
|
pub struct FoundationStateTypes;
|
||||||
|
|
||||||
@ -45,3 +46,20 @@ impl BeaconStateTypes for FewValidatorsStateTypes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub type FewValidatorsBeaconState = BeaconState<FewValidatorsStateTypes>;
|
pub type FewValidatorsBeaconState = BeaconState<FewValidatorsStateTypes>;
|
||||||
|
|
||||||
|
#[derive(Clone, PartialEq, Debug, Default)]
|
||||||
|
pub struct LighthouseTestnetStateTypes;
|
||||||
|
|
||||||
|
impl BeaconStateTypes for LighthouseTestnetStateTypes {
|
||||||
|
type ShardCount = U8;
|
||||||
|
type SlotsPerHistoricalRoot = U8192;
|
||||||
|
type LatestRandaoMixesLength = U8192;
|
||||||
|
type LatestActiveIndexRootsLength = U8192;
|
||||||
|
type LatestSlashedExitLength = U8192;
|
||||||
|
|
||||||
|
fn spec() -> ChainSpec {
|
||||||
|
ChainSpec::lighthouse_testnet()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type LighthouseTestnetBeaconState = BeaconState<LighthouseTestnetStateTypes>;
|
||||||
|
@ -29,7 +29,6 @@ impl<T, N: Unsigned> FixedLenVec<T, N> {
|
|||||||
|
|
||||||
impl<T: Default, N: Unsigned> From<Vec<T>> for FixedLenVec<T, N> {
|
impl<T: Default, N: Unsigned> From<Vec<T>> for FixedLenVec<T, N> {
|
||||||
fn from(mut vec: Vec<T>) -> Self {
|
fn from(mut vec: Vec<T>) -> Self {
|
||||||
dbg!(Self::capacity());
|
|
||||||
vec.resize_with(Self::capacity(), Default::default);
|
vec.resize_with(Self::capacity(), Default::default);
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
|
Loading…
Reference in New Issue
Block a user