# Geemo Update #4
<br/>
Hey all! I implemented the beaon apis for light_client_optimistic_update, light_client_finality_update, light_client_bootstrap, and added the light client topics to the eventstream. The PR has been submitted to lighthouse. Additionally I continued exploring what it would take to include tests for the light client rpcs and have a solid understanding of how to achieve it. However the way I see it being done is not very clean and I wanted to get a second opinion, so I contacted @pawan, one of the lighthouse networking gurus, to see if there was a better way that I was missing.
Moving forward the main components left for a working light client server are:
- putting the best LightClientUpdate per sync committee period into the database when needed.
- Implement: https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/light-client/p2p-interface.md#sync-committee
- Do full testing using helios or other light clients. (If anyone knows of a light client that implements the gossip protocol please lmk as helios does not yet)
- add beacon api for LightClientUpdatesByRange
Of course previous PRs also need to be merged as well.
Future Work:
- caching light_client data for easier access
- update fetching methods to reflect the experimental tree-states branch (won't be experimental for too much longer)
- extend the LightClientHeader with the execution payloads to support the capella upgrades to light client data.
- Add metrics to track the workload of the light client server in practice.
There is still a lot of work to be done, but I'm excited to see it to completion.
---
This is a running list of PRs submitted to Lighthouse during the EPF program with their merge status listed.
### Light Server related PRs:
- [Open] beacon api for LightClientFinalityUpdate and OptimisticUpdate. https://github.com/sigp/lighthouse/pull/3954
- [Draft] Support Light client updates by range rpc and add LightClientHeader. https://github.com/sigp/lighthouse/pull/3886
- [Open] Support LightClientFinalityUpdate and LightClientOptimisticUpdate rpcs as according to the spec. https://github.com/sigp/lighthouse/pull/3849
- [Merged] Adds light client optimistic update gossip reprocessing. We found that the gossip topics raced with receiving blocks. Add the parent_root to ReprocessQueueMessage::BlockImported so we can remove blocks from queue when a block arrives that has the same parent root. We use the parent root as opposed to the block_root because the LightClientOptimisticUpdate does not contain the block_root. https://github.com/sigp/lighthouse/pull/3799
- [Merged] Support light client gossip topics. Implements the light client gossip topics from the spec: light_client_finality_update and light_client_optimistic_update. https://github.com/sigp/lighthouse/pull/3693
### Miscellaneous PRs:
- [Merged] Adding Cli tests for logging flags by adding logger_config to the main Config: https://github.com/sigp/lighthouse/pull/3609
- [Merged] Added execution-timeout-multiplier flag and a cli test to ensure the execution layer config has the multiplier set correctly. This allows hardware constrained devices to avoid livelock due to late responses: https://github.com/sigp/lighthouse/pull/3631
- [Merged] - Optimize finalized chain sync by skipping newPayload messages. Sync speeds peaking at 16 slots/second rather than ~5-6 slots/second for unstable by not sending the execution payloads while syncing the finalized portion of the chain: https://github.com/sigp/lighthouse/pull/3738
- [Merged] Added checkpoint-sync-url-timeout flag to cli. Added timeout field to ClientGenesis::CheckpointSyncUrl to utilize timeout set. https://github.com/sigp/lighthouse/pull/3710
- [Merged] Add more INFO level logging about when the VC is producing a block. https://github.com/sigp/lighthouse/pull/3858