Try   HackMD

The last update!

I can't believe how quickly has the time with EF passed - it feels like a few weeks tops! I'm very grateful I was able to participate in the fellowship, I've learned a lot in that relatively short time, I found stuff I would love to continue doing in the future, I've met new people, with the help of EF I'll be attending another Devconnect after the one in Amsterdam (that I absolutely loved) and I have my name on an EIP - that's some bucket list material! I'll keep it short, sice I'll recapitulate my epf time in the final update, so just shortly - to everyone who made this possible, thank you so much!

Genesis state - download, checkpoint sync, generation?

The last part of the fellowship was slower for me, as I got busy with university. In the time that I had, I've been investigating even closer how the code around genesis state acquirement works. The main part seems to be separated to two parts - the first one works with state in the more general point of view, it takes information from storage if possible, provides functionality like checkpoint sync if specified by the user using an option, and others. The other part is the genesis state acquirement itself - the state can be included in the binary or, like in the case of Holesky, downloaded using a url to a server supporting Beacon API. The url download option checks the downloaded genesis using ssz file checksum and genesis validators root.

There are new additions to the Ephemery EIP, checkpoint sync functionality should now be utilized by default, and the genesis state should be downloaded from another source if the checkpoint is not available. There are two problems that are in need of solutions right now in Lighthouse, if we want to use these tools for Ephemery:

  1. Checkpoint sync is only supported when specified by the user using the "checkpoint-sync-url" option at this point, not for known networks - these download the genesis state using a url speified in the code. This requires some more changes of the core functionality code.
  2. As the code is written right now, the genesis state is downloaded and checked against the checksum and the genesis validators root even with the checkpoint sync functionality. This is problematic, because these values are constants set in the code and for Ephemery, they vary with each iteration.

For now, since I would love for people to be able to at least try and run a node using Reth and Lighthouse after my final presentation at Devconnect, I decided to utilize the genesis state download and to skip these check for Ephemery for now. The final form of this will be discussed with the Lighthouse team once I'll be working on this further after the epf.

One of the options, discussed with pk910, was to generate the checksum and publish it with each new genesis release on github, possibly making it accessible using a generic link. This is another form of centralization though, so it is not one of the best options. Another option may be making the check optional for checkpoint sync, although the problem still persists with the "backup" option of genesis download, as specified by the EIP. These are just some of my ideas though, I will discuss with Lighthouse team and proceed according to their opinions and recommendations.