Try   HackMD

Development Update #3 v.2

Once proposal is merged into Cohort 3's projects directory, move link there
Project Proposal - Model DAS


Update

For the Fellowship, I originally intended to continue working on Model Danksharding and implement new networking concepts within the repo. Since then, I've gone through several iterations of project ideas

Within the previous update (Update #3 v.1), I wrote about making a Secure Kademlia DHT and a blob creation, dissemination, and reconstruction script that integrates into the distributed hash table. The idea was to measure important benchmarks for preliminary DAS networking questions via some sort of peer to peer testing suite.

Earlier this week, I stumbled upon Proto's dv5das repo and saw that he was basically creating exactly what I was wanting to implement (aside from making a Secure K-DHT overlay and writing the project in Python). I began questioning whether creating my own DHT from scratch, as opposed to implementing the 'Secure' part of the K-DHT on top of an already implemented discv5 DHT, was the best move.

After searching for Python discv5 implementations and peer to peer network testing suites, I began having the feeling that it might not be possible to write this thing in Python

Over the course of this past week, I've come to two realizations:

  1. Implementing ontop of discv5 will be better for everyone- It'll be faster to get a project out that'll be helpful to the community AND I'll get hands-on experience working with a real deal client implementation DHT!
  2. Nothing is written in Python. It's a dead language wrt core development aside from specifications.
    - There are no functioning Python implementation of devp2p (as far as I'm aware of). RIP Trin.
    - Testground isn't compatible with Python.
    - Ethereum's KZG libraries aren't compatible with Python.

 

Refined Project Summary

The revised goal for the project is to fork Proto's dv5das repository, create an extension of Geth's discv5 DHT to a secure Kademlia DHT, make a blob creation+dissemination+reconstruction suite, and complete major functionalities within the repo that have been left unresolved- all while being able to run on the p2p testing platform, Testground.

Only after having epiphanies 1 and 2 did I realize that forking his project was going to be a great path forward:

Proto's work had already begun laying out the backbone for useful structures and functionalities, and utilizes an existing implementation of a discv5 DHT.
Between never working directly with a client's codebase and not being familiar with Go, I figured this will be the perfect way to slip into the groove.

 

What's Next?

  • Further refine timeline and benchmarks. Get feedback from a mentor if possible.
  • Learn Golang!
  • Get a good layout of Testground to understand how to "plug into" the p2p testing suite.
  • Begin hacking away at Phase 1 of the project!

 

Specs and Resources:

These are the major resources I've been diving into since the last update:


Notes: Wonderland