@@ -373,18 +373,14 @@ fn post_accumulator_attestation(
373
373
}
374
374
375
375
pub fn update_v2 ( bank : & Bank ) -> std:: result:: Result < ( ) , AccumulatorUpdateErrorV1 > {
376
- let accounts = bank
376
+ let accounts: Vec < ( Pubkey , AccountSharedData ) > = bank
377
377
. get_program_accounts ( & ORACLE_PUBKEY , & ScanConfig :: new ( true ) )
378
378
. map_err ( AccumulatorUpdateErrorV1 :: GetProgramAccounts ) ?;
379
379
380
380
let mut any_v1_aggregations = false ;
381
381
let mut v2_messages = Vec :: new ( ) ;
382
382
383
- let account_datas = accounts
384
- . iter ( )
385
- . map ( |( _, account) | account. data ( ) . borrow ( ) )
386
- . collect :: < Vec < _ > > ( ) ;
387
- let message = pyth_oracle:: validator:: compute_publisher_caps ( account_datas, bank. clock ( ) . unix_timestamp ) ;
383
+ compute_publisher_stake_caps ( & accounts, bank. clock ( ) . unix_timestamp , & mut v2_messages, true ) ;
388
384
389
385
for ( pubkey, mut account) in accounts {
390
386
let mut price_account_data = account. data ( ) . to_owned ( ) ;
@@ -414,3 +410,20 @@ pub fn update_v2(bank: &Bank) -> std::result::Result<(), AccumulatorUpdateErrorV
414
410
415
411
update_v1 ( bank, & v2_messages, any_v1_aggregations)
416
412
}
413
+
414
+ pub fn compute_publisher_stake_caps (
415
+ accounts : & Vec < ( Pubkey , AccountSharedData ) > ,
416
+ timestamp : i64 ,
417
+ messages : & mut Vec < Vec < u8 > > ,
418
+ is_active : bool
419
+ ) {
420
+ let account_datas : Vec < & [ u8 ] > = accounts
421
+ . iter ( )
422
+ . map ( |( _, account) | account. data ( ) . borrow ( ) )
423
+ . collect ( ) ;
424
+ let message = pyth_oracle:: validator:: compute_publisher_caps ( account_datas, timestamp) ;
425
+
426
+ if is_active {
427
+ messages. push ( message) ;
428
+ }
429
+ }
0 commit comments