Skip to content

Commit 0e28d9e

Browse files
central_systest_blobs: sort state diff in preconfirmed block
1 parent aa0ee34 commit 0e28d9e

3 files changed

Lines changed: 24 additions & 3 deletions

File tree

crates/apollo_batcher/src/cende_client_types.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff 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+
}

crates/central_systest_blobs/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ license-file.workspace = true
77
description = "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"] }
1111
apollo_batcher_types.workspace = true
1212
apollo_class_manager_types = { workspace = true, features = ["testing"] }
1313
apollo_consensus.workspace = true

crates/central_systest_blobs/src/cende_blob_regression_test.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff 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;

0 commit comments

Comments
 (0)