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 f70ffdd commit 81d5744
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 33 deletions.
41 changes: 18 additions & 23 deletions crates/blockifier/src/versioned_constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -299,28 +299,23 @@ 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: VersionedConstantsOverrides,
) -> Self {
let VersionedConstantsOverrides {
validate_max_n_steps,
max_recursion_depth,
invoke_tx_max_n_steps,
} = versioned_constants_overrides;
Self {
validate_max_n_steps,
max_recursion_depth,
invoke_tx_max_n_steps,
..Self::latest_constants().clone()
let mut constants = Self::latest_constants().clone();

if let Some(validate_max_n_steps) = versioned_constants_overrides.validate_max_n_steps {
constants.validate_max_n_steps = validate_max_n_steps;
}
if let Some(max_recursion_depth) = versioned_constants_overrides.max_recursion_depth {
constants.max_recursion_depth = max_recursion_depth;
}
if let Some(invoke_tx_max_n_steps) = versioned_constants_overrides.invoke_tx_max_n_steps {
constants.invoke_tx_max_n_steps = invoke_tx_max_n_steps;
}

constants
}

pub fn get_archival_data_gas_costs(
Expand Down Expand Up @@ -826,18 +821,18 @@ pub struct ResourcesByVersion {

#[derive(Clone, Debug, 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 Default for VersionedConstantsOverrides {
// TODO: update the default values once the actual values are known.
fn default() -> Self {
Self {
validate_max_n_steps: 1000000,
max_recursion_depth: 50,
invoke_tx_max_n_steps: 10000000,
validate_max_n_steps: Some(1000000),
max_recursion_depth: Some(50),
invoke_tx_max_n_steps: Some(10000000),
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions crates/blockifier/src/versioned_constants_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ fn test_versioned_constants_overrides() {
let updated_validate_max_n_steps = versioned_constants.validate_max_n_steps + 1;
let updated_max_recursion_depth = versioned_constants.max_recursion_depth + 1;

// Create a versioned constants copy with overriden values.
// Create a versioned constants copy with overridden values.
let result = VersionedConstants::get_versioned_constants(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(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 81d5744

Please sign in to comment.