Skip to content

Commit

Permalink
refactor(blockifier): make VersionedConstantsOverrides fields optional
Browse files Browse the repository at this point in the history
  • Loading branch information
ayeletstarkware committed Oct 21, 2024
1 parent b50728a commit cea3822
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 31 deletions.
37 changes: 15 additions & 22 deletions crates/blockifier/src/versioned_constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -299,32 +299,25 @@ impl VersionedConstants {
Self { vm_resource_fee_cost, archival_data_gas_costs, ..latest }
}

pub fn latest_constants_with_overrides(
validate_max_n_steps: u32,
max_recursion_depth: usize,
) -> Self {
Self { validate_max_n_steps, max_recursion_depth, ..Self::latest_constants().clone() }
}

/// Returns the latest versioned constants after applying the given overrides.
pub fn get_versioned_constants(
versioned_constants_overrides: Option<VersionedConstantsOverrides>,
) -> Self {
let mut constants = Self::latest_constants().clone();

if let Some(overrides) = versioned_constants_overrides {
let VersionedConstantsOverrides {
validate_max_n_steps,
max_recursion_depth,
invoke_tx_max_n_steps,
} = overrides;
Self {
validate_max_n_steps,
max_recursion_depth,
invoke_tx_max_n_steps,
..Self::latest_constants().clone()
if let Some(validate_max_n_steps) = overrides.validate_max_n_steps {
constants.validate_max_n_steps = validate_max_n_steps;
}
if let Some(max_recursion_depth) = overrides.max_recursion_depth {
constants.max_recursion_depth = max_recursion_depth;
}
if let Some(invoke_tx_max_n_steps) = overrides.invoke_tx_max_n_steps {
constants.invoke_tx_max_n_steps = invoke_tx_max_n_steps;
}
} else {
Self::latest_constants().clone()
}

constants
}

pub fn get_archival_data_gas_costs(
Expand Down Expand Up @@ -831,9 +824,9 @@ pub struct ResourcesByVersion {
// TODO(Ayelet): Make fields optional.
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct VersionedConstantsOverrides {
pub validate_max_n_steps: u32,
pub max_recursion_depth: usize,
pub invoke_tx_max_n_steps: u32,
pub validate_max_n_steps: Option<u32>,
pub max_recursion_depth: Option<usize>,
pub invoke_tx_max_n_steps: Option<u32>,
}

impl SerializeConfig for VersionedConstantsOverrides {
Expand Down
6 changes: 3 additions & 3 deletions crates/blockifier/src/versioned_constants_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ fn test_versioned_constants_overrides() {

// Create a versioned constants copy with overriden values.
let result = VersionedConstants::get_versioned_constants(Some(VersionedConstantsOverrides {
validate_max_n_steps: updated_validate_max_n_steps,
max_recursion_depth: updated_max_recursion_depth,
invoke_tx_max_n_steps: updated_invoke_tx_max_n_steps,
validate_max_n_steps: Some(updated_validate_max_n_steps),
max_recursion_depth: Some(updated_max_recursion_depth),
invoke_tx_max_n_steps: Some(updated_invoke_tx_max_n_steps),
}));

// Assert the new values are used.
Expand Down
13 changes: 8 additions & 5 deletions crates/gateway/src/stateful_transaction_validator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use blockifier::bouncer::BouncerConfig;
use blockifier::context::{BlockContext, ChainInfo};
use blockifier::state::cached_state::CachedState;
use blockifier::transaction::account_transaction::AccountTransaction;
use blockifier::versioned_constants::VersionedConstants;
use blockifier::versioned_constants::{VersionedConstants, VersionedConstantsOverrides};
#[cfg(test)]
use mockall::automock;
use starknet_api::core::{ContractAddress, Nonce};
Expand Down Expand Up @@ -95,10 +95,13 @@ impl StatefulTransactionValidator {
let latest_block_info = get_latest_block_info(state_reader_factory)?;
let state_reader = state_reader_factory.get_state_reader(latest_block_info.block_number);
let state = CachedState::new(state_reader);
let versioned_constants = VersionedConstants::latest_constants_with_overrides(
self.config.validate_max_n_steps,
self.config.max_recursion_depth,
);
let versioned_constants_overrides = VersionedConstantsOverrides {
validate_max_n_steps: Some(self.config.validate_max_n_steps),
max_recursion_depth: Some(self.config.max_recursion_depth),
invoke_tx_max_n_steps: None,
};
let versioned_constants =
VersionedConstants::get_versioned_constants(Some(versioned_constants_overrides));
let mut block_info = latest_block_info;
block_info.block_number = block_info.block_number.unchecked_next();
// TODO(yael 21/4/24): create the block context using pre_process_block once we will be
Expand Down
6 changes: 5 additions & 1 deletion crates/native_blockifier/src/py_objects.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,11 @@ impl From<PyVersionedConstantsOverrides> for VersionedConstantsOverrides {
max_recursion_depth,
invoke_tx_max_n_steps,
} = py_versioned_constants_overrides;
Self { validate_max_n_steps, max_recursion_depth, invoke_tx_max_n_steps }
Self {
validate_max_n_steps: Some(validate_max_n_steps),
max_recursion_depth: Some(max_recursion_depth),
invoke_tx_max_n_steps: Some(invoke_tx_max_n_steps),
}
}
}

Expand Down

0 comments on commit cea3822

Please sign in to comment.