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 @@ -532,11 +532,13 @@ impl BlobFactory {
532532 & execution_info,
533533 None ,
534534 ) ) ;
535- let tx_state_diff = StarknetClientStateDiff :: from ( state_changes. state_maps ) . 0 ;
535+ let mut tx_state_diff = StarknetClientStateDiff :: from ( state_changes. state_maps ) ;
536+ // To keep the output deterministic, sort the state diff.
537+ tx_state_diff. sort ( ) ;
536538
537539 transactions. push ( CendePreconfirmedTransaction :: from ( internal) ) ;
538540 transaction_receipts. push ( Some ( receipt) ) ;
539- transaction_state_diffs. push ( Some ( tx_state_diff) ) ;
541+ transaction_state_diffs. push ( Some ( tx_state_diff. 0 ) ) ;
540542 }
541543
542544 CendeWritePreconfirmedBlock {
You can’t perform that action at this time.
0 commit comments