@@ -4,7 +4,7 @@ use crate::{
44 self as spl_token_lending,
55 error:: LendingError ,
66 instruction:: LendingInstruction ,
7- logs:: { emit_log_event} ,
7+ logs:: { emit_log_event, PythOraclePriceUpdate , SwitchboardV1OraclePriceUpdate } ,
88 math:: { Decimal , Rate , TryAdd , TryDiv , TryMul , TrySub , WAD } ,
99 pyth,
1010 state:: {
@@ -2341,6 +2341,12 @@ fn get_pyth_price(pyth_price_info: &AccountInfo, clock: &Clock) -> Result<Decima
23412341 . ok_or ( LendingError :: MathOverflow ) ?;
23422342 Decimal :: from ( price) . try_div ( decimals) ?
23432343 } ;
2344+ emit_log_event ( & PythOraclePriceUpdate {
2345+ oracle_pubkey : * pyth_price_info. key ,
2346+ price : market_price,
2347+ conf : conf,
2348+ published_slot : pyth_price. valid_slot ,
2349+ } ) ;
23442350
23452351 Ok ( market_price)
23462352}
@@ -2368,10 +2374,10 @@ fn get_switchboard_price(
23682374 // return Err(LendingError::InvalidAccountInput.into());
23692375 // }
23702376 let round_result: RoundResult = get_aggregator_result ( & aggregator) ?;
2371-
2377+ let open_slot = round_result . round_open_slot . unwrap ( ) ;
23722378 let slots_elapsed = clock
23732379 . slot
2374- . checked_sub ( round_result . round_open_slot . unwrap ( ) )
2380+ . checked_sub ( open_slot )
23752381 . ok_or ( LendingError :: MathOverflow ) ?;
23762382 if slots_elapsed >= STALE_AFTER_SLOTS_ELAPSED {
23772383 msg ! ( "Switchboard oracle price is stale" ) ;
@@ -2385,7 +2391,13 @@ fn get_switchboard_price(
23852391 let price_quotient = 10u64 . pow ( 9 ) ;
23862392 let price = ( ( price_quotient as f64 ) * price_float) as u128 ;
23872393
2388- Decimal :: from ( price) . try_div ( price_quotient)
2394+ let market_price = Decimal :: from ( price) . try_div ( price_quotient) ?;
2395+ emit_log_event ( & SwitchboardV1OraclePriceUpdate {
2396+ oracle_pubkey : * switchboard_feed_info. key ,
2397+ price : market_price,
2398+ published_slot : open_slot,
2399+ } ) ;
2400+ Ok ( market_price)
23892401}
23902402
23912403/// Issue a spl_token `InitializeAccount` instruction.
0 commit comments