Skip to content

Commit 8bf6bd2

Browse files
blockifier: compute_proving_gas for cairo_primitives
1 parent 2c59ece commit 8bf6bd2

File tree

1 file changed

+20
-28
lines changed

1 file changed

+20
-28
lines changed

crates/blockifier/src/bouncer.rs

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -683,19 +683,16 @@ fn memory_holes_to_gas(
683683
}
684684

685685
/// Calculates proving gas from builtin counters and Sierra gas.
686-
fn proving_gas_from_builtins_and_sierra_gas(
686+
fn proving_gas_from_cairo_primitives_and_sierra_gas(
687687
sierra_gas: GasAmount,
688-
builtin_counters: &BuiltinCounterMap,
688+
cairo_primitives_counters: &CairoPrimitiveCounterMap,
689689
proving_builtin_gas_costs: &BuiltinGasCosts,
690690
sierra_builtin_gas_costs: &BuiltinGasCosts,
691691
) -> GasAmount {
692-
// TODO(AvivG): To support opcodes in the computation, pass cairo_primitive_counter_map to this
693-
// function
694-
let cairo_primitives_counters = cairo_primitive_counter_map(builtin_counters.clone());
695692
let cairo_primitives_proving_gas =
696-
cairo_primitives_to_gas(&cairo_primitives_counters, proving_builtin_gas_costs);
693+
cairo_primitives_to_gas(cairo_primitives_counters, proving_builtin_gas_costs);
697694
let steps_proving_gas =
698-
sierra_gas_to_steps_gas(sierra_gas, &cairo_primitives_counters, sierra_builtin_gas_costs);
695+
sierra_gas_to_steps_gas(sierra_gas, cairo_primitives_counters, sierra_builtin_gas_costs);
699696

700697
steps_proving_gas.checked_add_panic_on_overflow(cairo_primitives_proving_gas)
701698
}
@@ -806,17 +803,17 @@ fn compute_sierra_gas(
806803
}
807804

808805
fn compute_proving_gas(
809-
builtin_counters: &BuiltinCounterMap,
806+
cairo_primitives_counters: &CairoPrimitiveCounterMap,
810807
vm_resources_sierra_gas: GasAmount,
811808
versioned_constants: &VersionedConstants,
812809
proving_builtin_gas_costs: &BuiltinGasCosts,
813810
sierra_builtin_gas_costs: &BuiltinGasCosts,
814811
migration_gas: GasAmount,
815812
class_hash_to_casm_hash_computation_resources: &HashMap<ClassHash, EstimatedExecutionResources>,
816813
) -> (GasAmount, CasmHashComputationData) {
817-
let vm_resources_proving_gas = proving_gas_from_builtins_and_sierra_gas(
814+
let vm_resources_proving_gas = proving_gas_from_cairo_primitives_and_sierra_gas(
818815
vm_resources_sierra_gas,
819-
builtin_counters,
816+
cairo_primitives_counters,
820817
proving_builtin_gas_costs,
821818
sierra_builtin_gas_costs,
822819
);
@@ -840,7 +837,7 @@ pub fn get_tx_weights<S: StateReader>(
840837
tx_resources: &TransactionResources,
841838
state_changes_keys: &StateChangesKeys,
842839
versioned_constants: &VersionedConstants,
843-
tx_builtin_counters: &CairoPrimitiveCounterMap,
840+
tx_cairo_primitives_counters: &CairoPrimitiveCounterMap,
844841
bouncer_config: &BouncerConfig,
845842
) -> TransactionExecutionResult<TxWeights> {
846843
let message_resources = &tx_resources.starknet_resources.messages;
@@ -895,28 +892,23 @@ pub fn get_tx_weights<S: StateReader>(
895892
);
896893

897894
// Proving gas computation.
898-
// Exclude tx_vm_resources to prevent double-counting in tx_builtin_counters.
899-
let mut vm_resources_builtins_for_proving_gas_computation =
895+
// Exclude tx_vm_resources to prevent double-counting in tx_cairo_primitives_counters.
896+
let vm_resources_builtins_for_proving_gas_computation =
900897
(&patrticia_update_resources + &tx_resources.computation.os_vm_resources).prover_builtins();
901898

902-
// Convert `tx_builtin_counters` into the format expected by `add_maps`.
903-
// TODO(AvivG): Support opcode counters in gas computations.
904-
let tx_builtins: BuiltinCounterMap = tx_builtin_counters
905-
.iter()
906-
.map(|(cairo_primitive_name, count)| match cairo_primitive_name {
907-
CairoPrimitiveName::Builtin(builtin_name) => (*builtin_name, *count),
908-
CairoPrimitiveName::Opcode(_) => panic!(
909-
"Opcode counters are not expected here: CallInfo does not yet receive opcode data \
910-
from the VM / native."
911-
),
912-
})
913-
.collect();
899+
// TODO(AvivG): To support opcodes in the computation, os resources should include opcode
900+
// counters.
901+
let mut vm_resources_cairo_primitives_for_proving_gas_computation =
902+
cairo_primitive_counter_map(vm_resources_builtins_for_proving_gas_computation.clone());
914903

915-
// Use tx_builtin_counters to count the Sierra gas executed entry points as well.
916-
add_maps(&mut vm_resources_builtins_for_proving_gas_computation, &tx_builtins);
904+
// Use tx_cairo_primitives_counters to count the Sierra gas executed entry points as well.
905+
add_maps(
906+
&mut vm_resources_cairo_primitives_for_proving_gas_computation,
907+
tx_cairo_primitives_counters,
908+
);
917909

918910
let (total_proving_gas, casm_hash_computation_data_proving_gas) = compute_proving_gas(
919-
&vm_resources_builtins_for_proving_gas_computation,
911+
&vm_resources_cairo_primitives_for_proving_gas_computation,
920912
vm_resources_sierra_gas,
921913
versioned_constants,
922914
proving_builtin_gas_costs,

0 commit comments

Comments
 (0)