From 44c2570b9346cdd19f263c3b2e4c3ec36ff7c851 Mon Sep 17 00:00:00 2001 From: Ammar Arif Date: Mon, 17 Feb 2025 10:53:25 -0500 Subject: [PATCH] remove from `CfgEnv` --- crates/katana/cli/src/options.rs | 5 +++++ .../src/implementation/blockifier/mod.rs | 19 ++++++++++++++++--- crates/katana/node/src/config/rpc.rs | 1 + crates/katana/node/src/lib.rs | 15 ++++++++++----- crates/katana/primitives/src/env.rs | 2 -- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/crates/katana/cli/src/options.rs b/crates/katana/cli/src/options.rs index 24e8b8005b..82c872fdb5 100644 --- a/crates/katana/cli/src/options.rs +++ b/crates/katana/cli/src/options.rs @@ -418,3 +418,8 @@ fn default_metrics_addr() -> IpAddr { fn default_metrics_port() -> u16 { DEFAULT_METRICS_PORT } + +#[cfg(feature = "server")] +fn default_max_call_gas() -> u64 { + DEFAULT_RPC_MAX_CALL_GAS +} diff --git a/crates/katana/executor/src/implementation/blockifier/mod.rs b/crates/katana/executor/src/implementation/blockifier/mod.rs index 84ade7cbe4..319a5199a5 100644 --- a/crates/katana/executor/src/implementation/blockifier/mod.rs +++ b/crates/katana/executor/src/implementation/blockifier/mod.rs @@ -44,12 +44,17 @@ pub struct BlockifierFactory { cfg: CfgEnv, flags: ExecutionFlags, limits: BlockLimits, + max_call_gas: u64, } impl BlockifierFactory { /// Create a new factory with the given configuration and simulation flags. pub fn new(cfg: CfgEnv, flags: ExecutionFlags, limits: BlockLimits) -> Self { - Self { cfg, flags, limits } + Self { cfg, flags, limits, max_call_gas: 1_000_000_000 } + } + + pub fn set_max_call_gas(&mut self, max_call_gas: u64) { + self.max_call_gas = max_call_gas; } } @@ -72,7 +77,14 @@ impl ExecutorFactory for BlockifierFactory { let cfg_env = self.cfg.clone(); let flags = self.flags.clone(); let limits = self.limits.clone(); - Box::new(StarknetVMProcessor::new(Box::new(state), block_env, cfg_env, flags, limits)) + Box::new(StarknetVMProcessor::new( + Box::new(state), + block_env, + cfg_env, + flags, + limits, + self.max_call_gas, + )) } fn cfg(&self) -> &CfgEnv { @@ -103,6 +115,7 @@ impl<'a> StarknetVMProcessor<'a> { cfg_env: CfgEnv, simulation_flags: ExecutionFlags, limits: BlockLimits, + max_call_gas: u64, ) -> Self { let transactions = Vec::new(); let block_context = utils::block_context_from_envs(&block_env, &cfg_env); @@ -119,7 +132,7 @@ impl<'a> StarknetVMProcessor<'a> { simulation_flags, stats: Default::default(), bouncer, - max_call_gas: cfg_env.max_call_gas, + max_call_gas, } } diff --git a/crates/katana/node/src/config/rpc.rs b/crates/katana/node/src/config/rpc.rs index 33c4a12591..57d5c63212 100644 --- a/crates/katana/node/src/config/rpc.rs +++ b/crates/katana/node/src/config/rpc.rs @@ -13,6 +13,7 @@ pub const DEFAULT_RPC_MAX_EVENT_PAGE_SIZE: u64 = 1024; pub const DEFAULT_RPC_MAX_PROOF_KEYS: u64 = 100; /// Default maximum gas for the `starknet_call` RPC method. pub const DEFAULT_RPC_MAX_CALL_GAS: u64 = 1_000_000_000; + /// List of RPC modules supported by Katana. #[derive( Debug, diff --git a/crates/katana/node/src/lib.rs b/crates/katana/node/src/lib.rs index 83772a5ff3..5ec25cce61 100644 --- a/crates/katana/node/src/lib.rs +++ b/crates/katana/node/src/lib.rs @@ -182,11 +182,16 @@ pub async fn build(mut config: Config) -> Result { .with_account_validation(config.dev.account_validation) .with_fee(config.dev.fee); - let executor_factory = Arc::new(BlockifierFactory::new( - cfg_env, - execution_flags, - config.sequencing.block_limits(), - )); + let executor_factory = { + let mut factory = + BlockifierFactory::new(cfg_env, execution_flags, config.sequencing.block_limits()); + + if let Some(max_call_gas) = config.rpc.max_call_gas { + factory.set_max_call_gas(max_call_gas); + } + + Arc::new(factory) + }; // --- build backend diff --git a/crates/katana/primitives/src/env.rs b/crates/katana/primitives/src/env.rs index 84103aa041..4c3b88ad48 100644 --- a/crates/katana/primitives/src/env.rs +++ b/crates/katana/primitives/src/env.rs @@ -30,8 +30,6 @@ pub struct CfgEnv { pub validate_max_n_steps: u32, /// The maximum recursion depth allowed. pub max_recursion_depth: usize, - /// The maximum gas allowed for the `starknet_call` RPC method. - pub max_call_gas: u64, } /// The contract addresses of the tokens used for the fees.