@@ -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:: {
@@ -2341,6 +2341,12 @@ fn get_pyth_price(pyth_price_info: &AccountInfo, clock: &Clock) -> Result<Decima
2341
2341
. ok_or ( LendingError :: MathOverflow ) ?;
2342
2342
Decimal :: from ( price) . try_div ( decimals) ?
2343
2343
} ;
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
+ } ) ;
2344
2350
2345
2351
Ok ( market_price)
2346
2352
}
@@ -2368,10 +2374,10 @@ fn get_switchboard_price(
2368
2374
// return Err(LendingError::InvalidAccountInput.into());
2369
2375
// }
2370
2376
let round_result: RoundResult = get_aggregator_result ( & aggregator) ?;
2371
-
2377
+ let open_slot = round_result . round_open_slot . unwrap ( ) ;
2372
2378
let slots_elapsed = clock
2373
2379
. slot
2374
- . checked_sub ( round_result . round_open_slot . unwrap ( ) )
2380
+ . checked_sub ( open_slot )
2375
2381
. ok_or ( LendingError :: MathOverflow ) ?;
2376
2382
if slots_elapsed >= STALE_AFTER_SLOTS_ELAPSED {
2377
2383
msg ! ( "Switchboard oracle price is stale" ) ;
@@ -2385,7 +2391,13 @@ fn get_switchboard_price(
2385
2391
let price_quotient = 10u64 . pow ( 9 ) ;
2386
2392
let price = ( ( price_quotient as f64 ) * price_float) as u128 ;
2387
2393
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)
2389
2401
}
2390
2402
2391
2403
/// Issue a spl_token `InitializeAccount` instruction.
0 commit comments