Greetings,
We’ve been prototyping a P2P scanner for Substrate networks. Our little experiment involved scanning the Kusama network at the P2P-level and creating a geospatial visualization of the discovered nodes with enriched information.
Take a peek at the overall network of discovered nodes (~2k) in the image below.
And a screenshot showing some node information.
Curious about the data? Here’s a snippet of the information for each peer in JSON format:
{
"_id": "12D3KooWSueCPH3puP2PcvqPJdNaDNF3jMZjtJtDiSy35pWrbt5h",
"type": "Ed25519",
"addresses": [
{
"family": 4,
"host": "51.77.66.187",
"transport": "tcp",
"port": 30333
},
{
"family": 4,
"host": "51.77.66.187",
"transport": "tcp",
"port": 30334
},
{
"family": 6,
"host": "a29:a25:3520:6b75:7361:6d61:2d62:6f6f",
"transport": "tcp",
"port": 30334
}
],
"agent": {
"version": "Parity Polkadot/v1.3.0-7c9fd83805c (kusama-bootnode-0)",
"protocol": "/substrate/1.0"
},
"protocols": [
"/b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe/beefy/2",
"/b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe/beefy/justifications/1",
"/b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe/block-announces/1",
"/b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe/grandpa/1",
...more protocols
],
"metadata": {
"AgentVersion": {
"$binary": {
"base64": "UGFyaXR5IFBvbGthZG90L3YxLjMuMC03YzlmZDgzODA1YyAoa3VzYW1hLWJvb3Rub2RlLTAp",
"subType": "00"
}
},
"ProtocolVersion": {
"$binary": {
"base64": "L3N1YnN0cmF0ZS8xLjA=",
"subType": "00"
}
}
},
"tags": {
"bootstrap": {
"value": 50,
"expiry": 1699622067589
}
},
"ipInfos": [
{
"ip": "51.77.66.187",
"hostname": "ns3136711.ip-51-77-66.eu",
"city": "Frankfurt am Main",
"region": "Hesse",
"country": "DE",
"country_name": "Germany",
"country_currency": {
"code": "EUR",
"symbol": "€"
},
"continent": {
"code": "EU",
"name": "Europe"
},
"isEU": true,
"loc": "50.1155,8.6842",
"org": "AS16276 OVH SAS",
"postal": "60306",
"timezone": "Europe/Berlin"
}
]
}
Cheers!