ethereum / ethereum/ddht

Network Heuristics

Open
#155 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
19
Forks
15
PR merge metrics
No merged PRs in 30d

Description

## What was wrong?

One nice thing to have is an estimate of total network size.

## How can it be fixed?

When we pick a random `NodeID` and do a recursive `FINDNODES` lookup on that part of the network, we can extrapolate the overall size of the network by measuring the distance between the `target` NodeID and the "closest" one we find.

By doing this a few times, we can estimate the average density of nodes, which lets us extrapolate the total number of nodes in the network.

This information could be used to determine how "full" we should expect our routing table to be once it has a mature view of the network. We could potentially more aggressively try to populate certain buckets in the table that we expect should be full by doing more targeted random lookups in those regions of the network.

We could also use this information in the `$ ddht crawl` command since it would allow us to compare accuracy of the estimated size vs the measured size.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing the recursive FINDNODES lookup and the routing-table code, then inspect the $ ddht crawl command to understand how network size is currently measured. The issue's proposed random NodeID sampling and density extrapolation need a concrete design, integration point, and accuracy criteria before implementation can begin.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
distributed-systems, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.