Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
// Autogenerated file.

// An entry point offset that indicates that nothing needs to be done.
// Used to implement an empty constructor.
const NOP_ENTRY_POINT_OFFSET = {NOP_ENTRY_POINT_OFFSET};

const ENTRY_POINT_TYPE_EXTERNAL = {ENTRY_POINT_TYPE_EXTERNAL};
const ENTRY_POINT_TYPE_L1_HANDLER = {ENTRY_POINT_TYPE_L1_HANDLER};
const ENTRY_POINT_TYPE_CONSTRUCTOR = {ENTRY_POINT_TYPE_CONSTRUCTOR};

const L1_HANDLER_VERSION = {L1_HANDLER_VERSION};
const L1_HANDLER_L2_GAS_MAX_AMOUNT = {L1_HANDLER_L2_GAS_MAX_AMOUNT};

const SIERRA_ARRAY_LEN_BOUND = {SIERRA_ARRAY_LEN_BOUND}; // 2^32

// get_selector_from_name('constructor').
const CONSTRUCTOR_ENTRY_POINT_SELECTOR = ({CONSTRUCTOR_ENTRY_POINT_SELECTOR});

// get_selector_from_name('__execute__').
const EXECUTE_ENTRY_POINT_SELECTOR = ({EXECUTE_ENTRY_POINT_SELECTOR});

// get_selector_from_name('__validate__').
const VALIDATE_ENTRY_POINT_SELECTOR = ({VALIDATE_ENTRY_POINT_SELECTOR});

// get_selector_from_name('__validate_declare__').
const VALIDATE_DECLARE_ENTRY_POINT_SELECTOR = ({VALIDATE_DECLARE_ENTRY_POINT_SELECTOR});

// get_selector_from_name('__validate_deploy__').
const VALIDATE_DEPLOY_ENTRY_POINT_SELECTOR = ({VALIDATE_DEPLOY_ENTRY_POINT_SELECTOR});

// get_selector_from_name('transfer').
const TRANSFER_ENTRY_POINT_SELECTOR = ({TRANSFER_ENTRY_POINT_SELECTOR});

const DEFAULT_ENTRY_POINT_SELECTOR = {DEFAULT_ENTRY_POINT_SELECTOR};

// OS reserved contract addresses.

// This contract stores the block number -> block hash mapping.
const BLOCK_HASH_CONTRACT_ADDRESS = {BLOCK_HASH_CONTRACT_ADDRESS};
// This contract stores the aliases mapping used for stateful compression.
const ALIAS_CONTRACT_ADDRESS = {ALIAS_CONTRACT_ADDRESS};
// Future reserved contract address.
const RESERVED_CONTRACT_ADDRESS = {RESERVED_CONTRACT_ADDRESS};
// The block number -> block hash mapping is written for the current block number minus this number.
const STORED_BLOCK_HASH_BUFFER = {STORED_BLOCK_HASH_BUFFER};

// Gas constants.
const STEP_GAS_COST = {STEP_GAS_COST};
const RANGE_CHECK_GAS_COST = {RANGE_CHECK_GAS_COST};
const RANGE_CHECK96_GAS_COST = {RANGE_CHECK96_GAS_COST};
const KECCAK_BUILTIN_GAS_COST = {KECCAK_BUILTIN_GAS_COST};
const PEDERSEN_GAS_COST = {PEDERSEN_GAS_COST};
const BITWISE_BUILTIN_GAS_COST = {BITWISE_BUILTIN_GAS_COST};
const ECOP_GAS_COST = {ECOP_GAS_COST};
const POSEIDON_GAS_COST = {POSEIDON_GAS_COST};
const ADD_MOD_GAS_COST = {ADD_MOD_GAS_COST};
const MUL_MOD_GAS_COST = {MUL_MOD_GAS_COST};
const ECDSA_GAS_COST = {ECDSA_GAS_COST};
const MEMORY_HOLE_GAS_COST = {MEMORY_HOLE_GAS_COST};

const DEFAULT_INITIAL_GAS_COST = {DEFAULT_INITIAL_GAS_COST};
const VALIDATE_MAX_SIERRA_GAS = {VALIDATE_MAX_SIERRA_GAS};
const EXECUTE_MAX_SIERRA_GAS = {EXECUTE_MAX_SIERRA_GAS};
const DEFAULT_INITIAL_GAS_COST_NO_L2 = VALIDATE_MAX_SIERRA_GAS + EXECUTE_MAX_SIERRA_GAS;

// Compiler gas costs.

// The initial budget at an entry point. This needs to be high enough to cover the initial get_gas.
// The entry point may refund whatever remains from the initial budget.
const ENTRY_POINT_INITIAL_BUDGET = {ENTRY_POINT_INITIAL_BUDGET};
// The gas cost of each syscall libfunc (this value is hard-coded by the compiler).
// This needs to be high enough to cover OS costs in the case of failure due to out of gas.
const SYSCALL_BASE_GAS_COST = {SYSCALL_BASE_GAS_COST};

// Syscall gas costs.
const CALL_CONTRACT_GAS_COST = {CALL_CONTRACT_GAS_COST};
const DEPLOY_GAS_COST = {DEPLOY_GAS_COST};
const DEPLOY_CALLDATA_FACTOR_GAS_COST = {DEPLOY_CALLDATA_FACTOR_GAS_COST};
const GET_BLOCK_HASH_GAS_COST = {GET_BLOCK_HASH_GAS_COST};
const GET_CLASS_HASH_AT_GAS_COST = {GET_CLASS_HASH_AT_GAS_COST};
const GET_EXECUTION_INFO_GAS_COST = {GET_EXECUTION_INFO_GAS_COST};
const LIBRARY_CALL_GAS_COST = {LIBRARY_CALL_GAS_COST};
const REPLACE_CLASS_GAS_COST = {REPLACE_CLASS_GAS_COST};
const STORAGE_READ_GAS_COST = {STORAGE_READ_GAS_COST};
const STORAGE_WRITE_GAS_COST = {STORAGE_WRITE_GAS_COST};
const EMIT_EVENT_GAS_COST = {EMIT_EVENT_GAS_COST};
const SEND_MESSAGE_TO_L1_GAS_COST = {SEND_MESSAGE_TO_L1_GAS_COST};
const META_TX_V0_GAS_COST = {META_TX_V0_GAS_COST};
const META_TX_V0_CALLDATA_FACTOR_GAS_COST = {META_TX_V0_CALLDATA_FACTOR_GAS_COST};

// Note the the following costs include `SYSCALL_BASE_GAS_COST` implicitly.
const SECP256K1_ADD_GAS_COST = {SECP256K1_ADD_GAS_COST};
const SECP256K1_GET_POINT_FROM_X_GAS_COST = {SECP256K1_GET_POINT_FROM_X_GAS_COST};
const SECP256K1_GET_XY_GAS_COST = {SECP256K1_GET_XY_GAS_COST};
const SECP256K1_MUL_GAS_COST = {SECP256K1_MUL_GAS_COST};
const SECP256K1_NEW_GAS_COST = {SECP256K1_NEW_GAS_COST};
const SECP256R1_ADD_GAS_COST = {SECP256R1_ADD_GAS_COST};
const SECP256R1_GET_POINT_FROM_X_GAS_COST = {SECP256R1_GET_POINT_FROM_X_GAS_COST};
const SECP256R1_GET_XY_GAS_COST = {SECP256R1_GET_XY_GAS_COST};
const SECP256R1_MUL_GAS_COST = {SECP256R1_MUL_GAS_COST};
const SECP256R1_NEW_GAS_COST = {SECP256R1_NEW_GAS_COST};

const KECCAK_GAS_COST = {KECCAK_GAS_COST};
const KECCAK_ROUND_COST_GAS_COST = {KECCAK_ROUND_COST_GAS_COST};
const SHA256_PROCESS_BLOCK_GAS_COST = {SHA256_PROCESS_BLOCK_GAS_COST};

// Cairo 1.0 error codes.
const ERROR_BLOCK_NUMBER_OUT_OF_RANGE = {ERROR_BLOCK_NUMBER_OUT_OF_RANGE};
const ERROR_OUT_OF_GAS = {ERROR_OUT_OF_GAS};
const ERROR_ENTRY_POINT_FAILED = {ERROR_ENTRY_POINT_FAILED};
const ERROR_ENTRY_POINT_NOT_FOUND = {ERROR_ENTRY_POINT_NOT_FOUND};
const ERROR_INVALID_INPUT_LEN = {ERROR_INVALID_INPUT_LEN};
const ERROR_INVALID_ARGUMENT = {ERROR_INVALID_ARGUMENT};

// The expected return value of the `__validate*__` functions of a Cairo 1.0 account contract.
const VALIDATED = {VALIDATED};

// Resources
const L1_GAS = {L1_GAS};
const L2_GAS = {L2_GAS};
const L1_DATA_GAS = {L1_DATA_GAS};
const L1_GAS_INDEX = {L1_GAS_INDEX};
const L2_GAS_INDEX = {L2_GAS_INDEX};
const L1_DATA_GAS_INDEX = {L1_DATA_GAS_INDEX};

// Round down the block number and timestamp when queried inside `__validate__`.
const VALIDATE_BLOCK_NUMBER_ROUNDING = {VALIDATE_BLOCK_NUMBER_ROUNDING};
const VALIDATE_TIMESTAMP_ROUNDING = {VALIDATE_TIMESTAMP_ROUNDING};

// List of CairoZero account contracts that require the transaction version to be 1.
{V1_BOUND_ACCOUNTS_CAIRO0}

// List of Cairo1 account contracts that require the transaction version to be 1.
{V1_BOUND_ACCOUNTS_CAIRO1}

// Max transaction tip for which a v3 transaction can be replaced with a v1 transaction.
const V1_BOUND_ACCOUNTS_MAX_TIP = {V1_BOUND_ACCOUNTS_MAX_TIP};

// List of Cairo1 account contracts that require the resource bounds to exclude data gas.
{DATA_GAS_ACCOUNTS}
3 changes: 3 additions & 0 deletions crates/apollo_starknet_os_program/src/constants_test.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const _CONSTS_CONTENTS: &str = include_str!("cairo/starkware/starknet/core/os/constants.cairo");
const _CONSTS_TEMPLATE: &str =
include_str!("cairo/starkware/starknet/core/os/constants_template.txt");
2 changes: 2 additions & 0 deletions crates/apollo_starknet_os_program/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ use cairo_vm::types::program::Program;

use crate::program_hash::{ProgramHash, PROGRAM_HASH_PATH};

#[cfg(test)]
pub mod constants_test;
pub mod program_hash;
#[cfg(feature = "test_programs")]
pub mod test_programs;
Expand Down
Loading