@@ -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:: {
@@ -2215,6 +2215,12 @@ fn get_pyth_price(pyth_price_info: &AccountInfo, clock: &Clock) -> Result<Decima
22152215 . ok_or ( LendingError :: MathOverflow ) ?;
22162216 Decimal :: from ( price) . try_div ( decimals) ?
22172217 } ;
2218+ emit_log_event ( & PythOraclePriceUpdate {
2219+ oracle_pubkey : * pyth_price_info. key ,
2220+ price : market_price,
2221+ conf : conf,
2222+ published_slot : pyth_price. valid_slot ,
2223+ } ) ;
22182224
22192225 Ok ( market_price)
22202226}
@@ -2242,10 +2248,10 @@ fn get_switchboard_price(
22422248 // return Err(LendingError::InvalidAccountInput.into());
22432249 // }
22442250 let round_result: RoundResult = get_aggregator_result ( & aggregator) ?;
2245-
2251+ let open_slot = round_result . round_open_slot . unwrap ( ) ;
22462252 let slots_elapsed = clock
22472253 . slot
2248- . checked_sub ( round_result . round_open_slot . unwrap ( ) )
2254+ . checked_sub ( open_slot )
22492255 . ok_or ( LendingError :: MathOverflow ) ?;
22502256 if slots_elapsed >= STALE_AFTER_SLOTS_ELAPSED {
22512257 msg ! ( "Switchboard oracle price is stale" ) ;
@@ -2259,7 +2265,13 @@ fn get_switchboard_price(
22592265 let price_quotient = 10u64 . pow ( 9 ) ;
22602266 let price = ( ( price_quotient as f64 ) * price_float) as u128 ;
22612267
2262- Decimal :: from ( price) . try_div ( price_quotient)
2268+ let market_price = Decimal :: from ( price) . try_div ( price_quotient) ?;
2269+ emit_log_event ( & SwitchboardV1OraclePriceUpdate {
2270+ oracle_pubkey : * switchboard_feed_info. key ,
2271+ price : market_price,
2272+ published_slot : open_slot,
2273+ } ) ;
2274+ Ok ( market_price)
22632275}
22642276
22652277/// Issue a spl_token `InitializeAccount` instruction.
0 commit comments