Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

Commit

Permalink
feat(fee): add os resources to versioned constants
Browse files Browse the repository at this point in the history
- Move hardcoded os resources json into the versioned constants json,
  move `OsResources` into into `OsResources` module.
- Delete os_usage.rs: all logic is now called from methods in
  `VersionedConstants`(todo: extract into submodules, currently
  just a big module).
- Delete os_usage_test.rs: these are not post-deserialize validations of
  `OsResources`.
- sorted versioned_constants (where possible, which is everywhere except
  for inside os_constants keys).
  • Loading branch information
Gilad Chase committed Feb 1, 2024
1 parent 458bc11 commit 6a2bda7
Show file tree
Hide file tree
Showing 12 changed files with 494 additions and 471 deletions.
304 changes: 297 additions & 7 deletions crates/blockifier/resources/versioned_constants.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,301 @@
{
"starknet_os_constants": {
"gateway": {
"max_calldata_length": 4000,
"max_contract_bytecode_size": 61440
},
"invoke_tx_max_n_steps": 3000000,
"max_recursion_depth": 50,
"os_resources": {
"execute_syscalls": {
"CallContract": {
"builtin_instance_counter": {
"range_check_builtin": 20
},
"n_memory_holes": 4,
"n_steps": 760
},
"DelegateCall": {
"builtin_instance_counter": {
"range_check_builtin": 19
},
"n_memory_holes": 0,
"n_steps": 713
},
"DelegateL1Handler": {
"builtin_instance_counter": {
"range_check_builtin": 15
},
"n_memory_holes": 0,
"n_steps": 692
},
"Deploy": {
"builtin_instance_counter": {
"pedersen_builtin": 7,
"range_check_builtin": 19
},
"n_memory_holes": 13,
"n_steps": 1010
},
"EmitEvent": {
"builtin_instance_counter": {
"range_check_builtin": 1
},
"n_memory_holes": 0,
"n_steps": 61
},
"GetBlockHash": {
"builtin_instance_counter": {
"range_check_builtin": 2
},
"n_memory_holes": 0,
"n_steps": 74
},
"GetBlockNumber": {
"builtin_instance_counter": {},
"n_memory_holes": 0,
"n_steps": 40
},
"GetBlockTimestamp": {
"builtin_instance_counter": {},
"n_memory_holes": 0,
"n_steps": 38
},
"GetCallerAddress": {
"builtin_instance_counter": {
"range_check_builtin": 1
},
"n_memory_holes": 0,
"n_steps": 62
},
"GetContractAddress": {
"builtin_instance_counter": {
"range_check_builtin": 1
},
"n_memory_holes": 0,
"n_steps": 62
},
"GetExecutionInfo": {
"builtin_instance_counter": {
"range_check_builtin": 1
},
"n_memory_holes": 0,
"n_steps": 62
},
"GetSequencerAddress": {
"builtin_instance_counter": {},
"n_memory_holes": 0,
"n_steps": 34
},
"GetTxInfo": {
"builtin_instance_counter": {
"range_check_builtin": 1
},
"n_memory_holes": 0,
"n_steps": 62
},
"GetTxSignature": {
"builtin_instance_counter": {},
"n_memory_holes": 0,
"n_steps": 44
},
"Keccak": {
"builtin_instance_counter": {
"bitwise_builtin": 6,
"keccak_builtin": 1,
"range_check_builtin": 56
},
"n_memory_holes": 0,
"n_steps": 381
},
"LibraryCall": {
"builtin_instance_counter": {
"range_check_builtin": 20
},
"n_memory_holes": 4,
"n_steps": 751
},
"LibraryCallL1Handler": {
"builtin_instance_counter": {
"range_check_builtin": 15
},
"n_memory_holes": 0,
"n_steps": 659
},
"ReplaceClass": {
"builtin_instance_counter": {
"range_check_builtin": 1
},
"n_memory_holes": 0,
"n_steps": 98
},
"Secp256k1Add": {
"builtin_instance_counter": {
"range_check_builtin": 29
},
"n_memory_holes": 0,
"n_steps": 406
},
"Secp256k1GetPointFromX": {
"builtin_instance_counter": {
"range_check_builtin": 30
},
"n_memory_holes": 18,
"n_steps": 391
},
"Secp256k1GetXy": {
"builtin_instance_counter": {
"range_check_builtin": 11
},
"n_memory_holes": 40,
"n_steps": 239
},
"Secp256k1Mul": {
"builtin_instance_counter": {
"range_check_builtin": 7045
},
"n_memory_holes": 2,
"n_steps": 76501
},
"Secp256k1New": {
"builtin_instance_counter": {
"range_check_builtin": 35
},
"n_memory_holes": 40,
"n_steps": 475
},
"Secp256r1Add": {
"builtin_instance_counter": {
"range_check_builtin": 57
},
"n_memory_holes": 0,
"n_steps": 589
},
"Secp256r1GetPointFromX": {
"builtin_instance_counter": {
"range_check_builtin": 44
},
"n_memory_holes": 20,
"n_steps": 510
},
"Secp256r1GetXy": {
"builtin_instance_counter": {
"range_check_builtin": 11
},
"n_memory_holes": 40,
"n_steps": 241
},
"Secp256r1Mul": {
"builtin_instance_counter": {
"range_check_builtin": 13961
},
"n_memory_holes": 2,
"n_steps": 125340
},
"Secp256r1New": {
"builtin_instance_counter": {
"range_check_builtin": 49
},
"n_memory_holes": 40,
"n_steps": 594
},
"SendMessageToL1": {
"builtin_instance_counter": {
"range_check_builtin": 1
},
"n_memory_holes": 0,
"n_steps": 139
},
"StorageRead": {
"builtin_instance_counter": {
"range_check_builtin": 1
},
"n_memory_holes": 0,
"n_steps": 87
},
"StorageWrite": {
"builtin_instance_counter": {
"range_check_builtin": 1
},
"n_memory_holes": 0,
"n_steps": 89
}
},
"execute_txs_inner": {
"Declare": {
"constant": {
"builtin_instance_counter": {
"pedersen_builtin": 15,
"range_check_builtin": 63
},
"n_memory_holes": 66,
"n_steps": 2843
},
"calldata_factor": {
"builtin_instance_counter": {
"pedersen_builtin": 0,
"range_check_builtin": 0
},
"n_memory_holes": 0,
"n_steps": 0
}
},
"DeployAccount": {
"constant": {
"builtin_instance_counter": {
"pedersen_builtin": 23,
"range_check_builtin": 83
},
"n_memory_holes": 82,
"n_steps": 3798
},
"calldata_factor": {
"builtin_instance_counter": {
"pedersen_builtin": 2,
"range_check_builtin": 0
},
"n_memory_holes": 0,
"n_steps": 21
}
},
"InvokeFunction": {
"constant": {
"builtin_instance_counter": {
"pedersen_builtin": 16,
"range_check_builtin": 80
},
"n_memory_holes": 68,
"n_steps": 3549
},
"calldata_factor": {
"builtin_instance_counter": {
"pedersen_builtin": 1,
"range_check_builtin": 0
},
"n_memory_holes": 0,
"n_steps": 8
}
},
"L1Handler": {
"constant": {
"builtin_instance_counter": {
"pedersen_builtin": 11,
"range_check_builtin": 17
},
"n_memory_holes": 0,
"n_steps": 1157
},
"calldata_factor": {
"builtin_instance_counter": {
"pedersen_builtin": 1,
"range_check_builtin": 0
},
"n_memory_holes": 0,
"n_steps": 13
}
}
}
},
"os_constants": {
"nop_entry_point_offset": -1,
"entry_point_type_external": 0,
"entry_point_type_l1_handler": 1,
Expand Down Expand Up @@ -143,12 +439,6 @@
"l1_gas_index": 0,
"l2_gas_index": 1
},
"gateway": {
"max_calldata_length": 4000,
"max_contract_bytecode_size": 61440
},
"invoke_tx_max_n_steps": 3000000,
"max_recursion_depth": 50,
"validate_max_n_steps": 1000000,
"vm_resource_fee_cost": {
"bitwise_builtin": 0.32,
Expand Down
11 changes: 8 additions & 3 deletions crates/blockifier/src/execution/entry_point.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ use crate::execution::common_hints::ExecutionMode;
use crate::execution::deprecated_syscalls::hint_processor::SyscallCounter;
use crate::execution::errors::{EntryPointExecutionError, PreExecutionError};
use crate::execution::execution_utils::execute_entry_point_call;
use crate::fee::os_resources::OS_RESOURCES;
use crate::state::state_api::State;
use crate::transaction::objects::{HasRelatedFeeType, TransactionExecutionResult, TransactionInfo};
use crate::transaction::transaction_types::TransactionType;
use crate::versioned_constants::VersionedConstants;

#[cfg(test)]
#[path = "entry_point_test.rs"]
Expand Down Expand Up @@ -296,7 +296,8 @@ impl EntryPointExecutionContext {
.map(|call_info| call_info.vm_resources.n_steps)
.unwrap_or_default();

let overhead_steps = OS_RESOURCES.resources_for_tx_type(tx_type, calldata_length).n_steps;
let overhead_steps =
self.versioned_constants().os_resources_for_tx_type(tx_type, calldata_length).n_steps;
self.subtract_steps(validate_steps + overhead_steps)
}

Expand All @@ -317,8 +318,12 @@ impl EntryPointExecutionContext {
.join("\n")
}

pub fn versioned_constants(&self) -> &VersionedConstants {
&self.tx_context.block_context.versioned_constants
}

pub fn get_gas_cost(&self, name: &str) -> u64 {
self.tx_context.block_context.versioned_constants.gas_cost(name)
self.versioned_constants().gas_cost(name)
}
}

Expand Down
2 changes: 0 additions & 2 deletions crates/blockifier/src/fee.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,3 @@ pub mod eth_gas_constants;
pub mod fee_checks;
pub mod fee_utils;
pub mod gas_usage;
pub mod os_resources;
pub mod os_usage;
1 change: 1 addition & 0 deletions crates/blockifier/src/fee/actual_cost.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ impl<'a> ActualCostBuilder<'a> {
)?;

let mut actual_resources = calculate_tx_resources(
&self.tx_context.block_context.versioned_constants,
execution_resources,
gas_usage_vector,
self.tx_type,
Expand Down
Loading

0 comments on commit 6a2bda7

Please sign in to comment.