---
# System prepended metadata

title: Helios CL P2P Outline
tags: [networking]

---

---
tags: ethereum, helios
---

# Helios CL P2P Outline

- Tracking Issue: https://github.com/a16z/helios/issues/59
- Feature PR: https://github.com/a16z/helios/pull/130
- Contribution branch: [https://github.com/a16z/helios/tree/%40refcell/p2p](https://github.com/a16z/helios/tree/%40refcell/p2p)
- Technical guidelines:
    - Proposed by Alex: [https://hackmd.io/BihePpvfQ3mSH2MZiVBT1Q](https://hackmd.io/BihePpvfQ3mSH2MZiVBT1Q)

Project requirements

- Implement a connection to the Consensus Layer peer-to-peer network to fetch block data and keep track of the head.
- It should seamlessly switch with the current RPC implementation.
- It should be possible to use the RPC network and the p2p network at the same time.

Implementation Outline

1. Peer Discovery
    - Implement a Discovery service whose main task will be that of finding new peers on the network using the Node Discovery v5 protocol.
    - Discv5 nodes are identified using ENRs but should also provide the peers `Multiaddress`.
    - It should be able to process queries to find new peers on demand.
2. P2P Network
    - Implement a P2P Network service that establishes and maintains connections with CL peers capable of providing the necessary CL data.
    - Manage peer conections (start/end/request new peers) in order to maintain a stable amount of peers that publish the required topics to keep track of the CL head.
3. Integration
    - The above services should be integrated with Helios in a way that allows them to work along the current RPC connection and could be enabled/disabled by a flag during the client setup.
    - Make necessary changes in the project’s `ConsensusClient` architecture to achieve this.

Caveats

- I didn’t include peer scoring/reputation management, but in case of this being a project requirement it could be implemented atop the P2P Network service using gossipsub scoring or any other scoring mechanism as well.