Overview
A Starknet block is a list of transactions and a block header that contains multiple fields, including the hash of the previous block and a commitment to their state diff, as well as commitments to the transactions, events, and receipts it includes.Block header fields
Block hash
A block hash is defined by:-
his the Poseidon hash function -
transaction_count || event_count || state_diff_length || l1_da_modeis the concatenation of the 64-bit representations oftransaction_count,event_count, andstate_diff_lengthwith 0 ifl1_da_modeisCALLDATAand 1 ifl1_da_modeisBLOB -
gas_prices_hashis defined by:wherehis the Poseidon hash function andl1_gas_price_wei,l1_gas_price_fri,l1_data_gas_price_wei,l1_data_gas_price_fri,l2_gas_price_wei, andl2_gas_price_friare the wei and fri denominated prices for the three resource types.
State diff commitment
The state diff commitment is defined by:his the Poseidon hash functionsis the number of deployed and replaced contracts in the blockdeployed_or_replaced_address1, ... , deployed_or_replaced_addresssare the deployed and replaced addresses sorted in numerical increasing order according to the addresses- For a replaced address, each value is
replaced_contract_address, new_class_hash
- For a replaced address, each value is
dis the number of declared and migrated classes in the blockdeclared_or_migrated_class_hash1, declared_or_migrated_compiled_class_hash1..., declared_or_migrated_class_hashd, declared_or_migrated_class_hashdare the declared or replaced class hashes sorted in a numerical increasing order.declared_or_migrated_class_hashis the hash of the Sierra codedeclared_or_migrated_compiled_class_hashis the hash of the CASM code
1and0are placeholders that may be used in the futurenis the number of contracts whose storage was updatedc_i, k_i_1, v_i_1, … , k_i_mi,v_i_miaremiupdates(k_i_1, v_i_1), … ,(k_i_mi, v_i_mi)to contract addressesc_i. Wherek_i_jis thej-th key andv_i_jis thej-th new valuekis the number of accounts whose nonce was updatedTransactions, events, and receipts commitments
Transactions, events, and receipts commitments
The commitment to transactions, the commitment to events and the commitment to receipts are all roots of height-64 binary Merkle Patricia tries where the leaf at indexi corresponds to:
- For transactions:
h(transaction_hash, signature)for thei’th transaction included in the block, where transaction_hash is calculated as follows andhis the Poseidon hash function. Note that the signature is itself a (possibly empty) array of field elements. - For events: The event hash of the
i’th emitted event included in the block - For receipts: The receipt hash of the
i’th transaction receipt included in the block
Event hash
The hash of an event emitted by a contract whose address isemitter_address and a transaction whose hash is tx_hash is defined by:
h is the Poseidon hash function.
Receipt hash
The hash of a transaction receipt is defined by:-
his the Poseidon hash function -
h(messages)formessages = (from1, to1, payload1), … , (fromn, ton, payloadn)is defined by: