cycles-quartz/enclaves/quartz/src/main.rs

54 lines
1.2 KiB
Rust
Raw Normal View History

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
#[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(())
}