Skip to content

Commit e7e620c

Browse files
feat(apollo_starknet_os_program): add OS constants template file
1 parent 1191dd6 commit e7e620c

1 file changed

Lines changed: 148 additions & 0 deletions

File tree

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
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+
const STEP_GAS_COST = {STEP_GAS_COST};
57+
const RANGE_CHECK_GAS_COST = {RANGE_CHECK_GAS_COST};
58+
const RANGE_CHECK96_GAS_COST = {RANGE_CHECK96_GAS_COST};
59+
const KECCAK_BUILTIN_GAS_COST = {KECCAK_BUILTIN_GAS_COST};
60+
const PEDERSEN_GAS_COST = {PEDERSEN_GAS_COST};
61+
const BITWISE_BUILTIN_GAS_COST = {BITWISE_BUILTIN_GAS_COST};
62+
const ECOP_GAS_COST = {ECOP_GAS_COST};
63+
const POSEIDON_GAS_COST = {POSEIDON_GAS_COST};
64+
const ADD_MOD_GAS_COST = {ADD_MOD_GAS_COST};
65+
const MUL_MOD_GAS_COST = {MUL_MOD_GAS_COST};
66+
const ECDSA_GAS_COST = {ECDSA_GAS_COST};
67+
const MEMORY_HOLE_GAS_COST = {MEMORY_HOLE_GAS_COST};
68+
69+
const DEFAULT_INITIAL_GAS_COST = {DEFAULT_INITIAL_GAS_COST};
70+
const VALIDATE_MAX_SIERRA_GAS = {VALIDATE_MAX_SIERRA_GAS};
71+
const EXECUTE_MAX_SIERRA_GAS = {EXECUTE_MAX_SIERRA_GAS};
72+
const DEFAULT_INITIAL_GAS_COST_NO_L2 = VALIDATE_MAX_SIERRA_GAS + EXECUTE_MAX_SIERRA_GAS;
73+
74+
// Compiler gas costs.
75+
76+
// The initial budget at an entry point. This needs to be high enough to cover the initial get_gas.
77+
// The entry point may refund whatever remains from the initial budget.
78+
const ENTRY_POINT_INITIAL_BUDGET = {ENTRY_POINT_INITIAL_BUDGET};
79+
// The gas cost of each syscall libfunc (this value is hard-coded by the compiler).
80+
// This needs to be high enough to cover OS costs in the case of failure due to out of gas.
81+
const SYSCALL_BASE_GAS_COST = {SYSCALL_BASE_GAS_COST};
82+
83+
// Syscall gas costs.
84+
const CALL_CONTRACT_GAS_COST = {CALL_CONTRACT_GAS_COST};
85+
const DEPLOY_GAS_COST = {DEPLOY_GAS_COST};
86+
const DEPLOY_CALLDATA_FACTOR_GAS_COST = {DEPLOY_CALLDATA_FACTOR_GAS_COST};
87+
const GET_BLOCK_HASH_GAS_COST = {GET_BLOCK_HASH_GAS_COST};
88+
const GET_CLASS_HASH_AT_GAS_COST = {GET_CLASS_HASH_AT_GAS_COST};
89+
const GET_EXECUTION_INFO_GAS_COST = {GET_EXECUTION_INFO_GAS_COST};
90+
const LIBRARY_CALL_GAS_COST = {LIBRARY_CALL_GAS_COST};
91+
const REPLACE_CLASS_GAS_COST = {REPLACE_CLASS_GAS_COST};
92+
const STORAGE_READ_GAS_COST = {STORAGE_READ_GAS_COST};
93+
const STORAGE_WRITE_GAS_COST = {STORAGE_WRITE_GAS_COST};
94+
const EMIT_EVENT_GAS_COST = {EMIT_EVENT_GAS_COST};
95+
const SEND_MESSAGE_TO_L1_GAS_COST = {SEND_MESSAGE_TO_L1_GAS_COST};
96+
const META_TX_V0_GAS_COST = {META_TX_V0_GAS_COST};
97+
const META_TX_V0_CALLDATA_FACTOR_GAS_COST = {META_TX_V0_CALLDATA_FACTOR_GAS_COST};
98+
99+
// Note the the following costs include `SYSCALL_BASE_GAS_COST` implicitly.
100+
const SECP256K1_ADD_GAS_COST = {SECP256K1_ADD_GAS_COST};
101+
const SECP256K1_GET_POINT_FROM_X_GAS_COST = {SECP256K1_GET_POINT_FROM_X_GAS_COST};
102+
const SECP256K1_GET_XY_GAS_COST = {SECP256K1_GET_XY_GAS_COST};
103+
const SECP256K1_MUL_GAS_COST = {SECP256K1_MUL_GAS_COST};
104+
const SECP256K1_NEW_GAS_COST = {SECP256K1_NEW_GAS_COST};
105+
const SECP256R1_ADD_GAS_COST = {SECP256R1_ADD_GAS_COST};
106+
const SECP256R1_GET_POINT_FROM_X_GAS_COST = {SECP256R1_GET_POINT_FROM_X_GAS_COST};
107+
const SECP256R1_GET_XY_GAS_COST = {SECP256R1_GET_XY_GAS_COST};
108+
const SECP256R1_MUL_GAS_COST = {SECP256R1_MUL_GAS_COST};
109+
const SECP256R1_NEW_GAS_COST = {SECP256R1_NEW_GAS_COST};
110+
111+
const KECCAK_GAS_COST = {KECCAK_GAS_COST};
112+
const KECCAK_ROUND_COST_GAS_COST = {KECCAK_ROUND_COST_GAS_COST};
113+
const SHA256_PROCESS_BLOCK_GAS_COST = {SHA256_PROCESS_BLOCK_GAS_COST};
114+
115+
// Cairo 1.0 error codes.
116+
const ERROR_BLOCK_NUMBER_OUT_OF_RANGE = {ERROR_BLOCK_NUMBER_OUT_OF_RANGE};
117+
const ERROR_OUT_OF_GAS = {ERROR_OUT_OF_GAS};
118+
const ERROR_ENTRY_POINT_FAILED = {ERROR_ENTRY_POINT_FAILED};
119+
const ERROR_ENTRY_POINT_NOT_FOUND = {ERROR_ENTRY_POINT_NOT_FOUND};
120+
const ERROR_INVALID_INPUT_LEN = {ERROR_INVALID_INPUT_LEN};
121+
const ERROR_INVALID_ARGUMENT = {ERROR_INVALID_ARGUMENT};
122+
123+
// The expected return value of the `__validate*__` functions of a Cairo 1.0 account contract.
124+
const VALIDATED = {VALIDATED};
125+
126+
// Resources
127+
const L1_GAS = {L1_GAS};
128+
const L2_GAS = {L2_GAS};
129+
const L1_DATA_GAS = {L1_DATA_GAS};
130+
const L1_GAS_INDEX = {L1_GAS_INDEX};
131+
const L2_GAS_INDEX = {L2_GAS_INDEX};
132+
const L1_DATA_GAS_INDEX = {L1_DATA_GAS_INDEX};
133+
134+
// Round down the block number and timestamp when queried inside `__validate__`.
135+
const VALIDATE_BLOCK_NUMBER_ROUNDING = {VALIDATE_BLOCK_NUMBER_ROUNDING};
136+
const VALIDATE_TIMESTAMP_ROUNDING = {VALIDATE_TIMESTAMP_ROUNDING};
137+
138+
// List of CairoZero account contracts that require the transaction version to be 1.
139+
{V1_BOUND_ACCOUNTS_CAIRO0}
140+
141+
// List of Cairo1 account contracts that require the transaction version to be 1.
142+
{V1_BOUND_ACCOUNTS_CAIRO1}
143+
144+
// Max transaction tip for which a v3 transaction can be replaced with a v1 transaction.
145+
const V1_BOUND_ACCOUNTS_MAX_TIP = {V1_BOUND_ACCOUNTS_MAX_TIP};
146+
147+
// List of Cairo1 account contracts that require the resource bounds to exclude data gas.
148+
{DATA_GAS_ACCOUNTS}

0 commit comments

Comments
 (0)