changed 2 years ago
Published Linked with GitHub

EPF Dev Update #10

Just to add a bit of context to my updates, I'll be sticking my project links here in furture updates.

Update for week 11 (2023/1/9 - 2023/1/16)

Lighthouse: Builder updates for EIP-4844

PR: Builder updates for Blobs (EIP-4844)

So I wanted to drop down some notes on this PR because the work turns out to be much bigger than I thought, and it's not even finished yet. I think I've implemented most of the draft spec changes and will start working on tests. As of now, the spec changes haven't been implemented in the builder client (mev-boost), so all testing will be done against mocks, which will need some updates as well.

Details of changes I've made so far:

  • Make BuilderBid into a superstruct, so that a new blob_kzg_commitments field can be introduced to just the Eip4844 variant / version of BuilderBid. SuperStruct is a Rust library for working with versioned data.
  • Make serialization / deserialization work for the BuilderBid superstruct. This ended up being a relatively small change but took me a while to figure out how to get this working, as I wasn't familiar with serde, a framework for serializing and deserializing Rust data structures.
  • In order to verify the serialization/deserializtion works for all BuilderBid variants (Merge, Capella, Eip4844), I implemented a few tests here. The tests deserialize a predefined JSON input into a BuilderBid object, and serialize the object into a JSON string, and then it verifies the output against the original JSON. And it worked \o/
  • Implement handling of new field blob_kzg_commitments from the Builder getHeader endpoint. The blob_kzg_commitments is now added to the beacon blocks before validators sign them.
  • Implement handling of BlobsSidecar received from the Builder submitBlindedBlock endpoint. The blobs that are recieved, together with the full beacon block is then broadcasted to other beacon nodes.

Next step is to verfiy this all works!

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

I've created an overview diagram to illustrate the block proposal process with builder flow:

Select a repo