feat(fortuna): add a cli arg to run keeper (#1517)

* optional run keeper

* update comment

* instead of flag use the keeper key file

* update version

* rename method
This commit is contained in:
Dev Kalra 2024-04-30 20:10:48 +05:30 committed by GitHub
parent 2095da34e9
commit d2ce2ecd33
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 14 additions and 9 deletions

View File

@ -1488,7 +1488,7 @@ dependencies = [
[[package]]
name = "fortuna"
version = "5.0.0"
version = "5.1.0"
dependencies = [
"anyhow",
"axum",

View File

@ -1,6 +1,6 @@
[package]
name = "fortuna"
version = "5.0.0"
version = "5.1.0"
edition = "2021"
[dependencies]

View File

@ -127,7 +127,6 @@ pub async fn run(opts: &RunOptions) -> Result<()> {
.provider_config
.as_ref()
.map(|path| ProviderConfig::load(&path).expect("Failed to load provider config"));
let private_key = opts.load_private_key()?;
let secret = opts.randomness.load_secret()?;
let (tx_exit, rx_exit) = watch::channel(false);
@ -141,7 +140,6 @@ pub async fn run(opts: &RunOptions) -> Result<()> {
.as_ref()
.map(|c| c.get_sorted_commitments())
.unwrap_or_else(|| Vec::new());
println!("{} {:?}", chain_id, provider_commitments);
let provider_info = contract.get_provider_info(opts.provider).call().await?;
let latest_metadata =
@ -212,7 +210,10 @@ pub async fn run(opts: &RunOptions) -> Result<()> {
Ok::<(), Error>(())
});
spawn(run_keeper(chains.clone(), config, private_key));
if let Some(keeper_private_key) = opts.load_keeper_private_key()? {
spawn(run_keeper(chains.clone(), config, keeper_private_key));
}
run_api(opts.addr.clone(), chains, rx_exit).await?;

View File

@ -36,16 +36,20 @@ pub struct RunOptions {
#[arg(env = "FORTUNA_PROVIDER")]
pub provider: Address,
/// Path to a file containing a 20-byte (40 char) hex encoded Ethereum private key.
/// If provided, the keeper will run alongside the Fortuna API service.
/// It should be a path to a file containing a 20-byte (40 char) hex encoded Ethereum private key.
/// This key is required to submit transactions for entropy callback requests.
/// This key should not be a registered provider.
#[arg(long = "keeper-private-key")]
#[arg(env = "KEEPER_PRIVATE_KEY")]
pub keeper_private_key_file: String,
pub keeper_private_key_file: Option<String>,
}
impl RunOptions {
pub fn load_private_key(&self) -> Result<String> {
return Ok((fs::read_to_string(&self.keeper_private_key_file))?);
pub fn load_keeper_private_key(&self) -> Result<Option<String>> {
if let Some(ref keeper_private_key_file) = self.keeper_private_key_file {
return Ok(Some(fs::read_to_string(keeper_private_key_file)?));
}
return Ok(None);
}
}