Skip to content

Commit b478d4a

Browse files
committed
Get gas costs directly from syscall handler
commit-id:07f28871
1 parent a729bf6 commit b478d4a

File tree

1 file changed

+7
-28
lines changed

1 file changed

+7
-28
lines changed

crates/cheatnet/src/runtime_extensions/cheatable_starknet_runtime_extension.rs

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@ use crate::runtime_extensions::call_to_blockifier_runtime_extension::execution::
33
};
44
use crate::state::CheatnetState;
55
use anyhow::Result;
6-
use blockifier::blockifier_versioned_constants::SyscallGasCost;
7-
use blockifier::execution::entry_point::EntryPointExecutionContext;
86
use blockifier::execution::syscalls::hint_processor::OUT_OF_GAS_ERROR;
97
use blockifier::execution::syscalls::syscall_base::SyscallResult;
108
use blockifier::execution::syscalls::syscall_executor::SyscallExecutor;
119
use blockifier::execution::syscalls::vm_syscall_utils::{
12-
RevertData, SyscallRequest, SyscallRequestWrapper, SyscallResponse, SyscallResponseWrapper,
13-
SyscallSelector,
10+
RevertData, SyscallExecutorBaseError, SyscallRequest, SyscallRequestWrapper, SyscallResponse,
11+
SyscallResponseWrapper, SyscallSelector,
1412
};
1513
use blockifier::execution::{
1614
common_hints::HintExecutionResult,
@@ -136,23 +134,6 @@ pub fn felt_from_ptr_immutable(
136134
Ok(felt)
137135
}
138136

139-
fn get_syscall_cost(
140-
syscall_selector: SyscallSelector,
141-
context: &EntryPointExecutionContext,
142-
) -> SyscallGasCost {
143-
let gas_costs = context.gas_costs();
144-
match syscall_selector {
145-
SyscallSelector::LibraryCall => gas_costs.syscalls.library_call,
146-
SyscallSelector::CallContract => gas_costs.syscalls.call_contract,
147-
SyscallSelector::Deploy => gas_costs.syscalls.deploy,
148-
SyscallSelector::GetExecutionInfo => gas_costs.syscalls.get_execution_info,
149-
SyscallSelector::GetBlockHash => gas_costs.syscalls.get_block_hash,
150-
SyscallSelector::StorageRead => gas_costs.syscalls.storage_read,
151-
SyscallSelector::StorageWrite => gas_costs.syscalls.storage_write,
152-
_ => unreachable!("Syscall has no associated cost"),
153-
}
154-
}
155-
156137
impl CheatableStarknetRuntimeExtension<'_> {
157138
// crates/blockifier/src/execution/syscalls/hint_processor.rs:280 (SyscallHintProcessor::execute_syscall)
158139
fn execute_syscall<Request, Response, ExecuteCallback>(
@@ -177,20 +158,18 @@ impl CheatableStarknetRuntimeExtension<'_> {
177158
syscall_handler.syscall_ptr += 1;
178159
syscall_handler.increment_syscall_count_by(&selector, 1);
179160

161+
let syscall_gas_cost = syscall_handler
162+
.get_gas_cost_from_selector(&selector)
163+
.map_err(|error| SyscallExecutorBaseError::GasCost { error, selector })?;
164+
180165
let SyscallRequestWrapper {
181166
gas_counter,
182167
request,
183168
} = SyscallRequestWrapper::<Request>::read(vm, &mut syscall_handler.syscall_ptr)?;
184169

185-
let syscall_gas_cost = get_syscall_cost(selector, syscall_handler.base.context);
186170
let syscall_gas_cost =
187171
syscall_gas_cost.get_syscall_cost(u64_from_usize(request.get_linear_factor_length()));
188-
let syscall_base_cost = syscall_handler
189-
.base
190-
.context
191-
.gas_costs()
192-
.base
193-
.syscall_base_gas_cost;
172+
let syscall_base_cost = syscall_handler.get_syscall_base_gas_cost();
194173

195174
// Sanity check for preventing underflow.
196175
assert!(

0 commit comments

Comments
 (0)