@@ -16,6 +16,7 @@ use crate::blockifier::transaction_executor::{
1616} ;
1717use crate :: blockifier_versioned_constants:: { BuiltinGasCosts , VersionedConstants } ;
1818use crate :: execution:: call_info:: {
19+ cairo_primitive_counter_map,
1920 BuiltinCounterMap ,
2021 CairoPrimitiveCounterMap ,
2122 CairoPrimitiveName ,
@@ -688,7 +689,12 @@ fn proving_gas_from_builtins_and_sierra_gas(
688689 proving_builtin_gas_costs : & BuiltinGasCosts ,
689690 sierra_builtin_gas_costs : & BuiltinGasCosts ,
690691) -> GasAmount {
691- let builtins_proving_gas = builtins_to_gas ( builtin_counters, proving_builtin_gas_costs) ;
692+ // TODO(AvivG): To support opcodes in the computation, pass cairo_primitive_counter_map to this
693+ // function
694+ let builtins_proving_gas = cairo_primitives_to_gas (
695+ & cairo_primitive_counter_map ( builtin_counters. iter ( ) . map ( |( k, v) | ( * k, * v) ) ) ,
696+ proving_builtin_gas_costs,
697+ ) ;
692698 let steps_proving_gas =
693699 sierra_gas_to_steps_gas ( sierra_gas, builtin_counters, sierra_builtin_gas_costs) ;
694700
@@ -701,7 +707,12 @@ pub fn vm_resources_to_gas(
701707 builtin_gas_cost : & BuiltinGasCosts ,
702708 versioned_constants : & VersionedConstants ,
703709) -> GasAmount {
704- let builtins_gas_cost = builtins_to_gas ( & resources. prover_builtins ( ) , builtin_gas_cost) ;
710+ // TODO(AvivG): To support opcodes in the computation, pass cairo_primitive_counter_map to this
711+ // function
712+ let builtins_gas_cost = cairo_primitives_to_gas (
713+ & cairo_primitive_counter_map ( resources. prover_builtins ( ) ) ,
714+ builtin_gas_cost,
715+ ) ;
705716 let n_steps_gas_cost = n_steps_to_gas ( resources. total_n_steps ( ) , versioned_constants) ;
706717 let n_memory_holes_gas_cost =
707718 memory_holes_to_gas ( resources. n_memory_holes , versioned_constants) ;
@@ -717,7 +728,12 @@ pub fn sierra_gas_to_steps_gas(
717728 builtin_counters : & BuiltinCounterMap ,
718729 sierra_builtin_gas_costs : & BuiltinGasCosts ,
719730) -> GasAmount {
720- let builtins_gas_cost = builtins_to_gas ( builtin_counters, sierra_builtin_gas_costs) ;
731+ // TODO(AvivG): To support opcodes in the computation, pass cairo_primitive_counter_map to this
732+ // function
733+ let builtins_gas_cost = cairo_primitives_to_gas (
734+ & cairo_primitive_counter_map ( builtin_counters. clone ( ) ) ,
735+ sierra_builtin_gas_costs,
736+ ) ;
721737
722738 sierra_gas. checked_sub ( builtins_gas_cost) . unwrap_or_else ( || {
723739 log:: debug!(
@@ -728,24 +744,29 @@ pub fn sierra_gas_to_steps_gas(
728744 } )
729745}
730746
731- pub fn builtins_to_gas (
732- builtin_counters : & BuiltinCounterMap ,
733- builtin_gas_costs : & BuiltinGasCosts ,
747+ pub fn cairo_primitives_to_gas (
748+ cairo_primitives_counters : & CairoPrimitiveCounterMap ,
749+ // NOTE: 'blake' is currently the only supported opcode, by being included in the
750+ // builtin_gas_costs.
751+ cairo_primitives_gas_costs : & BuiltinGasCosts ,
734752) -> GasAmount {
735- let builtin_gas = builtin_counters. iter ( ) . fold ( 0u64 , |accumulated_gas, ( name, & count) | {
736- let builtin_weight = builtin_gas_costs. get_builtin_gas_cost ( name) . unwrap ( ) ;
737- builtin_weight
738- . checked_mul ( u64_from_usize ( count) )
739- . and_then ( |builtin_gas| accumulated_gas. checked_add ( builtin_gas) )
740- . unwrap_or_else ( || {
741- panic ! (
742- "Overflow while converting builtin counters to gas.\n Builtin: {name}, Weight: \
743- {builtin_weight}, Count: {count}, Accumulated gas: {accumulated_gas}"
744- )
745- } )
746- } ) ;
753+ let cairo_primitives_gas =
754+ cairo_primitives_counters. iter ( ) . fold ( 0u64 , |accumulated_gas, ( name, & count) | {
755+ let cairo_primitive_weight =
756+ cairo_primitives_gas_costs. get_cairo_primitive_gas_cost ( & name) . unwrap ( ) ;
757+ cairo_primitive_weight
758+ . checked_mul ( u64_from_usize ( count) )
759+ . and_then ( |builtin_gas| accumulated_gas. checked_add ( builtin_gas) )
760+ . unwrap_or_else ( || {
761+ panic ! (
762+ "Overflow while converting cairo primitives counters to gas.\n Cairo \
763+ primitive: {name}, Weight: {cairo_primitive_weight}, Count: {count}, \
764+ Accumulated gas: {accumulated_gas}"
765+ )
766+ } )
767+ } ) ;
747768
748- GasAmount ( builtin_gas )
769+ GasAmount ( cairo_primitives_gas )
749770}
750771
751772fn add_casm_hash_computation_gas_cost (
0 commit comments