@@ -889,14 +889,17 @@ impl AuthorityState {
889889
890890 let tx_data = transaction. data ( ) . transaction_data ( ) ;
891891
892+ let tx_and_auth_input_objects = transaction. input_objects ( ) ?. collect :: < Vec < _ > > ( ) ;
893+ let tx_receiving_objects = tx_data. receiving_objects ( ) ;
894+
892895 // Note: the deny checks may do redundant package loads but:
893896 // - they only load packages when there is an active package deny map
894897 // - the loads are cached anyway
895898 iota_transaction_checks:: deny:: check_transaction_for_signing (
896899 tx_data,
897900 transaction. tx_signatures ( ) ,
898- & tx_data . input_objects ( ) ? ,
899- & tx_data . receiving_objects ( ) ,
901+ & tx_and_auth_input_objects ,
902+ & tx_receiving_objects ,
900903 & self . config . transaction_deny_config ,
901904 self . get_backing_package_store ( ) . as_ref ( ) ,
902905 ) ?;
@@ -905,8 +908,13 @@ impl AuthorityState {
905908 // Authenticator input objects and the account object are loaded in the same
906909 // call if there is a sender `MoveAuthenticator` signature present in the
907910 // transaction.
908- let ( tx_input_objects, tx_receiving_objects, auth_input_objects, account_object) =
909- self . read_objects_for_signing ( & transaction, epoch) ?;
911+ let ( tx_input_objects, tx_receiving_objects, auth_input_objects, account_object) = self
912+ . read_objects_for_signing (
913+ & transaction,
914+ & tx_and_auth_input_objects,
915+ & tx_receiving_objects,
916+ epoch,
917+ ) ?;
910918
911919 // Get the sender `MoveAuthenticator`, if any.
912920 // Only one `MoveAuthenticator` signature is possible, since it is not
@@ -1182,12 +1190,15 @@ impl AuthorityState {
11821190 let observed_effects_digest = observed_effects. digest ( ) ;
11831191 if & observed_effects_digest != expected_effects_digest {
11841192 panic ! (
1185- "Locally executed effects do not match canonical effects! expected_effects_digest={:?} observed_effects_digest={:?} expected_effects={:?} observed_effects={:?} input_objects ={:?}" ,
1193+ "Locally executed effects do not match canonical effects! expected_effects_digest={:?} observed_effects_digest={:?} expected_effects={:?} observed_effects={:?} transaction_input_objects={:?} authenticator_input_objects ={:?}" ,
11861194 expected_effects_digest,
11871195 observed_effects_digest,
11881196 effects. data( ) ,
11891197 observed_effects,
1190- transaction. data( ) . transaction_data( ) . input_objects( )
1198+ transaction. data( ) . transaction_data( ) . input_objects( ) ,
1199+ transaction
1200+ . sender_move_authenticator( )
1201+ . map( |a| a. input_objects( ) )
11911202 ) ;
11921203 }
11931204 Ok ( ( ) )
@@ -1314,7 +1325,7 @@ impl AuthorityState {
13141325 . execution_load_input_objects_latency
13151326 . start_timer ( ) ;
13161327
1317- let input_objects = certificate. collect_all_inputs ( ) ?;
1328+ let input_objects = certificate. input_objects ( ) ?. collect :: < Vec < _ > > ( ) ;
13181329
13191330 let input_objects = self . input_loader . read_objects_for_execution (
13201331 epoch_store,
@@ -5454,6 +5465,8 @@ impl AuthorityState {
54545465 fn read_objects_for_signing (
54555466 & self ,
54565467 transaction : & VerifiedTransaction ,
5468+ input_object_kinds : & [ InputObjectKind ] ,
5469+ receiving_objects : & [ ObjectRef ] ,
54575470 epoch : u64 ,
54585471 ) -> IotaResult < (
54595472 InputObjects ,
@@ -5463,8 +5476,8 @@ impl AuthorityState {
54635476 ) > {
54645477 let ( input_objects, tx_receiving_objects) = self . input_loader . read_objects_for_signing (
54655478 Some ( transaction. digest ( ) ) ,
5466- & transaction . collect_all_inputs ( ) ? ,
5467- & transaction . data ( ) . transaction_data ( ) . receiving_objects ( ) ,
5479+ & input_object_kinds ,
5480+ & receiving_objects,
54685481 epoch,
54695482 ) ?;
54705483
0 commit comments