{"id":16078173,"url":"https://github.com/vrypan/fc-nmap","last_synced_at":"2025-06-15T00:03:07.547Z","repository":{"id":257813854,"uuid":"868351325","full_name":"vrypan/fc-nmap","owner":"vrypan","description":"fc-nmap is a tool that scans the Farcaster network and collects hub information.","archived":false,"fork":false,"pushed_at":"2025-04-04T22:13:45.000Z","size":6174,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-03T18:15:03.663Z","etag":null,"topics":["farcaster","farcaster-protocol"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vrypan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-06T06:37:46.000Z","updated_at":"2025-04-04T22:10:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"67cbea32-c525-4343-a55b-748a1b876f78","html_url":"https://github.com/vrypan/fc-nmap","commit_stats":null,"previous_names":["vrypan/fc-nmap"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vrypan/fc-nmap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrypan%2Ffc-nmap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrypan%2Ffc-nmap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrypan%2Ffc-nmap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrypan%2Ffc-nmap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vrypan","download_url":"https://codeload.github.com/vrypan/fc-nmap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrypan%2Ffc-nmap/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259901297,"owners_count":22929220,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["farcaster","farcaster-protocol"],"created_at":"2024-10-09T10:08:28.020Z","updated_at":"2025-06-15T00:03:07.536Z","avatar_url":"https://github.com/vrypan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fc-nmap\n\n**This software is still in alpha and under heavy development.** Things will change and break.\n\n[![PyPI - Version](https://img.shields.io/pypi/v/fc-nmap.svg)](https://pypi.org/project/fc-nmap)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/fc-nmap.svg)](https://pypi.org/project/fc-nmap)\n\n-----\n\n![world map of hubs](map.png)\n\n## Quickstart\n\n\n```console\npip install fc-nmap\n\nfc-nmap --help\n\nUsage: fc-nmap [OPTIONS] COMMAND [ARGS]...\n\n  Farcaster Network Mapper\n\nOptions:\n  --version   Show the version and exit.\n  -h, --help  Show this message and exit.\n\nCommands:\n  exportdb  Create a tab separated dump of the database\n  initdb    Initialize the database\n  scan      Scan will scan the network\n  updatedb  Collect addtional information about each hub\n  map       Create a mpa of the hubs in db\n```\n\n## Behind the scenes\n\n`fc-nmap initdb` creates a local sqlite database where data is stored.\n\n`fc-nmap scan` will start by asking a hub to provide its contact list (gRPC call `GetCurrentPeers`). Using this list, it will pick `--hops`\nhubs at random, and request their contact list too. The lists are combined and stored in the database.\n\n`fc-nmap updatedb --hub-info` looks into the database and picks hubs that were recently active.\n(Recency is defined by comparing `ContactInfoContentBody.timestamp` collected when requesting the contacts lists and the current timestamp.)\nThe command will try to connect to each one of the hubs, and collect additional info using `GetInfo`, and store the results in the local\ndatabase.\n\n`fc-nmap updatedb --hub-location` works similar to `--hub-info`, but uses ip2location.io to get location information about each hub IP.\nAgain, information collected is stored in the local database. The script will not query ip2location for IPs that were looked up in the last\n100 days. This helps staying within ip2location free plan limits.\n\n`fc-nmap export --report=all` will export all \"active\" hubs. Use fc-nmap export --help` to get all the available exports/reports.\nOr connect directly to the local database (currently named hubs.db and stored in the directory where you called the previous commands)\nand run your own queries.\n\n## License\n\n`fc-nmap` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvrypan%2Ffc-nmap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvrypan%2Ffc-nmap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvrypan%2Ffc-nmap/lists"}