diff --git a/Cargo.lock b/Cargo.lock index 6a83b3a82bc..477be0ac51f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1369,6 +1369,8 @@ dependencies = [ "apollo_consensus_orchestrator", "apollo_infra", "apollo_infra_utils", + "apollo_l1_gas_price", + "apollo_l1_gas_price_config", "apollo_l1_gas_price_types", "apollo_metrics", "apollo_network", diff --git a/crates/apollo_consensus_manager/Cargo.toml b/crates/apollo_consensus_manager/Cargo.toml index 1f795fc912b..1cd52c6da26 100644 --- a/crates/apollo_consensus_manager/Cargo.toml +++ b/crates/apollo_consensus_manager/Cargo.toml @@ -21,6 +21,8 @@ apollo_consensus_manager_config.workspace = true apollo_consensus_orchestrator.workspace = true apollo_infra.workspace = true apollo_infra_utils.workspace = true +apollo_l1_gas_price.workspace = true +apollo_l1_gas_price_config.workspace = true apollo_l1_gas_price_types.workspace = true apollo_metrics.workspace = true apollo_network.workspace = true diff --git a/crates/apollo_consensus_manager/src/consensus_manager.rs b/crates/apollo_consensus_manager/src/consensus_manager.rs index 8fe4bcc1388..7a53c95eacd 100644 --- a/crates/apollo_consensus_manager/src/consensus_manager.rs +++ b/crates/apollo_consensus_manager/src/consensus_manager.rs @@ -20,6 +20,7 @@ use apollo_consensus_orchestrator::sequencer_consensus_context::{ }; use apollo_infra::component_definitions::ComponentStarter; use apollo_infra_utils::type_name::short_type_name; +use apollo_l1_gas_price::exchange_rate_oracle::ExchangeRateOracleClient; use apollo_l1_gas_price_types::L1GasPriceProviderClient; use apollo_network::gossipsub_impl::Topic; use apollo_network::metrics::{ @@ -304,7 +305,15 @@ impl ConsensusManager { outbound_proposal_sender: outbound_internal_sender, vote_broadcast_client: votes_broadcast_channels.broadcast_topic_client.clone(), config_manager_client: Some(Arc::clone(&config_manager_client)), - strk_to_usd_oracle: None, + // TODO(SNIP-35): consider threading `ExchangeRateOracleConfig` through + // `ConsensusManagerConfig` so it can be configured per-deployment. For now we + // instantiate the default, whose `url_header_list` points at a placeholder URL; + // **deployments must override `url_header_list` via their config overlay** or the + // oracle will fail every request and `fee_proposal` will freeze at `fee_actual` + // (safe but static). + strk_to_usd_oracle: Some(Arc::new(ExchangeRateOracleClient::new( + apollo_l1_gas_price_config::config::ExchangeRateOracleConfig::default(), + ))), }, ) }