INVOKE
transaction’s behavior by skipping the execution of __validate__
before __execute__
in the calling account contract, this specification is enforced by SNOS and therefore this sequencer will not be able to produce the proof for the block in which this transaction was included.
main
function:
(contract_address, class_hash)
is added to a global state updates dictionary for each loaded contract (which is needed to assert that the loaded code corresponds to the class hash that is part of the state commitment)
state_update
function in state.cairo
).
serialize_os_output
function in output.cairo
)
execute_entry_point
function in execute_transactions.cairo
).
For syscalls such as get_execution_info
, which returns the block hash and number, correctness means consistency with the value given to SNOS as input. For contract calls, however, one needs to execute the called contract and verify that the actual response and the guessed response are identical. But how can we guess the responses to all the contract calls before executing them? For that, it is important to distinguish two different styles-of-execution that a Starknet block goes through:
programHash
(for SNOS’s program hash) and aggregatorProgramHash
(for the aggregator’s program hash) functions.