---
tags: epf,ethereum
---
# EPF Dev Update #9
Happy New Year everyone! :fireworks:
**Summary for this week**:
- Add Beacon API endpoint to download blobs by block id. PR merged.
- Set up a Lighthouse/Geth node on [EIP-4844 devnet-3](https://notes.ethereum.org/@timbeiko/4844-devnet-3)
- Builder spec changes for Capella and EIP-4844, PRs under review.
**Next week:**
- Work on tests for the new download blobs API
- Add download blob endpoint to Beacon API spec. [Issue here](https://github.com/ethereum/beacon-APIs/issues/282)
- Continuing work on builder updates for EIP-4844. [Draft PR here](https://github.com/sigp/lighthouse/pull/3808)
## New Beacon API endpoint to download blobs by block ID
Pull request: [lighthouse#3830](https://github.com/sigp/lighthouse/pull/3830)
My PR was merged to [`eip4844`](https://github.com/sigp/lighthouse/tree/eip4844) branch earlier this week.
Since this endpoint isn't part of the standard API yet, I have implemented it under the `/lighthouse` path for now - this is where the "non-standard" endpoints sit. There is an [open issue](https://github.com/ethereum/beacon-APIs/issues/282) to formally add this to Beacon API spec, which I plan to work on soon.
### Testing the endpoint
If you're interested in trying this out, below are the steps:
1. Start a Lighthouse/Geth testnet using the Lighthouse `local_testnet` script from [here](https://github.com/sigp/lighthouse/tree/eip4844/scripts/local_testnet)
2. Once the network has reached the EIP-4844 fork (epoch 2), a blob transaction can be submitted using [`blob-utils`](https://github.com/Inphi/blob-utils):
```
blob-utils tx --rpc-url http://localhost:6001 --blob-file ./blob.txt -to 0xC8D369B164361A8961286CFbaB3bc10F962185a8 --private-key 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8 --gas-limit 210000 --gas-price 20000000000 --chain-id 4242 --priority-gas-price 2000000000 --max-fee-per-data-gas 3000000000
```
3. Then the blob sidecar can be retrieved using block ID, here using slot as an example:
```
curl http://localhost:8001/lighthouse/beacon/blobs_sidecars/19823
```
Below are some example outputs:
### Output from a slot with no blobs:
```
curl -s http://localhost:8000/lighthouse/beacon/blobs_sidecars/1617 | jq .
{
"data": {
"beacon_block_root": "0x8cc186bbb9ae722211764d54d4eaaab3a383e6ca09dc9a08521b722905d81a73",
"beacon_block_slot": "1617",
"blobs": [],
"kzg_aggregated_proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}
}
```
### Output with blob:
```
curl http://localhost:8000/lighthouse/beacon/blobs_sidecars/1616 | jq .
{
"data": {
"beacon_block_root": "0x143150075e8fbd835397c57441d66f5b2d39f5b4c894935f7c964c90899ed7e7",
"beacon_block_slot": "1616",
"blobs": [
"0x3000000000000000000000000000000000000000000000000000000000000000000000000000000000..."
],
"kzg_aggregated_proof": "0xa5926e75519eef67bd4f40cc256e815173c7b4e9fcdd8400ee007692447187e2adc7ddc00ed7b00e680d4cb8d0ae48f0"
}
}
```
### Output from a pre 4844 block:
```
curl -s http://localhost:8000/lighthouse/beacon/blobs_sidecars/genesis | jq .
{
"code": 404,
"message": "NOT_FOUND: Blob with block root 0x9247…c507 is not in the store",
"stacktraces": []
}
```
I've started working on some tests for this endpoint, and it has been quite challenging as it requires a bit of work to get the test infra setup, e.g. the mock execution layer would need to support `forkChoiceUpdatedV2`, `getPayloadV3`, as well as the get blobs method - it needs to be able to produce valid blobs sidecars. I've got some help from [**@realbigsean**](https://github.com/realbigsean), so hopefully I'll get this working next week!
## Running a node on devnet-3
I've created a docker-compose setup for running a node on devnet v3: https://github.com/jimmygchen/devnet-v3.
I was able to sync a Lighthouse node all the way to slot 10207, which is the maximum slot that we can sync to right now as the chain has stalled there. I'm not sure exactly what happened, there were some discussions on R&D discord `#4844-testing` channel, but this is great effort from the core devs as we've now got multiple clients running on devnet-3, and the group is now looking to start planning for devnet v4.
## Beacon API & Builder Spec changes for Capella & EIP-4844
- Beacon API updates for EIP-4844 ([ethereum/beacon-APIs#271](https://github.com/ethereum/beacon-APIs/pull/271))
- PR merged to [EIP-4844](https://github.com/ethereum/beacon-APIs/tree/EIP4844) branch last week
- I have addressed some more review comments in the builder specs and have splitted the [original PR](https://github.com/ethereum/builder-specs/pull/58) into two separate PRs, which are now under reivew:
- Capella: [ethereum/builder-specs#60](https://github.com/ethereum/builder-specs/pull/60)
- EIP-4844: [ethereum/builder-specs#61](https://github.com/ethereum/builder-specs/pull/58)
## Piper's AMA session
Last week we had an AMA session with Piper Merriam in the EPF Office Hour call. It was very insightful as Piper was quite generous with sharing his own views and experiences. He gave some really good advices on the fellowship program and becoming a core dev. What he said really resonated with me, and I hope to continue to create positive impact on things I deeply care about, hopefully beyond the EPF program, which is now just less two months to the finishing line!
I've dropped my notes [here](https://hackmd.io/KhdyZSpLTHK--mwc6vzJ4w?view#20230102-EPF-Office-Hours---Piper). I would encourage anyone interested in pursing protocol development to watch this recording here:
https://drive.google.com/file/d/16V09u55059yYWwpGkrgmx-MLuVQWj2ar/view?usp=sharing
And that's all for now, thanks for reading! :wave: