2019-03-08 12:48:33 +00:00
|
|
|
mod attester_service;
|
2019-02-14 01:09:18 +00:00
|
|
|
mod block_producer_service;
|
|
|
|
mod config;
|
|
|
|
mod duties;
|
2019-03-22 06:27:07 +00:00
|
|
|
mod service;
|
|
|
|
|
|
|
|
use crate::config::Config as ValidatorConfig;
|
|
|
|
use clap::{App, Arg};
|
|
|
|
use service::Service as ValidatorService;
|
|
|
|
use slog::{o, Drain};
|
2019-02-14 01:09:18 +00:00
|
|
|
|
|
|
|
fn main() {
|
|
|
|
// Logging
|
|
|
|
let decorator = slog_term::TermDecorator::new().build();
|
|
|
|
let drain = slog_term::CompactFormat::new(decorator).build().fuse();
|
|
|
|
let drain = slog_async::Async::new(drain).build().fuse();
|
|
|
|
let log = slog::Logger::root(drain, o!());
|
|
|
|
|
|
|
|
// CLI
|
|
|
|
let matches = App::new("Lighthouse Validator Client")
|
|
|
|
.version("0.0.1")
|
|
|
|
.author("Sigma Prime <contact@sigmaprime.io>")
|
|
|
|
.about("Eth 2.0 Validator Client")
|
|
|
|
.arg(
|
|
|
|
Arg::with_name("datadir")
|
|
|
|
.long("datadir")
|
|
|
|
.value_name("DIR")
|
|
|
|
.help("Data directory for keys and databases.")
|
|
|
|
.takes_value(true),
|
|
|
|
)
|
|
|
|
.arg(
|
|
|
|
Arg::with_name("server")
|
|
|
|
.long("server")
|
|
|
|
.value_name("server")
|
|
|
|
.help("Address to connect to BeaconNode.")
|
|
|
|
.takes_value(true),
|
|
|
|
)
|
2019-03-01 17:19:08 +00:00
|
|
|
.arg(
|
|
|
|
Arg::with_name("spec")
|
|
|
|
.long("spec")
|
|
|
|
.value_name("spec")
|
|
|
|
.short("s")
|
|
|
|
.help("Configuration of Beacon Chain")
|
|
|
|
.takes_value(true)
|
2019-03-03 13:15:00 +00:00
|
|
|
.possible_values(&["foundation", "few_validators"])
|
|
|
|
.default_value("foundation"),
|
2019-03-01 17:19:08 +00:00
|
|
|
)
|
2019-02-14 01:09:18 +00:00
|
|
|
.get_matches();
|
|
|
|
|
2019-03-22 06:27:07 +00:00
|
|
|
let config = ValidatorConfig::parse_args(matches, &log).unwrap();
|
2019-02-14 01:09:18 +00:00
|
|
|
|
2019-03-22 06:27:07 +00:00
|
|
|
// start the validator service.
|
|
|
|
ValidatorService::start(config, log);
|
2019-02-14 01:09:18 +00:00
|
|
|
}
|