File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -642,3 +642,22 @@ impl From<StateMaps> for StarknetClientStateDiff {
642642 } )
643643 }
644644}
645+
646+ #[ cfg( any( test, feature = "testing" ) ) ]
647+ impl StarknetClientStateDiff {
648+ pub fn sort ( & mut self ) {
649+ // Storage diffs also need inner sorting: sort each address diffs, then sort the addresses.
650+ self . 0 . storage_diffs . sort_by_key ( |address, _| * address) ;
651+ for ( _, address_diffs) in self . 0 . storage_diffs . iter_mut ( ) {
652+ address_diffs. sort ( ) ;
653+ }
654+ self . 0 . deployed_contracts . sort_by_key ( |deployed_contract| deployed_contract. address ) ;
655+ self . 0 . declared_classes . sort_by_key ( |declared_class| declared_class. class_hash ) ;
656+ self . 0 . old_declared_contracts . sort ( ) ;
657+ self . 0 . nonces . sort_by_key ( |address, _nonce| * address) ;
658+ self . 0 . replaced_classes . sort_by_key ( |replaced_class| replaced_class. address ) ;
659+ self . 0
660+ . migrated_compiled_classes
661+ . sort_by_key ( |migrated_compiled_class| migrated_compiled_class. class_hash ) ;
662+ }
663+ }
Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ license-file.workspace = true
77description = " Keeps blob JSONs for centralized system test, and tests for regression"
88
99[dev-dependencies ]
10- apollo_batcher. workspace = true
10+ apollo_batcher = { workspace = true , features = [ " testing " ] }
1111apollo_batcher_types.workspace = true
1212apollo_class_manager_types = { workspace = true , features = [" testing" ] }
1313apollo_consensus.workspace = true
Original file line number Diff line number Diff line change @@ -536,11 +536,13 @@ impl BlobFactory {
536536 & execution_info,
537537 None ,
538538 ) ) ;
539- let tx_state_diff = StarknetClientStateDiff :: from ( state_changes. state_maps ) . 0 ;
539+ let mut tx_state_diff = StarknetClientStateDiff :: from ( state_changes. state_maps ) ;
540+ // To keep the output deterministic, sort the state diff.
541+ tx_state_diff. sort ( ) ;
540542
541543 transactions. push ( CendePreconfirmedTransaction :: from ( internal) ) ;
542544 transaction_receipts. push ( Some ( receipt) ) ;
543- transaction_state_diffs. push ( Some ( tx_state_diff) ) ;
545+ transaction_state_diffs. push ( Some ( tx_state_diff. 0 ) ) ;
544546
545547 // Update the state for the next tx.
546548 state = tx_state. state ;
You can’t perform that action at this time.
0 commit comments