Co-authored-by: hu55a1n1 <sufialhussaini@gmail.com> Co-authored-by: Ethan Buchman <ethan@coinculture.info> Co-authored-by: David Kajpust <kajpustd@gmail.com>
53 lines
1.5 KiB
Rust
53 lines
1.5 KiB
Rust
use std::net::SocketAddr;
|
|
|
|
use clap::Parser;
|
|
use color_eyre::eyre::{eyre, Result};
|
|
use cosmrs::tendermint::Hash;
|
|
use tendermint_light_client::types::{Height, TrustThreshold};
|
|
|
|
fn parse_trust_threshold(s: &str) -> Result<TrustThreshold> {
|
|
if let Some((l, r)) = s.split_once('/') {
|
|
TrustThreshold::new(l.parse()?, r.parse()?).map_err(Into::into)
|
|
} else {
|
|
Err(eyre!(
|
|
"invalid trust threshold: {s}, format must be X/Y where X and Y are integers"
|
|
))
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Parser)]
|
|
#[command(author, version, about, long_about = None)]
|
|
pub struct Cli {
|
|
/// RPC server address
|
|
#[clap(long, default_value = "127.0.0.1:11090")]
|
|
pub rpc_addr: SocketAddr,
|
|
|
|
/// Identifier of the chain
|
|
#[clap(long)]
|
|
pub chain_id: String,
|
|
|
|
/// Height of the trusted header (AKA root-of-trust)
|
|
#[clap(long)]
|
|
pub trusted_height: Height,
|
|
|
|
/// Hash of the trusted header (AKA root-of-trust)
|
|
#[clap(long)]
|
|
pub trusted_hash: Hash,
|
|
|
|
/// Trust threshold
|
|
#[clap(long, value_parser = parse_trust_threshold, default_value_t = TrustThreshold::TWO_THIRDS)]
|
|
pub trust_threshold: TrustThreshold,
|
|
|
|
/// Trusting period, in seconds (default: two weeks)
|
|
#[clap(long, default_value = "1209600")]
|
|
pub trusting_period: u64,
|
|
|
|
/// Maximum clock drift, in seconds
|
|
#[clap(long, default_value = "5")]
|
|
pub max_clock_drift: u64,
|
|
|
|
/// Maximum block lag, in seconds
|
|
#[clap(long, default_value = "5")]
|
|
pub max_block_lag: u64,
|
|
}
|