Just to add a bit of context to my updates, I'll be sticking my project links here in furture updates.
getBlobsSideCar
to Beacon API spec (ethereum/beacon-APIs#286)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:
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.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.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/blob_kzg_commitments
from the Builder getHeader
endpoint. The blob_kzg_commitments
is now added to the beacon blocks before validators sign them.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!
I've created an overview diagram to illustrate the block proposal process with builder flow: