# Dev Update Week 11 (robzajac) This week: - Merged in a [feature flag](https://github.com/ConsenSys/teku/pull/6652) for light client support in teku. Helps keep nodes from serving the data before APIs are ready, and some nodes may elect not to serve the data at all. - Read and discussed a set of light client API changes from etan: - https://github.com/ethereum/consensus-specs/pull/3190 - https://github.com/ethereum/consensus-specs/pull/3151 - The change is technically backwards incompatible as it modifies the existing Altair APIs. However in this case we decided it's an acceptable cost while adoption is low. - Additionally the SSZ format remains unchanged, and this is the best format for consumption by most clients due to smaller payload sizes than JSON - Adding `LightClientHeader` will make light client data extensibility easier in the future, e.g. adding the `ExecutionPayloadHeader` in Capella, which will allow light clients to correlate CL and EL data. - We will update the API in teku after the official `beacon-api` endpoint is updated https://github.com/ethereum/beacon-APIs/pull/287 - Opened a draft PR for the SSZ encoding of `GetLightClientUpdatesByRange` https://github.com/ConsenSys/teku/pull/6685 - The serialization is custom to this endpoint (https://github.com/ethereum/beacon-APIs/blob/master/apis/beacon/light_client/updates.yaml#L37), which requires a little extra work than just the default SSZ serialization - The remaining step is to compute the `ForkDigest` of each `LightClientUpdate`, which I have asked the teku team for ideas Readings - [The Road Ahead for Ethereum Light Clients](https://blog.chainsafe.io/the-road-ahead-for-ethereum-light-clients-b6fdb7c3b603), helpful overview of the LC dev ecosystem - Discussions of RLP vs. SSZ for `withdrawal_root` in Shanghai: https://hackmd.io/@benjaminion/Hkm5x5acj#CLEL-TX-and-withdrawals-commitment-to-better-support-light-clients and #consensus-dev - The encoding choice is significant for light clients because they verify data by tree root, and an encoding mismatch would not allow this - Shows the tradeoffs of incurring some tech debt now (keeping `withdrawal_root` as RLP) for increased velocity (Shanghai is not delayed) Next week: - Complete SSZ encoding of `GetLightClientUpdatesByRange` and merge in - Begin implementation of light client update internals - Update APIs according to etan's change