@@ -4,7 +4,7 @@ use crate::{
4
4
self as spl_token_lending,
5
5
error:: LendingError ,
6
6
instruction:: LendingInstruction ,
7
- logs:: { emit_log_event} ,
7
+ logs:: { emit_log_event, PythOraclePriceUpdate , SwitchboardV1OraclePriceUpdate } ,
8
8
math:: { Decimal , Rate , TryAdd , TryDiv , TryMul , TrySub , WAD } ,
9
9
pyth,
10
10
state:: {
@@ -2215,6 +2215,12 @@ fn get_pyth_price(pyth_price_info: &AccountInfo, clock: &Clock) -> Result<Decima
2215
2215
. ok_or ( LendingError :: MathOverflow ) ?;
2216
2216
Decimal :: from ( price) . try_div ( decimals) ?
2217
2217
} ;
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
+ } ) ;
2218
2224
2219
2225
Ok ( market_price)
2220
2226
}
@@ -2242,10 +2248,10 @@ fn get_switchboard_price(
2242
2248
// return Err(LendingError::InvalidAccountInput.into());
2243
2249
// }
2244
2250
let round_result: RoundResult = get_aggregator_result ( & aggregator) ?;
2245
-
2251
+ let open_slot = round_result . round_open_slot . unwrap ( ) ;
2246
2252
let slots_elapsed = clock
2247
2253
. slot
2248
- . checked_sub ( round_result . round_open_slot . unwrap ( ) )
2254
+ . checked_sub ( open_slot )
2249
2255
. ok_or ( LendingError :: MathOverflow ) ?;
2250
2256
if slots_elapsed >= STALE_AFTER_SLOTS_ELAPSED {
2251
2257
msg ! ( "Switchboard oracle price is stale" ) ;
@@ -2259,7 +2265,13 @@ fn get_switchboard_price(
2259
2265
let price_quotient = 10u64 . pow ( 9 ) ;
2260
2266
let price = ( ( price_quotient as f64 ) * price_float) as u128 ;
2261
2267
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)
2263
2275
}
2264
2276
2265
2277
/// Issue a spl_token `InitializeAccount` instruction.
0 commit comments