# Ethereum Protocol Fellowship Cohort 5 Final Update: PeerDAS Metrics Specifications
## Abstract
For EPF Cohort 5, I chose to work on PeerDAS. I already had some background and experience with Data Availability, so it felt like a good match. When I joined the Fellowship, PeerDAS was in the testing phase, and I wanted to find a way to contribute. I soon found there was a need for unified metrics and dashboards.
Currently, all clients build the same Ethereum Protocol, but there’s no standard for metrics across them. Without this, it’s hard to check if clients reach the same values at critical checkpoints for Execution or Consensus Layer specs. Testing usually relies on logs, which can be a lot to manage. Dashboards make it much easier to spot bugs quickly and track issues over a period of time. With standard metrics, all clients can be displayed on the same dashboard, applying filters for specific client details.

### Who Uses the Dashboard?
- **Core Developers**: Track runtime, find bugs, investigate issues, and refactor code based on metrics.
- **DevOps Engineers**: Monitor runtime, notify when issues occur, ensure all clients report the same metrics, and easily identify clients with issues.
- **Research Team**: Simulate scenarios, create benchmarks, and ensure everything runs as expected.
### Project Components
- [Project Proposal EPF Cohort 5]()
- [PeerDAS metrics specifications](https://github.com/ethereum/beacon-metrics/pull/13)
- [DevOps Grafana dashboard](https://github.com/KatyaRyazantseva/PeerDAS-metrics/blob/main/dashboards/devops-peerdas-dashboard.json)
- [Kurtosis Grafana dashboard](https://github.com/ethpandaops/ethereum-package/blob/main/static_files/grafana-config/dashboards/peerdas-dashboard.json)
## Project Work During the Fellowship
During the fellowship, I focused on PeerDAS metrics:
- Identified and examined key metrics
- Monitored results
- Raised discussions in PeerDAS calls, Discord, and on GitHub
- Implemented metrics in Lighthouse, Grandine, Teku, and Prysm
- Built the PeerDAS dashboard for Kurtosis
- Created a consolidated PeerDAS dashboard for the DevOps Grafana observability server and tested it on `peerdas-devnet-3`
### Key Areas of PeerDAS Metrics
- gossip verification
- reconstruction
- computation
- inclusion proof
- custody
Additional:
- gossipsub metrics
- libp2p metrics
### Client Metrics Implementations
- Lighthouse ([PR #6248](https://github.com/sigp/lighthouse/pull/6248), [PR #6430](https://github.com/sigp/lighthouse/pull/6430), [PR #6431](https://github.com/sigp/lighthouse/pull/6431), [PR #6537](https://github.com/sigp/lighthouse/pull/6537))
- Grandine ([PR #1](https://github.com/hangleang/grandine/pull/1), [PR #2](https://github.com/hangleang/grandine/pull/2))
- Teku ([PR #139](https://github.com/Nashatyrev/teku/pull/139), [PR #160](https://github.com/Nashatyrev/teku/pull/160), [PR #1]())
- Prysm ([PR #14574](https://github.com/prysmaticlabs/prysm/pull/14574))
### Additional PRs
- Ethereum-package - dashboards ([PR #736](https://github.com/ethpandaops/ethereum-package/pull/736), [PR #790](https://github.com/ethpandaops/ethereum-package/pull/790))
- Beacon metrics ([PR #13](https://github.com/ethereum/beacon-metrics/pull/13), [PR #14](https://github.com/ethereum/beacon-metrics/pull/14))
- Teku ([PR #8531](https://github.com/Consensys/teku/pull/8531), [PR #8610](https://github.com/Consensys/teku/pull/8610))
## Current Status
The clients have reached an agreement on the PeerDAS metrics, while gossipsub and libp2p metrics are still under review. Since these metrics are already on mainnet and integrated into user dashboards, updating them requires careful consideration.
## Clients' Metrics Status Overview
| Metric | Lighthouse | Teku | Grandine | Prysm | Lodestar | Nimbus |
| ------ |------------|------|----------|-------|----------|--------|
| Raised issue | [#6018](https://github.com/sigp/lighthouse/issues/6018) | [#65](https://github.com/Nashatyrev/teku/issues/65) | | [#14129](https://github.com/prysmaticlabs/prysm/pull/14129) | | |
| `beacon_data_column_sidecar_processing_requests_total` | ✅ | ✅ | ✅ | □ | □ | □ |
| `beacon_data_column_sidecar_processing_successes_total` | ✅ | ✅ | ✅ | □ | □ | □ |
| `beacon_data_column_sidecar_gossip_verification_seconds` | ✅ | ✅ | ✅ | 📝 | □ | □ |
| `beacon_data_availability_reconstructed_columns_total` | 📝 | 📝 | □ | □ | □ | □ |
| `beacon_data_availability_reconstruction_time_seconds` | 📝 | 📝 | ✅ | □ | □ | □ |
| `beacon_data_column_sidecar_computation_seconds` | 📝 | □ | ✅ | □ | □ | □ |
| `beacon_data_column_sidecar_inclusion_proof_verification_seconds` | 📝 | □ | ✅ | □ | □ | □ |
| `beacon_kzg_verification_data_column_single_seconds` | 📝 | □ | □ | □ | □ | □ |
| `beacon_kzg_verification_data_column_batch_seconds` | 📝 | □ | ✅ | □ | □ | □ |
| `beacon_custody_columns_count_total` | □ | □ | □ | □ | □ | □ |
✅ - implemented
📝 - in progress, requiring adjustments, under review
□ - not implemented
## Project Roadmap
I plan to continue refining the dashboard until it’s fully built and ready for DevOps, core developers, and researchers. This project requires not only technical work but also coordination among different teams. There is room for improvement in histogram buckets and possibly new metrics as the project evolves. Once the PeerDAS dashboard is complete, we may consider expanding metrics specs to Consensus and Execution Layers, potentially making them a standard in the Ethereum Protocol.
## Mentorship
This project wouldn’t have been possible without my mentors. Parithosh and Barnabas from the DevOps team, along with Dmitri Shmatko from Teku and Jimmy Chen from Lighthouse, provided extremely valuable support. I also received positive feedback from the MigaLabs research team and connected with many smart and passionate people in the Protocol, all of them were helpful and supportive.
## EPF Experience
This fellowship was challenging and rewarding. I had to apply both my technical and communication skills to dive into Ethereum’s complex tech. As a newcomer to technical protocol implementation, I learned a lot from scratch:
- Running testnets and beacon specs tests,
- Working with Kurtosis and Starlark,
- Building Grafana dashboards,
- Using Git for open-source projects, managing PRs and forks,
- Running Docker, learning about p2p and gossip protocols, and understanding Consensus Clients deeply,
- Building, configuring, and testing clients like Lighthouse, Teku, Grandine, and Prysm, from the metrics side
- Updating the Ethereum-package repo.
Working on the project required significant effort. Here are some challenges I came across:
- Learning new tools like Kurtosis, Prometheus, Grafana from scratch.
- Going through the Consensus clients' codebase, as I was new their programming languages and core development in general.
- The Teku histogram implementation required significant effort, as it uses Besu's metrics-core library, which has limitations. With support from my mentor Dmitri from the Teku team, I explored various solutions. There is still room for improvement, and further work with the Besu team may improve this.
- Building the Prysm client locally was challenging on my older machine.
- Long PR review times, as core developers have busy schedules, required patience and planning.
- Unexpected vacations of mentors and team members led to adjustments in my plans.
- Coordinating between clients and reaching consensus required considerable time and effort.
Participating in this fellowship was a dream come true. I’ve been passionate about Ethereum since 2018, and this was my first deep dive into the Protocol itself. These months were full of curiosity and challenge, with moments of struggle but also a lot of growth. I got to meet many brilliant people in the Protocol community and from this Fellowship. It was an unforgettable experience.
## Program Feedback
The program was well-structured, with a GitHub repo for reports and proposals, weekly stand-up calls, and Office Hours. Weekly stand-ups helped keep us focused and disciplined, while Office Hours provided a chance to connect with protocol builders, dive deeper into the protocol and ask questions. The program length was perfect, allowing enough time to explore, test different strategies, and improve the project. The weekly reports were a bit time-consuming and required effort, but I found my own ways to simplify the process. In the long run, the reports helped maintain structure and focus.
I am deeply grateful to Josh and Mario for their support and to the Ethereum Foundation for this amazing opportunity to work on the Protocol.
## Useful Links
Ethereum Protocol
- [EPF Wiki](https://epf.wiki/)
- [Eth2 book: Upgrading Ethereum](https://eth2book.info/latest/book.pdf)
- [Ethereum Roadmap](https://ethroadmap.com/)
- [EPF Cohort 5](https://github.com/eth-protocol-fellows/cohort-five/tree/main)
Consensus layer
- [Consensus specs](https://github.com/ethereum/consensus-specs)
- [Consensus metrics specs](https://github.com/ethereum/beacon-metrics/blob/master/metrics.md)
PeerDAS
- [EIP-7594: PeerDAS - Peer Data Availability Sampling](https://eips.ethereum.org/EIPS/eip-7594)
- [Consensus specs: EIP-7594 PeerDAS](https://github.com/ethereum/consensus-specs/tree/master/specs/_features/eip7594)
- [PeerDAS by Dapplion, Youtube](https://www.youtube.com/watch?v=fCIPNxGXmmE&t=43s)
- [Danny Ryan: PeerDAS – a simpler DAS approach using battle-tested p2p components](https://ethresear.ch/t/peerdas-a-simpler-das-approach-using-battle-tested-p2p-components/16541)
- [Francesco: From 4844 to Danksharding: a path to scaling Ethereum DA](https://ethresear.ch/t/from-4844-to-danksharding-a-path-to-scaling-ethereum-da/18046)
- [Vitalik Buterin: An explanation of the sharding + DAS proposal](https://hackmd.io/@vbuterin/sharding_proposal)
Kurtosis
- [Kurtosis Ethereum Package](https://github.com/ethpandaops/ethereum-package)
- [Kurtosis: A Deep Dive to Local Devnets](https://ethpandaops.io/posts/kurtosis-deep-dive/)
- [Kurtosis Docs](https://docs.kurtosis.com/)
Grafana
- [Grafana webinars and videos](https://grafana.com/videos/?plcmt=learn-nav)
- [Grafana Docs: Prometheus](https://grafana.com/docs/grafana/latest/datasources/prometheus/)
- [Prometheus types of metrics](https://prometheus.io/docs/tutorials/understanding_metric_types/)
- [Histograms and summaries](https://prometheus.io/docs/practices/histograms/)