diff --git a/apps/fortuna/Cargo.lock b/apps/fortuna/Cargo.lock index bc06ddd41e..79b26d9739 100644 --- a/apps/fortuna/Cargo.lock +++ b/apps/fortuna/Cargo.lock @@ -1647,7 +1647,7 @@ dependencies = [ [[package]] name = "fortuna" -version = "7.6.0" +version = "7.6.1" dependencies = [ "anyhow", "axum", diff --git a/apps/fortuna/Cargo.toml b/apps/fortuna/Cargo.toml index 7636d0f59b..cc3115a15a 100644 --- a/apps/fortuna/Cargo.toml +++ b/apps/fortuna/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fortuna" -version = "7.6.0" +version = "7.6.1" edition = "2021" [lib] diff --git a/apps/fortuna/config.sample.yaml b/apps/fortuna/config.sample.yaml index d2fa7fe205..6b42e97b43 100644 --- a/apps/fortuna/config.sample.yaml +++ b/apps/fortuna/config.sample.yaml @@ -32,6 +32,9 @@ chains: # How much to charge in fees fee: 1500000000000000 + # Set this temporarily to false if you have changed the fees and want to apply a new baseline fee. + sync_fee_only_on_register: true + # Configuration for dynamic fees under high gas prices. The keeper will set # on-chain fees to make between [min_profit_pct, max_profit_pct] of the max callback # cost in profit per transaction. diff --git a/apps/fortuna/src/command/run.rs b/apps/fortuna/src/command/run.rs index 956ba7a028..0faeff38b6 100644 --- a/apps/fortuna/src/command/run.rs +++ b/apps/fortuna/src/command/run.rs @@ -222,7 +222,11 @@ async fn setup_chain_state( .cmp(&c2.original_commitment_sequence_number) }); - let provider_info = contract.get_provider_info(*provider).call().await?; + let provider_info = contract + .get_provider_info(*provider) + .call() + .await + .map_err(|e| anyhow!("Failed to get provider info: {}", e))?; let latest_metadata = bincode::deserialize::( &provider_info.commitment_metadata, ) diff --git a/apps/fortuna/src/command/setup_provider.rs b/apps/fortuna/src/command/setup_provider.rs index baa56d6029..4096b6b42d 100644 --- a/apps/fortuna/src/command/setup_provider.rs +++ b/apps/fortuna/src/command/setup_provider.rs @@ -149,9 +149,11 @@ async fn setup_chain_provider( let provider_info = contract.get_provider_info(provider_address).call().await?; - sync_fee(&contract, &provider_info, chain_config.fee) - .in_current_span() - .await?; + if register || !chain_config.sync_fee_only_on_register { + sync_fee(&contract, &provider_info, chain_config.fee) + .in_current_span() + .await?; + } let uri = get_register_uri(&provider_config.uri, chain_id)?; sync_uri(&contract, &provider_info, uri) diff --git a/apps/fortuna/src/config.rs b/apps/fortuna/src/config.rs index 6ceeff35e4..806b845005 100644 --- a/apps/fortuna/src/config.rs +++ b/apps/fortuna/src/config.rs @@ -172,6 +172,11 @@ pub struct EthereumConfig { #[serde(default)] pub fee: u128, + /// Only set the provider's fee when the provider is registered for the first time. Default is true. + /// This is useful to avoid resetting the fees on service restarts. + #[serde(default = "default_sync_fee_only_on_register")] + pub sync_fee_only_on_register: bool, + /// Historical commitments made by the provider. pub commitments: Option>, @@ -186,6 +191,10 @@ pub struct EthereumConfig { pub block_delays: Vec, } +fn default_sync_fee_only_on_register() -> bool { + true +} + fn default_block_delays() -> Vec { vec![5] } diff --git a/apps/fortuna/src/eth_utils/utils.rs b/apps/fortuna/src/eth_utils/utils.rs index af4202558b..f89b3f6b23 100644 --- a/apps/fortuna/src/eth_utils/utils.rs +++ b/apps/fortuna/src/eth_utils/utils.rs @@ -187,7 +187,7 @@ pub async fn submit_tx_with_backoff( }, |e, dur| { let retry_number = num_retries.load(std::sync::atomic::Ordering::Relaxed); - tracing::error!( + tracing::warn!( "Error on retry {} at duration {:?}: {}", retry_number, dur, diff --git a/apps/fortuna/src/keeper/commitment.rs b/apps/fortuna/src/keeper/commitment.rs index 2731cef62a..53512e21c4 100644 --- a/apps/fortuna/src/keeper/commitment.rs +++ b/apps/fortuna/src/keeper/commitment.rs @@ -42,7 +42,13 @@ pub async fn update_commitments_if_necessary( .block(latest_safe_block) // To ensure we are not revealing sooner than we should .call() .await - .map_err(|e| anyhow!("Error while getting provider info. error: {:?}", e))?; + .map_err(|e| { + anyhow!( + "Error while getting provider info at block {}. error: {:?}", + latest_safe_block, + e + ) + })?; if provider_info.max_num_hashes == 0 { return Ok(()); }