Skip to content

Commit

Permalink
chore(blockifier): remove syscall_gas_costs from os_constans
Browse files Browse the repository at this point in the history
  • Loading branch information
Yonatan-Starkware committed Dec 26, 2024
1 parent 380967f commit 984a410
Show file tree
Hide file tree
Showing 14 changed files with 42 additions and 137 deletions.
117 changes: 7 additions & 110 deletions crates/blockifier/resources/versioned_constants_0_13_4.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,115 +116,7 @@
"validate_block_number_rounding": 100,
"validate_timestamp_rounding": 3600
},
"validated": "VALID",
"syscall_gas_costs": {
"call_contract": {
"entry_point_initial_budget": 1,
"step_gas_cost": 860,
"range_check": 15
},
"deploy": {
"entry_point_initial_budget": 1,
"step_gas_cost": 1128,
"range_check": 18,
"pedersen": 7
},
"emit_event": {
"step_gas_cost": 100,
"range_check": 1
},
"get_block_hash": {
"step_gas_cost": 104,
"range_check": 2
},
"get_execution_info": {
"step_gas_cost": 100,
"range_check": 1
},
"keccak": {
"syscall_base_gas_cost": 1
},
"keccak_round_cost": 180000,
"library_call": {
"entry_point_initial_budget": 1,
"step_gas_cost": 836,
"range_check": 15
},
"sha256_process_block": {
"step_gas_cost": 1855,
"range_check": 65,
"bitwise": 1115,
"syscall_base_gas_cost": 1
},
"replace_class": {
"step_gas_cost": 104,
"range_check": 1
},
"secp256k1_add": {
"range_check": 29,
"step_gas_cost": 410
},
"secp256k1_get_point_from_x": {
"memory_hole_gas_cost": 20,
"range_check": 30,
"step_gas_cost": 395
},
"secp256k1_get_xy": {
"memory_hole_gas_cost": 40,
"range_check": 11,
"step_gas_cost": 207
},
"secp256k1_mul": {
"memory_hole_gas_cost": 2,
"range_check": 7045,
"step_gas_cost": 76505
},
"secp256k1_new": {
"memory_hole_gas_cost": 40,
"range_check": 35,
"step_gas_cost": 461
},
"secp256r1_add": {
"range_check": 57,
"step_gas_cost": 593
},
"secp256r1_get_point_from_x": {
"memory_hole_gas_cost": 20,
"range_check": 44,
"step_gas_cost": 514
},
"secp256r1_get_xy": {
"memory_hole_gas_cost": 40,
"range_check": 11,
"step_gas_cost": 209
},
"secp256r1_mul": {
"memory_hole_gas_cost": 2,
"range_check": 13961,
"step_gas_cost": 125344
},
"secp256r1_new": {
"memory_hole_gas_cost": 40,
"range_check": 49,
"step_gas_cost": 580
},
"send_message_to_l1": {
"step_gas_cost": 141,
"range_check": 1
},
"storage_read": {
"step_gas_cost": 100,
"range_check": 1
},
"storage_write": {
"step_gas_cost": 100,
"range_check": 1
},
"get_class_hash_at": {
"step_gas_cost": 100,
"range_check": 1
}
}
"validated": "VALID"
},
"os_resources": {
"execute_syscalls": {
Expand Down Expand Up @@ -320,7 +212,12 @@
"n_memory_holes": 0
},
"Keccak": {
"n_steps": 381,
"n_steps": 100,
"builtin_instance_counter": {},
"n_memory_holes": 0
},
"KeccakRound": {
"n_steps": 371,
"builtin_instance_counter": {
"bitwise_builtin": 6,
"keccak_builtin": 1,
Expand Down
2 changes: 2 additions & 0 deletions crates/blockifier/src/execution/deprecated_syscalls/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ pub enum DeprecatedSyscallSelector {
GetTxInfo,
GetTxSignature,
Keccak,
KeccakRound,
Sha256ProcessBlock,
LibraryCall,
LibraryCallL1Handler,
Expand Down Expand Up @@ -107,6 +108,7 @@ impl TryFrom<Felt> for DeprecatedSyscallSelector {
b"GetTxInfo" => Ok(Self::GetTxInfo),
b"GetTxSignature" => Ok(Self::GetTxSignature),
b"Keccak" => Ok(Self::Keccak),
b"KeccakRound" => Ok(Self::KeccakRound),
b"Sha256ProcessBlock" => Ok(Self::Sha256ProcessBlock),
b"LibraryCall" => Ok(Self::LibraryCall),
b"LibraryCallL1Handler" => Ok(Self::LibraryCallL1Handler),
Expand Down
2 changes: 2 additions & 0 deletions crates/blockifier/src/execution/entry_point.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,8 @@ impl CallEntryPoint {
context.n_sent_messages_to_l1,
));

println!("remaining_gas: {}", remaining_gas);

// This is the last operation of this function.
execute_entry_point_call_wrapper(self, compiled_class, state, context, remaining_gas)
}
Expand Down
6 changes: 4 additions & 2 deletions crates/blockifier/src/execution/execution_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,14 @@ pub fn execute_entry_point_call_wrapper(
});
}
update_remaining_gas(remaining_gas, &call_info);
println!("here with remaining gas: {}", remaining_gas);
Ok(call_info)
}
Err(EntryPointExecutionError::PreExecutionError(
PreExecutionError::EntryPointNotFound(_)
| PreExecutionError::NoEntryPointOfTypeFound(_),
)) if context.versioned_constants().enable_reverts => Ok(CallInfo {
)) if context.versioned_constants().enable_reverts => {
Ok(CallInfo {
call: orig_call,
execution: CallExecution {
retdata: Retdata(vec![Felt::from_hex(ENTRYPOINT_NOT_FOUND_ERROR).unwrap()]),
Expand All @@ -100,7 +102,7 @@ pub fn execute_entry_point_call_wrapper(
},
tracked_resource: current_tracked_resource,
..CallInfo::default()
}),
})}
Err(err) => Err(err),
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pub const REQUIRED_GAS_CALL_CONTRACT_TEST: u64 = 120370;
pub const REQUIRED_GAS_STORAGE_READ_WRITE_TEST: u64 = 16990;
pub const REQUIRED_GAS_GET_CLASS_HASH_AT_TEST: u64 = 7830;
pub const REQUIRED_GAS_LIBRARY_CALL_TEST: u64 = 117970;
pub const REQUIRED_GAS_CALL_CONTRACT_TEST: u64 = 110830;
pub const REQUIRED_GAS_STORAGE_READ_WRITE_TEST: u64 = 16850;
pub const REQUIRED_GAS_GET_CLASS_HASH_AT_TEST: u64 = 7760;
pub const REQUIRED_GAS_LIBRARY_CALL_TEST: u64 = 108430;
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ fn no_constructor(runnable_version: RunnableCairo1) {
let deploy_call = &entry_point_call.execute_directly(&mut state).unwrap();
assert_eq!(
deploy_call.execution,
CallExecution { retdata: retdata![], gas_consumed: 155200, ..CallExecution::default() }
CallExecution { retdata: retdata![], gas_consumed: 145600, ..CallExecution::default() }
);

let deployed_contract_address = calculate_contract_address(
Expand Down Expand Up @@ -124,7 +124,7 @@ fn with_constructor(runnable_version: RunnableCairo1) {
let deploy_call = &entry_point_call.execute_directly(&mut state).unwrap();
assert_eq!(
deploy_call.execution,
CallExecution { retdata: retdata![], gas_consumed: 164550, ..CallExecution::default() }
CallExecution { retdata: retdata![], gas_consumed: 154880, ..CallExecution::default() }
);

let constructor_call = &deploy_call.inner_calls[0];
Expand All @@ -136,7 +136,7 @@ fn with_constructor(runnable_version: RunnableCairo1) {
// The test contract constructor returns its first argument.
retdata: retdata![constructor_calldata[0]],
// This reflects the gas cost of storage write syscall.
gas_consumed: 4610,
gas_consumed: 4540,
..CallExecution::default()
}
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ fn positive_flow(runnable_version: RunnableCairo1) {
call_info.execution,
CallExecution {
events: vec![OrderedEvent { order: 0, event }],
gas_consumed: 47330,
gas_consumed: 47260,
..Default::default()
}
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ fn test_keccak(runnable_version: RunnableCairo1) {

pretty_assertions::assert_eq!(
entry_point_call.execute_directly(&mut state).unwrap().execution,
CallExecution { gas_consumed: 254240, ..CallExecution::from_retdata(retdata![]) }
CallExecution { gas_consumed: 254947, ..CallExecution::from_retdata(retdata![]) }
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ fn test_library_call_assert_fails(runnable_version: RunnableCairo1) {
// 'ENTRYPOINT_FAILED'.
felt!("0x454e545259504f494e545f4641494c4544")
]),
gas_consumed: 100980,
gas_consumed: 91580,
failed: true,
..Default::default()
}
Expand Down Expand Up @@ -124,7 +124,7 @@ fn test_nested_library_call(runnable_version: RunnableCairo1) {
class_hash: Some(test_class_hash),
code_address: None,
call_type: CallType::Delegate,
initial_gas: 9999085960,
initial_gas: 9999104760,
..trivial_external_entry_point_new(test_contract)
};
let library_entry_point = CallEntryPoint {
Expand All @@ -139,16 +139,16 @@ fn test_nested_library_call(runnable_version: RunnableCairo1) {
class_hash: Some(test_class_hash),
code_address: None,
call_type: CallType::Delegate,
initial_gas: 9999186940,
initial_gas: 9999196340,
..trivial_external_entry_point_new(test_contract)
};
let storage_entry_point = CallEntryPoint {
calldata: calldata![felt!(key), felt!(value)],
initial_gas: 9998984320,
initial_gas: 9999012660,
..nested_storage_entry_point
};

let storage_entry_point_gas = GasAmount(16990);
let storage_entry_point_gas = GasAmount(16850);

// The default VersionedConstants is used in the execute_directly call bellow.
let tracked_resource = test_contract.get_runnable_class().tracked_resource(
Expand Down Expand Up @@ -177,7 +177,7 @@ fn test_nested_library_call(runnable_version: RunnableCairo1) {
gas_consumed: REQUIRED_GAS_LIBRARY_CALL_TEST,
..CallExecution::default()
},
charged_resources: ChargedResources::from_gas(GasAmount(117970)),
charged_resources: ChargedResources::from_gas(GasAmount(108430)),
inner_calls: vec![nested_storage_call_info],
tracked_resource,
..Default::default()
Expand All @@ -197,7 +197,7 @@ fn test_nested_library_call(runnable_version: RunnableCairo1) {
..Default::default()
};

let main_gas_consumed = 325110;
let main_gas_consumed = 296630;
let expected_call_info = CallInfo {
call: main_entry_point.clone(),
execution: CallExecution {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ fn test_out_of_gas(runnable_version: RunnableCairo1) {
CallExecution {
// 'Out of gas'
retdata: retdata![felt!["0x4f7574206f6620676173"]],
gas_consumed: REQUIRED_GAS_STORAGE_READ_WRITE_TEST - 70,
gas_consumed: REQUIRED_GAS_STORAGE_READ_WRITE_TEST,
failed: true,
..Default::default()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ fn test_secp256k1(runnable_version: RunnableCairo1) {

pretty_assertions::assert_eq!(
entry_point_call.execute_directly(&mut state).unwrap().execution,
CallExecution { gas_consumed: 17033486, ..Default::default() }
CallExecution { gas_consumed: 17031553, ..Default::default() }
);
}

Expand All @@ -45,6 +45,6 @@ fn test_secp256r1(runnable_version: RunnableCairo1) {

pretty_assertions::assert_eq!(
entry_point_call.execute_directly(&mut state).unwrap().execution,
CallExecution { gas_consumed: 27562930, ..Default::default() }
CallExecution { gas_consumed: 27560090, ..Default::default() }
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ fn test_sha256(runnable_version: RunnableCairo1) {

pretty_assertions::assert_eq!(
entry_point_call.execute_directly(&mut state).unwrap().execution,
CallExecution { gas_consumed: 881425, ..CallExecution::from_retdata(retdata![]) }
CallExecution { gas_consumed: 872425, ..CallExecution::from_retdata(retdata![]) }
);
}
8 changes: 4 additions & 4 deletions crates/blockifier/src/transaction/transactions_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,7 @@ fn add_kzg_da_resources_to_resources_mapping(
},
validate_gas_consumed: 4740, // The gas consumption results from parsing the input
// arguments.
execute_gas_consumed: 112080,
execute_gas_consumed: 102610,
},
CairoVersion::Cairo1(RunnableCairo1::Casm))]
// TODO(Tzahi): Add calls to cairo1 test contracts (where gas flows to and from the inner call).
Expand Down Expand Up @@ -2344,7 +2344,7 @@ fn test_l1_handler(#[values(false, true)] use_kzg_da: bool) {

// Build the expected call info.
let accessed_storage_key = StorageKey::try_from(key).unwrap();
let gas_consumed = GasAmount(6120);
let gas_consumed = GasAmount(6050);
let expected_call_info = CallInfo {
call: CallEntryPoint {
class_hash: Some(test_contract.get_class_hash()),
Expand Down Expand Up @@ -2376,11 +2376,11 @@ fn test_l1_handler(#[values(false, true)] use_kzg_da: bool) {
// (currently matches only starknet resources).
let expected_gas = match use_kzg_da {
true => GasVector {
l1_gas: 17899_u32.into(),
l1_gas: 17898_u32.into(),
l1_data_gas: 160_u32.into(),
l2_gas: 0_u32.into(),
},
false => GasVector::from_l1_gas(19593_u32.into()),
false => GasVector::from_l1_gas(19592_u32.into()),
};

let expected_da_gas = match use_kzg_da {
Expand Down
4 changes: 3 additions & 1 deletion crates/blockifier/src/versioned_constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,8 @@ impl<'de> Deserialize<'de> for VersionedConstants {
secp256r1_new: versioned_constants
.get_syscall_gas_cost(&SyscallSelector::Secp256r1New),
keccak: versioned_constants.get_syscall_gas_cost(&SyscallSelector::Keccak),
keccak_round_cost: 180000,
keccak_round_cost: versioned_constants
.get_syscall_gas_cost(&SyscallSelector::KeccakRound),
sha256_process_block: versioned_constants
.get_syscall_gas_cost(&SyscallSelector::Sha256ProcessBlock),
};
Expand Down Expand Up @@ -691,6 +692,7 @@ impl SyscallGasCosts {
SyscallSelector::GetBlockHash => self.get_block_hash,
SyscallSelector::GetExecutionInfo => self.get_execution_info,
SyscallSelector::GetClassHashAt => self.get_class_hash_at,
SyscallSelector::KeccakRound => self.keccak_round_cost,
SyscallSelector::Keccak => self.keccak,
SyscallSelector::Sha256ProcessBlock => self.sha256_process_block,
SyscallSelector::LibraryCall => self.library_call,
Expand Down

0 comments on commit 984a410

Please sign in to comment.