2026-11-04 –, Workshop 2
Geth has no SSZ implementation of its own, and the progressive types arriving with Glamsterdam need one. This talk covers building core/ssz for Geth: encoding, strict decoding, classic and progressive merkleization, and proof generation, and how each design decision was made and tested.
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.
Vivek Singh Solanki is an Ethereum Protocol Fellow (cohort 7) working on go-ethereum, where he is building core/ssz: SSZ encoding and decoding, progressive merkleization and proof generation, as groundwork for EIP-7807 SSZ execution blocks. He is based in India.