@@ -796,6 +796,10 @@ impl SyscallGasCost {
796
796
assert ! ( self . linear_factor == 0 , "The syscall has a linear factor cost to be considered." ) ;
797
797
self . base
798
798
}
799
+
800
+ pub fn linear_syscall_cost ( & self ) -> u64 {
801
+ self . linear_factor
802
+ }
799
803
}
800
804
801
805
#[ cfg_attr( any( test, feature = "testing" ) , derive( Clone ) ) ]
@@ -1073,29 +1077,123 @@ impl GasCosts {
1073
1077
#[ derive( Debug , Default , PartialEq ) ]
1074
1078
pub struct OsConstants {
1075
1079
pub gas_costs : GasCosts ,
1076
- pub validate_rounding_consts : ValidateRoundingConsts ,
1077
- pub os_contract_addresses : OsContractAddresses ,
1080
+
1081
+ // Selectors.
1082
+ pub constructor_entry_point_selector : EntryPointSelector ,
1083
+ pub default_entry_point_selector : EntryPointSelector ,
1084
+ pub execute_entry_point_selector : EntryPointSelector ,
1085
+ pub transfer_entry_point_selector : EntryPointSelector ,
1086
+ pub validate_declare_entry_point_selector : EntryPointSelector ,
1087
+ pub validate_deploy_entry_point_selector : EntryPointSelector ,
1088
+ pub validate_entry_point_selector : EntryPointSelector ,
1089
+
1090
+ // Execution limits.
1078
1091
pub validate_max_sierra_gas : GasAmount ,
1079
1092
pub execute_max_sierra_gas : GasAmount ,
1093
+
1094
+ // Validation.
1095
+ pub validate_rounding_consts : ValidateRoundingConsts ,
1096
+ pub validated : String ,
1097
+
1098
+ // Error strings.
1099
+ pub error_block_number_out_of_range : String ,
1100
+ pub error_invalid_input_len : String ,
1101
+ pub error_invalid_argument : String ,
1102
+ pub error_out_of_gas : String ,
1103
+ pub error_entry_point_failed : String ,
1104
+ pub error_entry_point_not_found : String ,
1105
+
1106
+ // Resource bounds names.
1107
+ pub l1_gas : String ,
1108
+ pub l2_gas : String ,
1109
+ pub l1_data_gas : String ,
1110
+
1111
+ // Resource bounds indices.
1112
+ pub l1_gas_index : usize ,
1113
+ pub l1_data_gas_index : usize ,
1114
+ pub l2_gas_index : usize ,
1115
+
1116
+ // Initial costs.
1117
+ pub entry_point_initial_budget : u64 ,
1118
+ pub default_initial_gas_cost : u64 ,
1119
+
1120
+ // L1 handler.
1121
+ pub l1_handler_version : u8 ,
1122
+ pub l1_handler_max_amount_bounds : GasVector ,
1123
+
1124
+ // Miscellaneous.
1125
+ pub nop_entry_point_offset : i8 ,
1126
+ pub os_contract_addresses : OsContractAddresses ,
1127
+ pub sierra_array_len_bound : u64 ,
1128
+ pub stored_block_hash_buffer : u8 ,
1129
+
1130
+ // Entry point type identifiers (in the OS).
1131
+ pub entry_point_type_constructor : u8 ,
1132
+ pub entry_point_type_external : u8 ,
1133
+ pub entry_point_type_l1_handler : u8 ,
1134
+
1135
+ // Deprecated contract logic support.
1080
1136
pub v1_bound_accounts_cairo0 : Vec < ClassHash > ,
1081
1137
pub v1_bound_accounts_cairo1 : Vec < ClassHash > ,
1082
1138
pub v1_bound_accounts_max_tip : Tip ,
1083
- pub l1_handler_max_amount_bounds : GasVector ,
1084
1139
pub data_gas_accounts : Vec < ClassHash > ,
1085
1140
}
1086
1141
1087
1142
impl OsConstants {
1088
1143
fn from_raw ( raw_constants : & RawOsConstants , raw_resources : & RawOsResources ) -> Self {
1144
+ let gas_costs = GasCosts :: from_raw ( raw_constants, raw_resources) ;
1145
+
1146
+ // Preprocess inital budget costs.
1147
+ let RawStepGasCost { step_gas_cost : entry_point_initial_budget_steps } =
1148
+ raw_constants. entry_point_initial_budget ;
1149
+ let RawStepGasCost { step_gas_cost : default_initial_gas_cost_steps } =
1150
+ raw_constants. default_initial_gas_cost ;
1151
+ let entry_point_initial_budget =
1152
+ gas_costs. base . step_gas_cost * entry_point_initial_budget_steps. 0 ;
1153
+ let default_initial_gas_cost =
1154
+ gas_costs. base . step_gas_cost * default_initial_gas_cost_steps. 0 ;
1155
+
1089
1156
Self {
1090
- gas_costs : GasCosts :: from_raw ( raw_constants, raw_resources) ,
1091
- validate_rounding_consts : raw_constants. validate_rounding_consts ,
1092
- os_contract_addresses : raw_constants. os_contract_addresses ,
1157
+ gas_costs,
1158
+ constructor_entry_point_selector : raw_constants. constructor_entry_point_selector ,
1159
+ default_entry_point_selector : raw_constants. default_entry_point_selector ,
1160
+ execute_entry_point_selector : raw_constants. execute_entry_point_selector ,
1161
+ transfer_entry_point_selector : raw_constants. transfer_entry_point_selector ,
1162
+ validate_declare_entry_point_selector : raw_constants
1163
+ . validate_declare_entry_point_selector ,
1164
+ validate_deploy_entry_point_selector : raw_constants
1165
+ . validate_deploy_entry_point_selector ,
1166
+ validate_entry_point_selector : raw_constants. validate_entry_point_selector ,
1093
1167
validate_max_sierra_gas : raw_constants. validate_max_sierra_gas ,
1094
1168
execute_max_sierra_gas : raw_constants. execute_max_sierra_gas ,
1169
+ validate_rounding_consts : raw_constants. validate_rounding_consts ,
1170
+ validated : raw_constants. validated . clone ( ) ,
1171
+ error_block_number_out_of_range : raw_constants. error_block_number_out_of_range . clone ( ) ,
1172
+ error_invalid_input_len : raw_constants. error_invalid_input_len . clone ( ) ,
1173
+ error_invalid_argument : raw_constants. error_invalid_argument . clone ( ) ,
1174
+ error_out_of_gas : raw_constants. error_out_of_gas . clone ( ) ,
1175
+ error_entry_point_failed : raw_constants. error_entry_point_failed . clone ( ) ,
1176
+ error_entry_point_not_found : raw_constants. error_entry_point_not_found . clone ( ) ,
1177
+ l1_gas : raw_constants. l1_gas . clone ( ) ,
1178
+ l2_gas : raw_constants. l2_gas . clone ( ) ,
1179
+ l1_data_gas : raw_constants. l1_data_gas . clone ( ) ,
1180
+ l1_gas_index : raw_constants. l1_gas_index ,
1181
+ l1_data_gas_index : raw_constants. l1_data_gas_index ,
1182
+ l2_gas_index : raw_constants. l2_gas_index ,
1183
+ entry_point_initial_budget,
1184
+ default_initial_gas_cost,
1185
+ l1_handler_version : raw_constants. l1_handler_version ,
1186
+ l1_handler_max_amount_bounds : raw_constants. l1_handler_max_amount_bounds ,
1187
+ nop_entry_point_offset : raw_constants. nop_entry_point_offset ,
1188
+ os_contract_addresses : raw_constants. os_contract_addresses ,
1189
+ sierra_array_len_bound : raw_constants. sierra_array_len_bound ,
1190
+ stored_block_hash_buffer : raw_constants. stored_block_hash_buffer ,
1191
+ entry_point_type_constructor : raw_constants. entry_point_type_constructor ,
1192
+ entry_point_type_external : raw_constants. entry_point_type_external ,
1193
+ entry_point_type_l1_handler : raw_constants. entry_point_type_l1_handler ,
1095
1194
v1_bound_accounts_cairo0 : raw_constants. v1_bound_accounts_cairo0 . clone ( ) ,
1096
1195
v1_bound_accounts_cairo1 : raw_constants. v1_bound_accounts_cairo1 . clone ( ) ,
1097
1196
v1_bound_accounts_max_tip : raw_constants. v1_bound_accounts_max_tip ,
1098
- l1_handler_max_amount_bounds : raw_constants. l1_handler_max_amount_bounds ,
1099
1197
data_gas_accounts : raw_constants. data_gas_accounts . clone ( ) ,
1100
1198
}
1101
1199
}
0 commit comments