Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions crates/blockifier/src/blockifier/transaction_executor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ impl<S: StateReader> TransactionExecutor<S> {
&transactional_state,
&tx_state_changes_keys,
&tx_execution_info.summarize(&self.block_context.versioned_constants),
&tx_execution_info.summarize_builtins(),
&tx_execution_info.receipt.resources,
&self.block_context.versioned_constants,
)?;
Expand Down
6 changes: 4 additions & 2 deletions crates/blockifier/src/bouncer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,7 @@ impl Bouncer {
state_reader: &S,
tx_state_changes_keys: &StateChangesKeys,
tx_execution_summary: &ExecutionSummary,
tx_builtin_counters: &BuiltinCounterMap,
tx_resources: &TransactionResources,
versioned_constants: &VersionedConstants,
) -> TransactionExecutorResult<()> {
Expand All @@ -526,7 +527,7 @@ impl Bouncer {
tx_resources,
&marginal_state_changes_keys,
versioned_constants,
&tx_execution_summary.builtin_counters,
tx_builtin_counters,
&self.bouncer_config.builtin_weights,
)?;

Expand Down Expand Up @@ -862,6 +863,7 @@ pub fn get_particia_update_resources(n_visited_storage_entries: usize) -> Execut
pub fn verify_tx_weights_within_max_capacity<S: StateReader>(
state_reader: &S,
tx_execution_summary: &ExecutionSummary,
tx_builtin_counters: &BuiltinCounterMap,
tx_resources: &TransactionResources,
tx_state_changes_keys: &StateChangesKeys,
bouncer_config: &BouncerConfig,
Expand All @@ -874,7 +876,7 @@ pub fn verify_tx_weights_within_max_capacity<S: StateReader>(
tx_resources,
tx_state_changes_keys,
versioned_constants,
&tx_execution_summary.builtin_counters,
tx_builtin_counters,
&bouncer_config.builtin_weights,
)?
.bouncer_weights;
Expand Down
5 changes: 5 additions & 0 deletions crates/blockifier/src/bouncer_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,7 @@ fn test_bouncer_try_update_sierra_gas(

// Prepare the resources to be added to the bouncer.
let execution_summary = ExecutionSummary::default();
let builtin_counters = BuiltinCounterMap::default();
let tx_resources = TransactionResources {
// Only the `sierra_gas` field is varied.
computation: ComputationResources { sierra_gas: added_gas, ..Default::default() },
Expand All @@ -231,6 +232,7 @@ fn test_bouncer_try_update_sierra_gas(
let mut result = verify_tx_weights_within_max_capacity(
&transactional_state,
&execution_summary,
&builtin_counters,
&tx_resources,
&tx_state_changes_keys,
&bouncer.bouncer_config,
Expand All @@ -250,6 +252,7 @@ fn test_bouncer_try_update_sierra_gas(
&transactional_state,
&tx_state_changes_keys,
&execution_summary,
&builtin_counters,
&tx_resources,
&block_context.versioned_constants,
);
Expand Down Expand Up @@ -295,6 +298,7 @@ fn test_bouncer_try_update_n_txs(
&first_transactional_state,
&first_tx_state_changes_keys,
&ExecutionSummary::default(),
&BuiltinCounterMap::default(),
&TransactionResources::default(),
&block_context.versioned_constants,
);
Expand All @@ -310,6 +314,7 @@ fn test_bouncer_try_update_n_txs(
&second_transactional_state,
&second_tx_state_changes_keys,
&ExecutionSummary::default(),
&BuiltinCounterMap::default(),
&TransactionResources::default(),
&block_context.versioned_constants,
);
Expand Down
1 change: 1 addition & 0 deletions crates/blockifier/src/concurrency/worker_logic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,7 @@ impl<S: StateReader> WorkerExecutor<S> {
&tx_versioned_state,
&tx_state_changes_keys,
&tx_execution_info.summarize(&self.block_context.versioned_constants),
&tx_execution_info.summarize_builtins(),
&tx_execution_info.receipt.resources,
&self.block_context.versioned_constants,
);
Expand Down
8 changes: 1 addition & 7 deletions crates/blockifier/src/execution/call_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use crate::blockifier_versioned_constants::VersionedConstants;
use crate::execution::contract_class::TrackedResource;
use crate::execution::entry_point::CallEntryPoint;
use crate::state::cached_state::StorageEntry;
use crate::utils::{add_maps, u64_from_usize};
use crate::utils::u64_from_usize;

#[cfg_attr(feature = "transaction_serde", derive(serde::Deserialize))]
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize)]
Expand Down Expand Up @@ -104,7 +104,6 @@ pub struct ExecutionSummary {
pub visited_storage_entries: HashSet<StorageEntry>,
pub l2_to_l1_payload_lengths: Vec<usize>,
pub event_summary: EventSummary,
pub builtin_counters: BuiltinCounterMap,
}

impl Add for ExecutionSummary {
Expand All @@ -115,7 +114,6 @@ impl Add for ExecutionSummary {
self.executed_class_hashes.extend(other.executed_class_hashes);
self.visited_storage_entries.extend(other.visited_storage_entries);
self.l2_to_l1_payload_lengths.extend(other.l2_to_l1_payload_lengths);
add_maps(&mut self.builtin_counters, &other.builtin_counters);
self.event_summary += other.event_summary;
self
}
Expand Down Expand Up @@ -257,7 +255,6 @@ impl CallInfo {
let mut visited_storage_entries: HashSet<StorageEntry> = HashSet::new();
let mut event_summary = EventSummary::default();
let mut l2_to_l1_payload_lengths = Vec::new();
let mut builtin_counters = BuiltinCounterMap::new();

for call_info in self.iter() {
// Class hashes.
Expand All @@ -282,8 +279,6 @@ impl CallInfo {
.map(|message| message.message.payload.0.len()),
);

add_maps(&mut builtin_counters, &call_info.builtin_counters);

// Events: all event resources in the execution tree, unless executing a 0.13.1 block.
if !versioned_constants.ignore_inner_event_resources {
event_summary += call_info.specific_event_summary();
Expand All @@ -307,7 +302,6 @@ impl CallInfo {
visited_storage_entries,
l2_to_l1_payload_lengths,
event_summary,
builtin_counters,
}
}

Expand Down
8 changes: 8 additions & 0 deletions crates/blockifier/src/transaction/objects.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ use crate::fee::fee_checks::FeeCheckError;
use crate::fee::fee_utils::get_fee_by_gas_vector;
use crate::fee::receipt::TransactionReceipt;
use crate::transaction::errors::{TransactionExecutionError, TransactionPreValidationError};
use crate::utils::add_maps;

#[cfg(test)]
#[path = "objects_test.rs"]
Expand Down Expand Up @@ -217,6 +218,13 @@ impl TransactionExecutionInfo {
pub fn summarize(&self, versioned_constants: &VersionedConstants) -> ExecutionSummary {
CallInfo::summarize_many(self.non_optional_call_infos(), versioned_constants)
}

pub fn summarize_builtins(&self) -> BuiltinCounterMap {
self.non_optional_call_infos().fold(BuiltinCounterMap::new(), |mut acc, call_info| {
add_maps(&mut acc, &call_info.builtin_counters);
acc
})
}
}
pub trait ExecutionResourcesTraits {
fn total_n_steps(&self) -> usize;
Expand Down
6 changes: 4 additions & 2 deletions crates/blockifier/src/transaction/objects_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -236,13 +236,15 @@ fn test_summarize(
total_event_keys: 0,
total_event_data_size: 0,
},
// TODO(Meshi): Change it to a relevant value for this test.
builtin_counters: HashMap::new(),
};
// TODO(Meshi): Change it to a relevant value for this test.
let expected_builtins = HashMap::new();

// Call the summarize method.
let actual_summary = tx_execution_info.summarize(VersionedConstants::latest_constants());
let actual_builtins = tx_execution_info.summarize_builtins();

// Compare the actual result with the expected result.
assert_eq!(actual_summary, expected_summary);
assert_eq!(actual_builtins, expected_builtins);
}
2 changes: 2 additions & 0 deletions crates/blockifier/src/transaction/transaction_execution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ impl<U: UpdatableState> ExecutableTransaction<U> for Transaction {
// Check if the transaction is too large to fit any block.
// TODO(Yoni, 1/8/2024): consider caching these two.
let tx_execution_summary = tx_execution_info.summarize(&block_context.versioned_constants);
let tx_builtin_counters = tx_execution_info.summarize_builtins();
let mut tx_state_changes_keys = state.to_state_diff()?.state_maps.keys();
tx_state_changes_keys.update_sequencer_key_in_storage(
&block_context.to_tx_context(self),
Expand All @@ -158,6 +159,7 @@ impl<U: UpdatableState> ExecutableTransaction<U> for Transaction {
verify_tx_weights_within_max_capacity(
state,
&tx_execution_summary,
&tx_builtin_counters,
&tx_execution_info.receipt.resources,
&tx_state_changes_keys,
&block_context.bouncer_config,
Expand Down
Loading