mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-08 09:16:00 +00:00
Tidy grpc and misc things
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "account_manager"
|
name = "account_manager"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
authors = ["Luke Anderson <luke@sigmaprime.io>"]
|
authors = ["Paul Hauner <paul@paulhauner.com>", "Luke Anderson <luke@sigmaprime.io>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|||||||
@@ -3,30 +3,13 @@ use clap::{App, Arg, SubCommand};
|
|||||||
pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||||
App::new("account_manager")
|
App::new("account_manager")
|
||||||
.visible_aliases(&["am", "account", "account_manager"])
|
.visible_aliases(&["am", "account", "account_manager"])
|
||||||
.about("Eth 2.0 Accounts Manager")
|
.about("Utilities for generating and managing Ethereum 2.0 accounts.")
|
||||||
.arg(
|
|
||||||
Arg::with_name("logfile")
|
|
||||||
.long("logfile")
|
|
||||||
.value_name("logfile")
|
|
||||||
.help("File path where output will be written.")
|
|
||||||
.takes_value(true),
|
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("datadir")
|
|
||||||
.long("datadir")
|
|
||||||
.short("d")
|
|
||||||
.value_name("DIR")
|
|
||||||
.help("Data directory for keys and databases.")
|
|
||||||
.takes_value(true),
|
|
||||||
)
|
|
||||||
.subcommand(
|
.subcommand(
|
||||||
SubCommand::with_name("validator")
|
SubCommand::with_name("validator")
|
||||||
.about("Eth2 validator managment commands.")
|
.about("Generate or manage Etheruem 2.0 validators.")
|
||||||
.version("0.0.1")
|
|
||||||
.author("Sigma Prime <contact@sigmaprime.io>")
|
|
||||||
.subcommand(
|
.subcommand(
|
||||||
SubCommand::with_name("new")
|
SubCommand::with_name("new")
|
||||||
.about("Create a new validator.")
|
.about("Create a new Ethereum 2.0 validator.")
|
||||||
.subcommand(
|
.subcommand(
|
||||||
SubCommand::with_name("insecure")
|
SubCommand::with_name("insecure")
|
||||||
.about("Uses the insecure deterministic keypairs. Do not store value in these.")
|
.about("Uses the insecure deterministic keypairs. Do not store value in these.")
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ fn run_account_manager<T: EthSpec>(
|
|||||||
|
|
||||||
match matches.subcommand() {
|
match matches.subcommand() {
|
||||||
("validator", Some(matches)) => match matches.subcommand() {
|
("validator", Some(matches)) => match matches.subcommand() {
|
||||||
("new", Some(matches)) => new_validator_subcommand(matches, datadir, context)?,
|
("new", Some(matches)) => run_new_validator_subcommand(matches, datadir, context)?,
|
||||||
_ => {
|
_ => {
|
||||||
return Err("Invalid 'validator new' command. See --help.".to_string());
|
return Err("Invalid 'validator new' command. See --help.".to_string());
|
||||||
}
|
}
|
||||||
@@ -74,7 +74,7 @@ enum KeygenMethod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Process the subcommand for creating new validators.
|
/// Process the subcommand for creating new validators.
|
||||||
fn new_validator_subcommand<T: EthSpec>(
|
fn run_new_validator_subcommand<T: EthSpec>(
|
||||||
matches: &ArgMatches,
|
matches: &ArgMatches,
|
||||||
datadir: PathBuf,
|
datadir: PathBuf,
|
||||||
context: RuntimeContext<T>,
|
context: RuntimeContext<T>,
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ pub struct ClientBuilder<T: BeaconChainTypes> {
|
|||||||
libp2p_network: Option<Arc<NetworkService<T>>>,
|
libp2p_network: Option<Arc<NetworkService<T>>>,
|
||||||
libp2p_network_send: Option<UnboundedSender<NetworkMessage>>,
|
libp2p_network_send: Option<UnboundedSender<NetworkMessage>>,
|
||||||
http_listen_addr: Option<SocketAddr>,
|
http_listen_addr: Option<SocketAddr>,
|
||||||
grpc_listen_addr: Option<(String, u16)>,
|
|
||||||
websocket_listen_addr: Option<SocketAddr>,
|
websocket_listen_addr: Option<SocketAddr>,
|
||||||
eth_spec_instance: T::EthSpec,
|
eth_spec_instance: T::EthSpec,
|
||||||
}
|
}
|
||||||
@@ -94,7 +93,6 @@ where
|
|||||||
libp2p_network: None,
|
libp2p_network: None,
|
||||||
libp2p_network_send: None,
|
libp2p_network_send: None,
|
||||||
http_listen_addr: None,
|
http_listen_addr: None,
|
||||||
grpc_listen_addr: None,
|
|
||||||
websocket_listen_addr: None,
|
websocket_listen_addr: None,
|
||||||
eth_spec_instance,
|
eth_spec_instance,
|
||||||
}
|
}
|
||||||
@@ -427,7 +425,6 @@ where
|
|||||||
beacon_chain: self.beacon_chain,
|
beacon_chain: self.beacon_chain,
|
||||||
libp2p_network: self.libp2p_network,
|
libp2p_network: self.libp2p_network,
|
||||||
http_listen_addr: self.http_listen_addr,
|
http_listen_addr: self.http_listen_addr,
|
||||||
grpc_listen_addr: self.grpc_listen_addr,
|
|
||||||
websocket_listen_addr: self.websocket_listen_addr,
|
websocket_listen_addr: self.websocket_listen_addr,
|
||||||
_exit_signals: self.exit_signals,
|
_exit_signals: self.exit_signals,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ pub struct Client<T: BeaconChainTypes> {
|
|||||||
libp2p_network: Option<Arc<NetworkService<T>>>,
|
libp2p_network: Option<Arc<NetworkService<T>>>,
|
||||||
http_listen_addr: Option<SocketAddr>,
|
http_listen_addr: Option<SocketAddr>,
|
||||||
websocket_listen_addr: Option<SocketAddr>,
|
websocket_listen_addr: Option<SocketAddr>,
|
||||||
grpc_listen_addr: Option<(String, u16)>,
|
|
||||||
/// Exit signals will "fire" when dropped, causing each service to exit gracefully.
|
/// Exit signals will "fire" when dropped, causing each service to exit gracefully.
|
||||||
_exit_signals: Vec<Signal>,
|
_exit_signals: Vec<Signal>,
|
||||||
}
|
}
|
||||||
@@ -41,11 +40,6 @@ impl<T: BeaconChainTypes> Client<T> {
|
|||||||
self.http_listen_addr
|
self.http_listen_addr
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the address of the client's gRPC API server, if it was started.
|
|
||||||
pub fn grpc_listen_addr(&self) -> Option<(String, u16)> {
|
|
||||||
self.grpc_listen_addr.clone()
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns the address of the client's WebSocket API server, if it was started.
|
/// Returns the address of the client's WebSocket API server, if it was started.
|
||||||
pub fn websocket_listen_addr(&self) -> Option<SocketAddr> {
|
pub fn websocket_listen_addr(&self) -> Option<SocketAddr> {
|
||||||
self.websocket_listen_addr
|
self.websocket_listen_addr
|
||||||
|
|||||||
@@ -103,30 +103,6 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
|||||||
.help("A secp256k1 secret key, represented as ASCII-encoded hex bytes (with or without 0x prefix).")
|
.help("A secp256k1 secret key, represented as ASCII-encoded hex bytes (with or without 0x prefix).")
|
||||||
.takes_value(true),
|
.takes_value(true),
|
||||||
)
|
)
|
||||||
/*
|
|
||||||
* gRPC parameters.
|
|
||||||
*/
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("no-grpc")
|
|
||||||
.long("no-grpc")
|
|
||||||
.help("Disable the gRPC server.")
|
|
||||||
.takes_value(false),
|
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("rpc-address")
|
|
||||||
.long("rpc-address")
|
|
||||||
.value_name("ADDRESS")
|
|
||||||
.help("Listen address for RPC endpoint.")
|
|
||||||
.takes_value(true),
|
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::with_name("rpc-port")
|
|
||||||
.long("rpc-port")
|
|
||||||
.value_name("PORT")
|
|
||||||
.help("Listen port for RPC endpoint.")
|
|
||||||
.conflicts_with("port-bump")
|
|
||||||
.takes_value(true),
|
|
||||||
)
|
|
||||||
/* REST API related arguments */
|
/* REST API related arguments */
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("no-api")
|
Arg::with_name("no-api")
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ fn main() {
|
|||||||
.short("s")
|
.short("s")
|
||||||
.long("spec")
|
.long("spec")
|
||||||
.value_name("TITLE")
|
.value_name("TITLE")
|
||||||
.help("Specifies the default eth2 spec type. Only effective when creating a new datadir.")
|
.help("Specifies the default eth2 spec type.")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.possible_values(&["mainnet", "minimal", "interop"])
|
.possible_values(&["mainnet", "minimal", "interop"])
|
||||||
.global(true)
|
.global(true)
|
||||||
.default_value("minimal")
|
.default_value("minimal"),
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("logfile")
|
Arg::with_name("logfile")
|
||||||
@@ -51,6 +51,15 @@ fn main() {
|
|||||||
.possible_values(&["info", "debug", "trace", "warn", "error", "crit"])
|
.possible_values(&["info", "debug", "trace", "warn", "error", "crit"])
|
||||||
.default_value("trace"),
|
.default_value("trace"),
|
||||||
)
|
)
|
||||||
|
.arg(
|
||||||
|
Arg::with_name("datadir")
|
||||||
|
.long("datadir")
|
||||||
|
.short("d")
|
||||||
|
.value_name("DIR")
|
||||||
|
.global(true)
|
||||||
|
.help("Data directory for keys and databases.")
|
||||||
|
.takes_value(true),
|
||||||
|
)
|
||||||
.subcommand(beacon_node::cli_app())
|
.subcommand(beacon_node::cli_app())
|
||||||
.subcommand(validator_client::cli_app())
|
.subcommand(validator_client::cli_app())
|
||||||
.subcommand(account_manager::cli_app())
|
.subcommand(account_manager::cli_app())
|
||||||
|
|||||||
@@ -9,9 +9,6 @@ lazy_static! {
|
|||||||
Config::default()
|
Config::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
static ref DEFAULT_SERVER_GRPC_PORT: String = {
|
|
||||||
format!("{}", DEFAULTS.server_grpc_port)
|
|
||||||
};
|
|
||||||
static ref DEFAULT_SERVER_HTTP_PORT: String = {
|
static ref DEFAULT_SERVER_HTTP_PORT: String = {
|
||||||
format!("{}", DEFAULTS.server_http_port)
|
format!("{}", DEFAULTS.server_http_port)
|
||||||
};
|
};
|
||||||
@@ -54,15 +51,6 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
|||||||
.default_value(&DEFAULTS.server)
|
.default_value(&DEFAULTS.server)
|
||||||
.takes_value(true),
|
.takes_value(true),
|
||||||
)
|
)
|
||||||
.arg(
|
|
||||||
Arg::with_name("server-grpc-port")
|
|
||||||
.long("server-grpc-port")
|
|
||||||
.short("g")
|
|
||||||
.value_name("PORT")
|
|
||||||
.help("Port to use for gRPC API connection to the server.")
|
|
||||||
.default_value(&DEFAULT_SERVER_GRPC_PORT)
|
|
||||||
.takes_value(true),
|
|
||||||
)
|
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("server-http-port")
|
Arg::with_name("server-http-port")
|
||||||
.long("server-http-port")
|
.long("server-http-port")
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ pub struct Config {
|
|||||||
pub log_file: PathBuf,
|
pub log_file: PathBuf,
|
||||||
/// The server at which the Beacon Node can be contacted
|
/// The server at which the Beacon Node can be contacted
|
||||||
pub server: String,
|
pub server: String,
|
||||||
/// The gRPC port on the server
|
|
||||||
pub server_grpc_port: u16,
|
|
||||||
/// The HTTP port on the server, for the REST API.
|
/// The HTTP port on the server, for the REST API.
|
||||||
pub server_http_port: u16,
|
pub server_http_port: u16,
|
||||||
/// The number of slots per epoch.
|
/// The number of slots per epoch.
|
||||||
@@ -46,7 +44,6 @@ impl Default for Config {
|
|||||||
key_source: <_>::default(),
|
key_source: <_>::default(),
|
||||||
log_file: PathBuf::from(""),
|
log_file: PathBuf::from(""),
|
||||||
server: "localhost".into(),
|
server: "localhost".into(),
|
||||||
server_grpc_port: 5051,
|
|
||||||
server_http_port: 5052,
|
server_http_port: 5052,
|
||||||
slots_per_epoch: MainnetEthSpec::slots_per_epoch(),
|
slots_per_epoch: MainnetEthSpec::slots_per_epoch(),
|
||||||
}
|
}
|
||||||
@@ -72,12 +69,6 @@ impl Config {
|
|||||||
.map_err(|e| format!("Unable to parse HTTP port: {:?}", e))?;
|
.map_err(|e| format!("Unable to parse HTTP port: {:?}", e))?;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(port) = cli_args.value_of("server-grpc-port") {
|
|
||||||
client_config.server_grpc_port = port
|
|
||||||
.parse::<u16>()
|
|
||||||
.map_err(|e| format!("Unable to parse gRPC port: {:?}", e))?;
|
|
||||||
}
|
|
||||||
|
|
||||||
let client_config = match cli_args.subcommand() {
|
let client_config = match cli_args.subcommand() {
|
||||||
("testnet", Some(sub_cli_args)) => {
|
("testnet", Some(sub_cli_args)) => {
|
||||||
if cli_args.is_present("eth2-config") && sub_cli_args.is_present("bootstrap") {
|
if cli_args.is_present("eth2-config") && sub_cli_args.is_present("bootstrap") {
|
||||||
|
|||||||
Reference in New Issue
Block a user