Merge pull request #270 from thojest/lighthouse-252

ChainSpec selectable via CLI flag
This commit is contained in:
Paul Hauner 2019-03-07 10:26:24 +13:00 committed by GitHub
commit f4c4be7a37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 6 deletions

View File

@ -1,11 +1,13 @@
use std::fs; use std::fs;
use std::path::PathBuf; use std::path::PathBuf;
use types::ChainSpec;
/// Stores the core configuration for this validator instance. /// Stores the core configuration for this validator instance.
#[derive(Clone)] #[derive(Clone)]
pub struct ClientConfig { pub struct ClientConfig {
pub data_dir: PathBuf, pub data_dir: PathBuf,
pub server: String, pub server: String,
pub spec: ChainSpec,
} }
const DEFAULT_LIGHTHOUSE_DIR: &str = ".lighthouse-validators"; const DEFAULT_LIGHTHOUSE_DIR: &str = ".lighthouse-validators";
@ -20,6 +22,11 @@ impl 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 server = "localhost:50051".to_string(); let server = "localhost:50051".to_string();
Self { data_dir, server } let spec = ChainSpec::foundation();
Self {
data_dir,
server,
spec,
}
} }
} }

View File

@ -43,6 +43,16 @@ fn main() {
.help("Address to connect to BeaconNode.") .help("Address to connect to BeaconNode.")
.takes_value(true), .takes_value(true),
) )
.arg(
Arg::with_name("spec")
.long("spec")
.value_name("spec")
.short("s")
.help("Configuration of Beacon Chain")
.takes_value(true)
.possible_values(&["foundation", "few_validators"])
.default_value("foundation"),
)
.get_matches(); .get_matches();
let mut config = ClientConfig::default(); let mut config = ClientConfig::default();
@ -62,6 +72,17 @@ fn main() {
} }
} }
// TODO: Permit loading a custom spec from file.
// Custom spec
if let Some(spec_str) = matches.value_of("spec") {
match spec_str {
"foundation" => config.spec = ChainSpec::foundation(),
"few_validators" => config.spec = ChainSpec::few_validators(),
// Should be impossible due to clap's `possible_values(..)` function.
_ => unreachable!(),
};
}
// Log configuration // Log configuration
info!(log, ""; info!(log, "";
"data_dir" => &config.data_dir.to_str(), "data_dir" => &config.data_dir.to_str(),
@ -81,11 +102,8 @@ fn main() {
Arc::new(ValidatorServiceClient::new(ch)) Arc::new(ValidatorServiceClient::new(ch))
}; };
// Ethereum // Spec
// let spec = Arc::new(config.spec.clone());
// TODO: Permit loading a custom spec from file.
// https://github.com/sigp/lighthouse/issues/160
let spec = Arc::new(ChainSpec::foundation());
// Clock for determining the present slot. // Clock for determining the present slot.
// TODO: this shouldn't be a static time, instead it should be pulled from the beacon node. // TODO: this shouldn't be a static time, instead it should be pulled from the beacon node.