---
# System prepended metadata

title: EPF Cohort 5 - Prysm - Implementing a light client server

---

# EPF Cohort 5 - Prysm - Implementing a server for light clients

## Context

https://github.com/ethereum/consensus-specs/tree/dev/specs/altair/light-client describes what is needed to implement light-client support in Ethereum. Out of the four documents in the directory, https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/light-client/full-node.md describes what is required from full nodes:

> This document provides helper functions to enable full nodes to serve light client data. Full nodes SHOULD implement the described functionality to enable light clients to sync with the network.

**This is the only specification that's in scope for the project**. The other three documents explain how to implement a light client itself, which is **explicitly out of scope**.

Capella and Deneb hard forks extended the `full-node.md` document with additional logic, and the current status of light client is best described by another EPF project - [Lodestar: Light Clients Research + Implementation](https://github.com/eth-protocol-fellows/cohort-five/blob/main/projects/project-ideas.md#lodestar-light-clients-research--implementation). Again, we are only interested in what needs to be implemented from a server-side point of view.

We want to finally bring light client support to Prysm. Some work has already been done by an external contributor:
- https://github.com/prysmaticlabs/prysm/pull/12853
- https://github.com/prysmaticlabs/prysm/pull/12984
- https://github.com/prysmaticlabs/prysm/pull/13225

Unfortunately, it was never completed (see https://github.com/prysmaticlabs/prysm/pull/12854 and https://github.com/prysmaticlabs/prysm/issues/12991).

## Project proposal

The main objective of the project is to implement server-side support for light client nodes in Prysm, one which is aligned with the latest light client specification. The participants are expected to:
- understand the concept of an Ethereum light client (ideally participants will have already known this before joining the project, although getting quickly up to speed during the project is also an option)
- get familiar with the current state of light client development and with the consensus spec to an extent that is necessary to implement the light client's server
- participate in EF R&D Discord discussions around light client
- submit PRs to the Prysm repo
- test the implemented functionality locally, ideally against a working Ethereum light client such as [Helios](https://github.com/a16z/helios) or one from another consensus client team