@@ -354,7 +354,9 @@ impl<'config> Gasometer<'config> {
354354 // According to EIP-2028: non-zero byte = 16, zero-byte = 4
355355 // According to EIP-7623: tokens_in_calldata = zero_bytes_in_calldata + nonzero_bytes_in_calldata * 4
356356 let tokens_in_calldata = ( zero_data_len + non_zero_data_len * 4 ) as u64 ;
357- tokens_in_calldata * config. total_cost_floor_per_token + config. gas_floor_base_cost
357+ tokens_in_calldata
358+ . saturating_mul ( config. total_cost_floor_per_token )
359+ . saturating_add ( config. gas_floor_base_cost )
358360 } else {
359361 0
360362 }
@@ -369,12 +371,33 @@ impl<'config> Gasometer<'config> {
369371 authorization_list_len,
370372 } => {
371373 #[ deny( clippy:: let_and_return) ]
372- let cost = config. gas_transaction_call
373- + zero_data_len as u64 * config. gas_transaction_zero_data
374- + non_zero_data_len as u64 * config. gas_transaction_non_zero_data
375- + access_list_address_len as u64 * config. gas_access_list_address
376- + access_list_storage_len as u64 * config. gas_access_list_storage_key
377- + authorization_list_len as u64 * config. gas_per_empty_account_cost ;
374+ let cost = config
375+ . gas_transaction_call
376+ . saturating_add (
377+ config
378+ . gas_transaction_zero_data
379+ . saturating_mul ( zero_data_len as u64 ) ,
380+ )
381+ . saturating_add (
382+ config
383+ . gas_transaction_non_zero_data
384+ . saturating_mul ( non_zero_data_len as u64 ) ,
385+ )
386+ . saturating_add (
387+ config
388+ . gas_access_list_address
389+ . saturating_mul ( access_list_address_len as u64 ) ,
390+ )
391+ . saturating_add (
392+ config
393+ . gas_access_list_storage_key
394+ . saturating_mul ( access_list_storage_len as u64 ) ,
395+ )
396+ . saturating_add (
397+ config
398+ . gas_per_empty_account_cost
399+ . saturating_mul ( authorization_list_len as u64 ) ,
400+ ) ;
378401 let floor_gas = floor_gas_calc ( config, zero_data_len, non_zero_data_len) ;
379402
380403 ( cost, floor_gas)
@@ -386,14 +409,31 @@ impl<'config> Gasometer<'config> {
386409 access_list_storage_len,
387410 initcode_cost,
388411 } => {
389- let mut cost = config. gas_transaction_create
390- + zero_data_len as u64 * config. gas_transaction_zero_data
391- + non_zero_data_len as u64 * config. gas_transaction_non_zero_data
392- + access_list_address_len as u64 * config. gas_access_list_address
393- + access_list_storage_len as u64 * config. gas_access_list_storage_key ;
412+ let mut cost = config
413+ . gas_transaction_create
414+ . saturating_add (
415+ config
416+ . gas_transaction_zero_data
417+ . saturating_mul ( zero_data_len as u64 ) ,
418+ )
419+ . saturating_add (
420+ config
421+ . gas_transaction_non_zero_data
422+ . saturating_mul ( non_zero_data_len as u64 ) ,
423+ )
424+ . saturating_add (
425+ config
426+ . gas_access_list_address
427+ . saturating_mul ( access_list_address_len as u64 ) ,
428+ )
429+ . saturating_add (
430+ config
431+ . gas_access_list_storage_key
432+ . saturating_mul ( access_list_storage_len as u64 ) ,
433+ ) ;
394434
395435 if config. max_initcode_size . is_some ( ) {
396- cost += initcode_cost;
436+ cost = cost . saturating_add ( initcode_cost) ;
397437 }
398438
399439 let floor_gas = floor_gas_calc ( config, zero_data_len, non_zero_data_len) ;
0 commit comments