EIP-7807: SSZ execution blocks

Discussion topic for EIP-7807 EIP-7807: SSZ execution blocks

Update Log

*2024-11-04: initial draft https://github.com/ethereum/EIPs/pull/9017

External Reviews

None as of 2024-11-04.

Outstanding Issues

Update Log

  • Use EIP-7495 ProgressiveContainer for latest forward compatibility changes
  • Replicate changes to ExecutionPayload / Header to avoid separate block_hash field / use hash_tree_root everywhere

Some points on the EIP:

Why is Glamsterdam Meta EIP a requirement? Does it strictly need Glamsterdam?

Gas amounts

This currently lists regular and blob, but since EIP-8037 (Glamsterdam) now we have execution, state, and blob gas.

Execution block

If there are fields removed then this should be explicitly mentioned. The original fields are: parentHash, uncleHash, coinbase, stateRoot, transactionsRoot, receiptsRoot, logsBloom, difficulty, number, gasLimit, gasUsed, timestamp, extraData, mixHash, nonce, baseFee, withdrawalsHash, blobGasUsed, excessBlobGas, parentBeaconBlockRoot, requestsHash, blockAccessListHash, slotNumber

It seems uncleHash, logsBloom, difficulty, mixHash, nonce, blobGasUsed, excessBlobGas are removed.

The last 2 items are likely meant to be in excess_gas, except this maps to a class with regular/blob fields while the original header fields are blobGasUsed, excessBlobGas. Removing these params means speccing the behavior of the EIP-4844 mechanisms (how to calculate gas price) is part of this EIP.

The items removed should be stated and it should also be motivated why these are removed.

JSON-RPC

What about the removed block header values? What about the methods which query those fields? What should they return?

The Rationale section has a change to the “Logs bloom”. This is fine to reference to in Rationale, but this specification should clearly be in the Specification section. Implementers will look over the fact that they should set all the bloom bits to 1 if they just refer to the Specification section.

Love the EIP :smiley: :+1: