2024-02-20 11:27:10 +00:00
|
|
|
#![doc = include_str!("../README.md")]
|
|
|
|
#![forbid(unsafe_code)]
|
|
|
|
#![warn(
|
|
|
|
clippy::checked_conversions,
|
|
|
|
clippy::panic,
|
|
|
|
clippy::panic_in_result_fn,
|
|
|
|
clippy::unwrap_used,
|
|
|
|
missing_docs,
|
|
|
|
trivial_casts,
|
|
|
|
trivial_numeric_casts,
|
|
|
|
rust_2018_idioms,
|
|
|
|
unused_lifetimes,
|
|
|
|
unused_import_braces,
|
|
|
|
unused_qualifications
|
|
|
|
)]
|
|
|
|
|
2024-02-22 20:48:13 +00:00
|
|
|
mod cli;
|
2024-02-20 11:27:10 +00:00
|
|
|
mod server;
|
|
|
|
|
2024-02-22 20:48:13 +00:00
|
|
|
use std::time::Duration;
|
|
|
|
|
|
|
|
use clap::Parser;
|
2024-02-20 16:34:42 +00:00
|
|
|
use quartz_proto::quartz::core_server::CoreServer;
|
2024-02-20 11:27:10 +00:00
|
|
|
use tonic::transport::Server;
|
|
|
|
|
2024-02-22 20:48:13 +00:00
|
|
|
use crate::{
|
|
|
|
cli::Cli,
|
|
|
|
server::{Config, CoreService, LightClientOpts},
|
|
|
|
};
|
2024-02-20 11:27:10 +00:00
|
|
|
|
2024-02-20 14:58:26 +00:00
|
|
|
#[tokio::main(flavor = "current_thread")]
|
2024-02-20 11:27:10 +00:00
|
|
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
2024-02-22 20:48:13 +00:00
|
|
|
let args = Cli::parse();
|
|
|
|
|
|
|
|
let light_client_opts = LightClientOpts::new(
|
|
|
|
args.chain_id,
|
|
|
|
args.target_height,
|
|
|
|
args.trusted_height,
|
|
|
|
args.trusted_hash,
|
|
|
|
args.trust_threshold,
|
|
|
|
args.trusting_period,
|
|
|
|
args.max_clock_drift,
|
|
|
|
args.max_block_lag,
|
|
|
|
);
|
|
|
|
let config = Config::new(Duration::from_secs(30 * 24 * 60), light_client_opts);
|
2024-02-20 11:27:10 +00:00
|
|
|
|
|
|
|
Server::builder()
|
2024-02-22 20:48:13 +00:00
|
|
|
.add_service(CoreServer::new(CoreService(config)))
|
|
|
|
.serve(args.rpc_addr)
|
2024-02-20 11:27:10 +00:00
|
|
|
.await?;
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|