@@ -438,6 +438,31 @@ impl SequencerConsensusContext {
438438 )
439439 }
440440
441+ async fn resolve_fee_target (
442+ & self ,
443+ timestamp : u64 ,
444+ target_atto_usd_per_l2_gas : u128 ,
445+ ) -> Option < GasPrice > {
446+ if let Some ( v) = self . config . dynamic_config . override_l2_gas_price_fri {
447+ SNIP35_FEE_TARGET_FRI . set_lossy ( v) ;
448+ return Some ( GasPrice ( v) ) ;
449+ }
450+ match self . deps . l1_gas_price_provider . get_strk_to_usd_rate ( timestamp) . await {
451+ Ok ( rate) => {
452+ let target = compute_fee_target ( target_atto_usd_per_l2_gas, rate) ;
453+ match target {
454+ Some ( t) => SNIP35_FEE_TARGET_FRI . set_lossy ( t. 0 ) ,
455+ None => warn ! ( "STRK/USD oracle returned zero rate, freezing fee_proposal" ) ,
456+ }
457+ target
458+ }
459+ Err ( e) => {
460+ warn ! ( "STRK/USD oracle error: {e:?}, freezing fee_proposal" ) ;
461+ None
462+ }
463+ }
464+ }
465+
441466 /// Compute the proposer's fee_proposal: clamp the oracle's `fee_target` to a margin around
442467 /// `fee_actual`. When `fee_actual` is `None` (window incomplete), freeze at `l2_gas_price`; the
443468 /// validator derives the same fallback so both sides agree.
@@ -455,21 +480,7 @@ impl SequencerConsensusContext {
455480 } ;
456481 SNIP35_FEE_ACTUAL_FRI . set_lossy ( fee_actual. 0 ) ;
457482
458- let fee_target = match self . deps . l1_gas_price_provider . get_strk_to_usd_rate ( timestamp) . await
459- {
460- Ok ( rate) => {
461- let target = compute_fee_target ( target_atto_usd_per_l2_gas, rate) ;
462- match target {
463- Some ( t) => SNIP35_FEE_TARGET_FRI . set_lossy ( t. 0 ) ,
464- None => warn ! ( "STRK/USD oracle returned zero rate, freezing fee_proposal" ) ,
465- }
466- target
467- }
468- Err ( e) => {
469- warn ! ( "STRK/USD oracle error: {e:?}, freezing fee_proposal" ) ;
470- None
471- }
472- } ;
483+ let fee_target = self . resolve_fee_target ( timestamp, target_atto_usd_per_l2_gas) . await ;
473484
474485 let proposal = compute_fee_proposal (
475486 fee_target,
0 commit comments