Stateless input¶
The decoded semantic input. Its block body remains source-backed: transactions and withdrawals are decoded only when a consumer reaches the corresponding SSZ list element.
type StatelessInput¶
The guest's decoded input: the execution payload and the chain configuration it executes under.
struct StatelessInput = {
payload : ExecutionPayload,
chain_config : ChainConfig,
}The decoded chain configuration for the executing payload.
struct ChainConfig = {
chain_id : chain_identifier,
}The execution payload under validation: the block and the block hash the consensus layer expects it to commit to.
struct ExecutionPayload = {
expected_block_hash : hash,
block : Block,
}type WitnessContext¶
Authenticated facts about the parent block that validation rules compare the payload header against.
struct WitnessContext = {
parent_hash : hash,
parent_state_root : hash,
parent_base_fee_per_gas : word,
parent_blob_gas_used : blob_gas_used,
parent_excess_blob_gas : excess_blob_gas,
}Blob gas used by one supported block. The existential count retains that
every value is exactly a multiple of GAS_PER_BLOB; profile-indexed
decoding applies the selected schedule's tighter range before values enter
this heterogeneous header domain.
type blob_gas_used = {
'count,
0 <= 'count
& 'count <= bpo2_blob_max_count.
int(gas_per_blob_value * 'count)
}The accumulated excess blob gas carried between headers (EIP-4844).
type excess_blob_gas = range(0, excess_blob_gas_bound)The common digest type used by trie, code, and block hashes.
type hash = b256The EVM 256-bit machine word (YP ยง9.1). A transparent range keeps the mathematical subtype relation visible: narrower non-negative ranges can be passed as words without a model-level conversion.
type word = range(0, 2 ^ 256 - 1)