Skip to content

Commit 74fa82a

Browse files
starknet_os_runner: add executed_class_hashes to virtual block execution data
1 parent 12b1c26 commit 74fa82a

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

crates/starknet_os_runner/src/virtual_block_executor.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::collections::HashSet;
2+
13
use blockifier::blockifier::config::TransactionExecutorConfig;
24
use blockifier::blockifier::transaction_executor::{
35
TransactionExecutionOutput,
@@ -14,7 +16,7 @@ use blockifier::transaction::account_transaction::ExecutionFlags;
1416
use blockifier::transaction::transaction_execution::Transaction as BlockifierTransaction;
1517
use blockifier_reexecution::state_reader::rpc_state_reader::RpcStateReader;
1618
use starknet_api::block::BlockNumber;
17-
use starknet_api::core::ChainId;
19+
use starknet_api::core::{ChainId, ClassHash};
1820
use starknet_api::transaction::fields::Fee;
1921
use starknet_api::transaction::{Transaction, TransactionHash};
2022

@@ -32,6 +34,8 @@ pub struct VirtualBlockExecutionData {
3234
pub block_context: BlockContext,
3335
/// The initial state reads (accessed state) during execution.
3436
pub initial_reads: StateMaps,
37+
/// The class hashes of all contracts executed in the virtual block.
38+
pub executed_class_hashes: HashSet<ClassHash>,
3539
}
3640

3741
/// Executes a virtual block of transactions.
@@ -117,7 +121,18 @@ pub trait VirtualBlockExecutor {
117121
.get_initial_reads()
118122
.map_err(|e| VirtualBlockExecutorError::ReexecutionError(Box::new(e.into())))?;
119123

120-
Ok(VirtualBlockExecutionData { execution_outputs, block_context, initial_reads })
124+
let executed_class_hashes = transaction_executor
125+
.bouncer
126+
.lock()
127+
.expect("Bouncer lock failed.")
128+
.get_executed_class_hashes();
129+
130+
Ok(VirtualBlockExecutionData {
131+
execution_outputs,
132+
block_context,
133+
initial_reads,
134+
executed_class_hashes,
135+
})
121136
}
122137

123138
/// Converts Invoke transactions to blockifier transactions.

crates/starknet_os_runner/src/virtual_block_executor_test.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,9 @@ fn test_execute_constructed_balance_of_transaction() {
165165
"initial_reads.storage should be non-empty (balance storage was read)"
166166
);
167167

168+
// Verify executed class hashes were captured.
169+
assert!(!result.executed_class_hashes.is_empty(), "executed_class_hashes should be non-empty");
170+
168171
// Verify the specific ERC20 balance storage key was read.
169172
// ERC20 contracts store balances in "ERC20_balances" mapping keyed by address.
170173
let strk_token = ContractAddress::try_from(felt!(STRK_TOKEN_ADDRESS)).unwrap();

0 commit comments

Comments
 (0)