georelays
收藏github2025-09-01 更新2025-09-02 收录
下载链接:
https://github.com/permissionlesstech/georelays
下载链接
链接失效反馈官方服务:
资源简介:
一个包含Nostr中继器及其估计位置的数据集,通过发现功能正常的中继器、过滤支持BitChat的中继器(kind 20000)以及地理定位IPv4地址来生成,最终输出包含中继器URL、纬度和经度的CSV文件
A dataset consisting of Nostr relays and their estimated geographic locations, generated via three key procedures: discovering functional relays, filtering relays that support BitChat (kind 20000), and geolocating their IPv4 addresses. The final output is a CSV file containing relay URLs, latitudes, and longitudes.
创建时间:
2025-08-24
原始信息汇总
GeoRelays 数据集概述
数据集简介
GeoRelays 是一个用于发现 Nostr 中继并估算其地理位置的小型工具包。该数据集还可选择在定位前筛选支持 BitChat 功能的中继(kind 20000)。
数据集生成流程
数据集通过以下三个脚本组成的简单流水线生成:
1. 发现功能正常的中继(Python)
- 脚本:
nostr_relay_discovery.py - 功能:
- 从种子中继 URL 开始,通过 WebSocket(ws/wss)连接。
- 广度优先搜索关注列表(kind 3)和中继列表(kind 10002),从事件标签(r/p 标签)中提取中继 URL。
- 通过发出 REQ 并评估响应(EVENT/EOSE/NOTICE)来测试每个候选中继的基本 Nostr 协议响应性。
- 以并发批次处理中继,并定期将进度保存至
relay_discovery_results.json。
- 输出:
relay_discovery_results.json,包含:functioning_relays(ws/wss 中继 URL 数组)- 发现设置、进度和统计信息
2. 筛选 BitChat 中继(kind 20000)
- 脚本:
filter_bitchat_relays.sh - 功能:
- 从标准输入读取中继 URL,并并行检查每个中继是否:
- 能够返回 kind 20000 事件(读取)
- 接受发布 kind 20000 事件(写入)
- 使用
nakCLI 进行查询(nak req -k 20000)和发布(nak event -k 20000 ...)。
- 从标准输入读取中继 URL,并并行检查每个中继是否:
- 输出:将通过两项检查的输入中继 URL 子集写入标准输出,可重定向至文件(如
bitchat_relays.txt)。
3. 中继地理定位(Bash)
- 脚本:
relays_geo_lookup.sh <output.csv> - 功能:
- 下载 DB-IP 城市 IPv4 范围(
dbip-city-ipv4-num.csv.gz),将其加载到内存中,并使用二分查找将 IPv4 映射到经纬度。 - 从标准输入读取主机名,通过
dig解析为 A 记录,并查找第一个具有可用坐标的 IPv4。
- 下载 DB-IP 城市 IPv4 范围(
- 输入:仅主机名(如
relay.example.com),非完整 ws/wss URL。 - 输出:将带有标题
Relay URL,Latitude,Longitude的 CSV 写入指定文件。
注意:地理定位步骤仅支持 IPv4(此处使用的 DB-IP 文件为 IPv4)。仅 IPv6 的中继将被跳过。
自动化处理
该仓库包含一个 GitHub Actions 工作流(位于 .github/workflows/),自动化端到端流程:
- 检出仓库
- 设置 Python 和系统依赖项
- 运行
nostr_relay_discovery.py生成relay_discovery_results.json - 使用
jq提取功能正常的中继 - 运行
filter_bitchat_relays.sh - 运行
relays_geo_lookup.sh生成nostr_relays.csv - 将更新的工件提交回仓库
数据来源
nostr_relays.csv 和 relay_discovery_results.json 使用由 DB-IP 整理的数据库,可从 https://www.db-ip.com 获取。
注意事项
- 发现步骤使用超时和并发批次;可根据环境调整
--batch-size、--timeout和--max-depth。 - BitChat 筛选器发布测试 kind 20000 事件。确保
nak配置为可发布(例如通过其配置或环境变量,参考nak文档)。 - 地理定位是基于 DB-IP 的估计,仅适用于 IPv4。准确性各异,可能反映 ISP/托管 POP 而非精确服务器位置。
relays_geo_lookup.sh在 DB-IP 提供坐标的第一个 IPv4 处停止。某些主机名解析为多个 IP。
搜集汇总
数据集介绍

构建方式
在去中心化网络协议研究领域,GeoRelays数据集通过多阶段流水线构建。初始阶段采用Python脚本进行中继发现,基于种子中继通过WebSocket连接实施广度优先搜索,提取Nostr协议中的kind 3和10002事件标签,并通过并发批次测试中继响应能力生成基础数据集。随后通过Shell脚本过滤支持BitChat功能的中继节点,使用nak工具验证kind 20000事件的读写权限。最终通过IP地理定位脚本解析主机名IPv4地址,结合DB-IP城市数据库进行坐标映射,形成包含经纬度信息的结构化数据。
特点
该数据集具备多维度技术特征,其核心价值在于融合网络拓扑发现与地理空间映射。数据集涵盖Nostr协议中继节点的功能性验证数据,包括WebSocket连接状态、协议响应时间及BitChat专项能力标识。地理信息维度采用DB-IP城市级精度数据库,提供IPv4地址到经纬度的映射关系,支持空间分析应用。数据采集过程注重实时性,通过GitHub Actions实现自动化流水线,确保数据持续更新。特别值得注意的是数据集采用轻量化设计,原始数据以JSON和CSV格式存储,便于学术研究中的快速解析与可视化处理。
使用方法
研究人员可通过GitHub仓库的自动化工作流直接获取最新数据集,或使用提供的脚本工具定制化采集。基础使用场景包括加载nostr_relays.csv文件进行空间分布分析,通过Relay URL与经纬度字段构建网络拓扑图。进阶应用可结合relay_discovery_results.json中的协议元数据,研究中继节点的性能特征与网络可靠性。针对BitChat研究方向,可使用bitchat_relays.txt筛选特定功能节点进行通信机制分析。需要注意的是地理定位数据仅适用于IPv4协议,且坐标精度受限于ISP基础设施数据库,建议在研究中辅以人工验证确保结论准确性。
背景与挑战
背景概述
GeoRelays数据集诞生于去中心化社交网络协议Nostr快速发展的背景下,由开源社区开发于2023年,旨在解决分布式网络中继服务器地理定位的核心问题。该数据集通过系统化采集全球Nostr中继节点的网络拓扑与地理位置信息,为研究网络延迟优化、区域化内容分发及网络拓扑分析提供了重要数据支撑。其创新性地结合了协议层发现与地理空间映射技术,显著推进了去中心化网络基础设施的可观测性研究。
当前挑战
数据集构建面临多重技术挑战:IPv4单栈设计导致IPv6中继节点遗漏,地理定位精度受限于第三方数据库的ISP层级数据;动态网络环境中中继节点存活状态验证存在时效性局限,并发探测时需平衡网络负载与超时控制。领域层面需解决分布式网络中继服务的拓扑发现复杂性,以及BitChat特定协议事件(kind 20000)的读写验证可靠性,这些挑战直接影响网络测量研究的可重复性与地理空间分析的准确性。
常用场景
经典使用场景
在分布式网络研究领域,GeoRelays数据集为Nostr中继节点的拓扑分析与地理分布研究提供了关键支撑。研究者通过该数据集能够系统性地追踪中继节点的网络连接关系,绘制出中继网络的空间分布图谱,进而分析网络延迟、路由优化以及节点间的通信效率。
实际应用
实际应用中,GeoRelays数据集被广泛用于构建低延迟通信路径、优化去中心化社交网络的消息转发策略。开发者可依据节点地理位置信息实现智能路由选择,提升BitChat等应用的实时通信质量,同时为网络监管与合规性分析提供地理空间数据参考。
衍生相关工作
基于GeoRelays数据集,研究者开展了多项经典工作,包括中继网络拓扑可视化工具的开发、地理负载均衡算法的优化,以及结合IP地理位置数据库的网络韧性评估框架。这些工作显著推进了去中心化网络在可观测性与性能优化方面的研究深度。
以上内容由遇见数据集搜集并总结生成



