Try   HackMD

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.
    • The light client API 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, 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.
    • 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.