fdd385cef1
This is the beginning of the series of changes to make it possible to run multiple instances of erigon inside a single process (as devnet tool does), with the logging from these processes going to respective log files correctly. This is the first part where the initial infrastructure is being established --------- Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro-2.local> |
||
---|---|---|
.. | ||
database | ||
observer | ||
reports | ||
utils | ||
main.go | ||
README.md |
Observer - P2P network crawler
Observer crawls the Ethereum network and collects information about the nodes.
Build
make observer
Run
observer --datadir ... --nat extip:<IP> --port <PORT>
Where IP
is your public IP, and PORT
has to be open for incoming UDP traffic.
See observer --help
for available options.
Report
To get the report about the currently known network state run:
observer report --datadir ...
Description
Observer uses discv4 protocol to discover new nodes. Starting from a list of preconfigured "bootnodes" it uses FindNode to obtain their "neighbor" nodes, and then recursively crawls neighbors of neighbors and so on. Each found node is re-crawled again a few times. If the node fails to be pinged after maximum attempts, it is considered "dead", but still re-crawled less often.
A separate "diplomacy" process is doing "handshakes" to obtain information about the discovered nodes. It tries to get RLPx Hello and Eth Status from each node. The handshake repeats a few times according to the configured delays.