SSZ Execution Blocks (EIP-7807) for Geth
Geth has three disconnected SSZ mechanisms and no shared implementation: fastssz in one file, zrnt behind the light client, and two hand-rolled merkleizers in beacon/types with TODOs from 2023 asking for an SSZ encoder. None of them can compute a progressive root. EIP-7688 is scheduled for Glamsterdam and converts the types Geth's light client roots through zrnt, dormant since February 2025.
My EPF project is core/ssz: encoding, strict decoding, classic and progressive merkleization per EIP-7495 and EIP-7916, and Merkle proof generation, with the EIP-7807 block on top.
The talk walks through the design: hand-written per-type methods rather than reflection, batched hashing through gohashtree, a zero-hash table derived at startup, and a decoder that latches errors instead of returning them per field. Each choice is compared against how Erigon and Nimbus made it. Everything is checked against the official ssz_generic vectors, and the work is landing upstream as small PRs.
Speakers: Vivek Singh Solanki
Track: [CLS] - EPF