Skip to content

Commit 11628c3

Browse files
feat(apollo_starknet_os_program): add OS constants template file
1 parent 2bbfd9b commit 11628c3

File tree

1 file changed

+150
-0
lines changed

1 file changed

+150
-0
lines changed
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
// Autogenerated file.
2+
3+
// Transaction hash prefixes.
4+
const DECLARE_HASH_PREFIX = 'declare';
5+
const DEPLOY_HASH_PREFIX = 'deploy';
6+
const DEPLOY_ACCOUNT_HASH_PREFIX = 'deploy_account';
7+
const INVOKE_HASH_PREFIX = 'invoke';
8+
const L1_HANDLER_HASH_PREFIX = 'l1_handler';
9+
10+
// An entry point offset that indicates that nothing needs to be done.
11+
// Used to implement an empty constructor.
12+
const NOP_ENTRY_POINT_OFFSET = {NOP_ENTRY_POINT_OFFSET};
13+
14+
const ENTRY_POINT_TYPE_EXTERNAL = {ENTRY_POINT_TYPE_EXTERNAL};
15+
const ENTRY_POINT_TYPE_L1_HANDLER = {ENTRY_POINT_TYPE_L1_HANDLER};
16+
const ENTRY_POINT_TYPE_CONSTRUCTOR = {ENTRY_POINT_TYPE_CONSTRUCTOR};
17+
18+
const L1_HANDLER_VERSION = {L1_HANDLER_VERSION};
19+
const L1_HANDLER_L2_GAS_MAX_AMOUNT = {L1_HANDLER_L2_GAS_MAX_AMOUNT};
20+
21+
// Upper bound on the number of elements in a Sierra array.
22+
const SIERRA_ARRAY_LEN_BOUND = {SIERRA_ARRAY_LEN_BOUND}; // 2^32
23+
24+
// get_selector_from_name('constructor').
25+
const CONSTRUCTOR_ENTRY_POINT_SELECTOR = ({CONSTRUCTOR_ENTRY_POINT_SELECTOR});
26+
27+
// get_selector_from_name('__execute__').
28+
const EXECUTE_ENTRY_POINT_SELECTOR = ({EXECUTE_ENTRY_POINT_SELECTOR});
29+
30+
// get_selector_from_name('__validate__').
31+
const VALIDATE_ENTRY_POINT_SELECTOR = ({VALIDATE_ENTRY_POINT_SELECTOR});
32+
33+
// get_selector_from_name('__validate_declare__').
34+
const VALIDATE_DECLARE_ENTRY_POINT_SELECTOR = ({VALIDATE_DECLARE_ENTRY_POINT_SELECTOR});
35+
36+
// get_selector_from_name('__validate_deploy__').
37+
const VALIDATE_DEPLOY_ENTRY_POINT_SELECTOR = ({VALIDATE_DEPLOY_ENTRY_POINT_SELECTOR});
38+
39+
// get_selector_from_name('transfer').
40+
const TRANSFER_ENTRY_POINT_SELECTOR = ({TRANSFER_ENTRY_POINT_SELECTOR});
41+
42+
const DEFAULT_ENTRY_POINT_SELECTOR = {DEFAULT_ENTRY_POINT_SELECTOR};
43+
44+
// OS reserved contract addresses.
45+
46+
// This contract stores the block number -> block hash mapping.
47+
const BLOCK_HASH_CONTRACT_ADDRESS = {BLOCK_HASH_CONTRACT_ADDRESS};
48+
// This contract stores the aliases mapping used for stateful compression.
49+
const ALIAS_CONTRACT_ADDRESS = {ALIAS_CONTRACT_ADDRESS};
50+
// Future reserved contract address.
51+
const RESERVED_CONTRACT_ADDRESS = {RESERVED_CONTRACT_ADDRESS};
52+
// The block number -> block hash mapping is written for the current block number minus this number.
53+
const STORED_BLOCK_HASH_BUFFER = {STORED_BLOCK_HASH_BUFFER};
54+
55+
// Gas constants.
56+
57+
const STEP_GAS_COST = {STEP_GAS_COST};
58+
const RANGE_CHECK_GAS_COST = {RANGE_CHECK_GAS_COST};
59+
const RANGE_CHECK96_GAS_COST = {RANGE_CHECK96_GAS_COST};
60+
const KECCAK_BUILTIN_GAS_COST = {KECCAK_BUILTIN_GAS_COST};
61+
const PEDERSEN_GAS_COST = {PEDERSEN_GAS_COST};
62+
const BITWISE_BUILTIN_GAS_COST = {BITWISE_BUILTIN_GAS_COST};
63+
const ECOP_GAS_COST = {ECOP_GAS_COST};
64+
const POSEIDON_GAS_COST = {POSEIDON_GAS_COST};
65+
const ADD_MOD_GAS_COST = {ADD_MOD_GAS_COST};
66+
const MUL_MOD_GAS_COST = {MUL_MOD_GAS_COST};
67+
const ECDSA_GAS_COST = {ECDSA_GAS_COST};
68+
const MEMORY_HOLE_GAS_COST = {MEMORY_HOLE_GAS_COST};
69+
70+
const DEFAULT_INITIAL_GAS_COST = {DEFAULT_INITIAL_GAS_COST};
71+
const VALIDATE_MAX_SIERRA_GAS = {VALIDATE_MAX_SIERRA_GAS};
72+
const EXECUTE_MAX_SIERRA_GAS = {EXECUTE_MAX_SIERRA_GAS};
73+
const DEFAULT_INITIAL_GAS_COST_NO_L2 = VALIDATE_MAX_SIERRA_GAS + EXECUTE_MAX_SIERRA_GAS;
74+
75+
// Compiler gas costs.
76+
77+
// The initial budget at an entry point. This needs to be high enough to cover the initial get_gas.
78+
// The entry point may refund whatever remains from the initial budget.
79+
const ENTRY_POINT_INITIAL_BUDGET = {ENTRY_POINT_INITIAL_BUDGET};
80+
// The gas cost of each syscall libfunc (this value is hard-coded by the compiler).
81+
// This needs to be high enough to cover OS costs in the case of failure due to out of gas.
82+
const SYSCALL_BASE_GAS_COST = {SYSCALL_BASE_GAS_COST};
83+
84+
// Syscall gas costs.
85+
const CALL_CONTRACT_GAS_COST = {CALL_CONTRACT_GAS_COST};
86+
const DEPLOY_GAS_COST = {DEPLOY_GAS_COST};
87+
const DEPLOY_CALLDATA_FACTOR_GAS_COST = {DEPLOY_CALLDATA_FACTOR_GAS_COST};
88+
const GET_BLOCK_HASH_GAS_COST = {GET_BLOCK_HASH_GAS_COST};
89+
const GET_CLASS_HASH_AT_GAS_COST = {GET_CLASS_HASH_AT_GAS_COST};
90+
const GET_EXECUTION_INFO_GAS_COST = {GET_EXECUTION_INFO_GAS_COST};
91+
const LIBRARY_CALL_GAS_COST = {LIBRARY_CALL_GAS_COST};
92+
const REPLACE_CLASS_GAS_COST = {REPLACE_CLASS_GAS_COST};
93+
// TODO(Yoni, 1/1/2026): take into account Patricia updates and dict squash.
94+
const STORAGE_READ_GAS_COST = {STORAGE_READ_GAS_COST};
95+
const STORAGE_WRITE_GAS_COST = {STORAGE_WRITE_GAS_COST};
96+
const EMIT_EVENT_GAS_COST = {EMIT_EVENT_GAS_COST};
97+
const SEND_MESSAGE_TO_L1_GAS_COST = {SEND_MESSAGE_TO_L1_GAS_COST};
98+
const META_TX_V0_GAS_COST = {META_TX_V0_GAS_COST};
99+
const META_TX_V0_CALLDATA_FACTOR_GAS_COST = {META_TX_V0_CALLDATA_FACTOR_GAS_COST};
100+
101+
// Note the the following costs include `SYSCALL_BASE_GAS_COST` implicitly.
102+
const SECP256K1_ADD_GAS_COST = {SECP256K1_ADD_GAS_COST};
103+
const SECP256K1_GET_POINT_FROM_X_GAS_COST = {SECP256K1_GET_POINT_FROM_X_GAS_COST};
104+
const SECP256K1_GET_XY_GAS_COST = {SECP256K1_GET_XY_GAS_COST};
105+
const SECP256K1_MUL_GAS_COST = {SECP256K1_MUL_GAS_COST};
106+
const SECP256K1_NEW_GAS_COST = {SECP256K1_NEW_GAS_COST};
107+
const SECP256R1_ADD_GAS_COST = {SECP256R1_ADD_GAS_COST};
108+
const SECP256R1_GET_POINT_FROM_X_GAS_COST = {SECP256R1_GET_POINT_FROM_X_GAS_COST};
109+
const SECP256R1_GET_XY_GAS_COST = {SECP256R1_GET_XY_GAS_COST};
110+
const SECP256R1_MUL_GAS_COST = {SECP256R1_MUL_GAS_COST};
111+
const SECP256R1_NEW_GAS_COST = {SECP256R1_NEW_GAS_COST};
112+
113+
const KECCAK_GAS_COST = {KECCAK_GAS_COST};
114+
const KECCAK_ROUND_COST_GAS_COST = {KECCAK_ROUND_COST_GAS_COST};
115+
const SHA256_PROCESS_BLOCK_GAS_COST = {SHA256_PROCESS_BLOCK_GAS_COST};
116+
117+
// Cairo 1.0 error codes.
118+
const ERROR_BLOCK_NUMBER_OUT_OF_RANGE = {ERROR_BLOCK_NUMBER_OUT_OF_RANGE};
119+
const ERROR_OUT_OF_GAS = {ERROR_OUT_OF_GAS};
120+
const ERROR_ENTRY_POINT_FAILED = {ERROR_ENTRY_POINT_FAILED};
121+
const ERROR_ENTRY_POINT_NOT_FOUND = {ERROR_ENTRY_POINT_NOT_FOUND};
122+
const ERROR_INVALID_INPUT_LEN = {ERROR_INVALID_INPUT_LEN};
123+
const ERROR_INVALID_ARGUMENT = {ERROR_INVALID_ARGUMENT};
124+
125+
// The expected return value of the `__validate*__` functions of a Cairo 1.0 account contract.
126+
const VALIDATED = {VALIDATED};
127+
128+
// Resources
129+
const L1_GAS = {L1_GAS};
130+
const L2_GAS = {L2_GAS};
131+
const L1_DATA_GAS = {L1_DATA_GAS};
132+
const L1_GAS_INDEX = {L1_GAS_INDEX};
133+
const L2_GAS_INDEX = {L2_GAS_INDEX};
134+
const L1_DATA_GAS_INDEX = {L1_DATA_GAS_INDEX};
135+
136+
// Round down the block number and timestamp when queried inside `__validate__`.
137+
const VALIDATE_BLOCK_NUMBER_ROUNDING = {VALIDATE_BLOCK_NUMBER_ROUNDING};
138+
const VALIDATE_TIMESTAMP_ROUNDING = {VALIDATE_TIMESTAMP_ROUNDING};
139+
140+
// List of CairoZero account contracts that require the transaction version to be 1.
141+
{V1_BOUND_ACCOUNTS_CAIRO0}
142+
143+
// List of Cairo1 account contracts that require the transaction version to be 1.
144+
{V1_BOUND_ACCOUNTS_CAIRO1}
145+
146+
// Max transaction tip for which a v3 transaction can be replaced with a v1 transaction.
147+
const V1_BOUND_ACCOUNTS_MAX_TIP = {V1_BOUND_ACCOUNTS_MAX_TIP};
148+
149+
// List of Cairo1 account contracts that require the resource bounds to exclude data gas.
150+
{DATA_GAS_ACCOUNTS}

0 commit comments

Comments
 (0)