# Dev Update Week 15 This week I focused mainly on two things: - Worked on getting my mainnet besu + teku pair up and running on a node provided by Mario. Initially had some issues with the configurations for the clients, but now the EL & CL syncs are both complete with teku up-to-date in archive mode. - Archive mode in teku is necessary for accessing historic states, which are required to derive light client data. - We can test the light client API already implemented (light client bootstrap) on this mainnet client pair. - Worked on the light client updates by range API and the light client data availability problem. - Light client data, at least for `LightClientUpdate`, is [derived from beacon state](https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/light-client/full-node.md#create_light_client_update). - The [light client API](https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/light-client/full-node.md#create_light_client_update) specifies that servers should provide light client data for a historic period of ~5 months. - Most nodes, at least in teku, run in prune mode, meaning that they do not store any state beyond the latest finalized. Archive nodes have a significant storage requirement that most nodes will not provide (especially archive nodes running with >= 5 months of historic data, not just e.g. from the latest checkpoint). - So we have a question of how nodes will store historic light client data and how they will expose it to callers. - Light client table - As explored in a [previous dev update](https://hackmd.io/@robzajac/B1sAY9M3j), long-term the solution with best data availability and correctness would be to persist light client data on-disk as blocks are applied and serve from the database upon a light client request. - In the interim, we began prototyping an implementation that approximates the "best" light client update for a sync committee period by taking the first two beacon states of the period (pre-state and post-state). - I pushed up a WIP commit with this [here](https://github.com/robzajac/teku/commit/0335e7bc2ccf2c9ddb5b2050863cd371caf35c63). - However, this approach has several limitations: - Requires archive nodes to serve the data (hard to find). - Likely suboptimal data (according to `is_better_update`) - Code is harder to maintain (edge cases around non-finalized states, pre-altair states, etc.) - Therefore, we will most likely abandon this approach in favor of specing out a table update in teku for saving historic light client updates. More on the design & implementation of a light client data table in teku to come this coming week.