/eth-light-crawler

This tool uses Ethereum's peer-discovery protocol to measure the size of the Ethereum network (testnets included)

Primary LanguageGoMIT LicenseMIT

Ethereum Light Crawler

This tool uses Ethereum's peer-discovery protocol to measure the size of the Ethereum network (testnets included)

How it works?

The light-crawler creates an Ethereum node with a new generated ecdsa Private Key to launch a Discovery5 service.

Once the node and the service are running, the light-crawler will request random ENRs from the network, indexing in an SQL database all the different atributes from the discovered Nodes (we index all the available ENRs in the network, or in other words, all the Ethereum networks).

Requirements

  • (recomended) Go1.17+
  • (must) make
  • (must) local or remote postgreSQL database

How to run it?

Once the repo is cloned, you can compile it and generate a binary running:

$ make build

Once the binary was generated, you can execute it by running:

USAGE:
   ./build/eth-light-crawler [subcommands] [arguments]

COMMANDS:
   discv5   crawl Ethereum's public DHT thought the Discovery 5.1 protocol
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h  show help (default: false)

The current crawler only support the discovery5.1 protocol, so to crawl it your can run the following command:

USAGE:
   ./build/eth-light-crawler discv5 [arguments...]

OPTIONS:
   --log-level value    verbosity of the logs that will be displayed [debug,warn,info,error] (default: "info") [$IPFS_CID_HOARDER_LOGLEVEL]
   --db-endpoint value  login endpoint to the database (default: "postgres://test:password@localhost:5432/eth_light_crawler") [$IPFS_CID_HOARDER_DB_ENDPOINT]
   --port value         port number that we want to use/advertise in the Ethereum network (default: 9001)
   --reset-db           reset the content of the db tables (default: false)
   --help, -h           show help (default: false)

NOTE: the light-crawler will require to have a postgreSQL database created before running it, it will only create the required tables to run.

Maintainers

Miga Labs / @cortze

Contributions

This tool is open for any kind of feedback and contribution, so please feel free to approach us!