@@ -373,18 +373,14 @@ fn post_accumulator_attestation(
373373}
374374
375375pub fn update_v2 ( bank : & Bank ) -> std:: result:: Result < ( ) , AccumulatorUpdateErrorV1 > {
376- let accounts = bank
376+ let accounts: Vec < ( Pubkey , AccountSharedData ) > = bank
377377 . get_program_accounts ( & ORACLE_PUBKEY , & ScanConfig :: new ( true ) )
378378 . map_err ( AccumulatorUpdateErrorV1 :: GetProgramAccounts ) ?;
379379
380380 let mut any_v1_aggregations = false ;
381381 let mut v2_messages = Vec :: new ( ) ;
382382
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 ) ;
388384
389385 for ( pubkey, mut account) in accounts {
390386 let mut price_account_data = account. data ( ) . to_owned ( ) ;
@@ -414,3 +410,20 @@ pub fn update_v2(bank: &Bank) -> std::result::Result<(), AccumulatorUpdateErrorV
414410
415411 update_v1 ( bank, & v2_messages, any_v1_aggregations)
416412}
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