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