getnodeaddresses怎样抽样节点? 图 1
getnodeaddresses怎样抽样节点? · 图 1

getnodeaddresses 从本地已知地址中返回经过质量与时效筛选的节点样本。本文说明 count、network、time、services 与地址字段,并解释为何样本不是在线清单或全网普查。

想从节点获得一些可供连接测试的已知地址时,getnodeaddresses 比直接读取内部数据库更稳定。它会根据质量与时间条件返回样本,因此输出数量、分布和本地 addrman 总量之间不必相等。

先定义抽样问题,再设置 count:getnodeaddresses怎样抽样节点

getnodeaddresses从本地已知地址中返回经过质量与时效筛选的样本,count默认1,设为0可请求全部符合条件的结果。

观察项正确用途常见误读
count=1默认返回少量样本不适合推断分布
count=0请求全部符合筛选条件的地址仍不是addrman全部库存
network限定IPv4、IPv6、Onion等不同网络样本不能随意合并
time地址最后活跃时间线索不是本次在线探测
services/address/port连接能力声明与端点仍需独立可达性验证

节点地址样本要连同 count、network、返回时间与本地节点身份记录。脱离抽样参数的地址列表无法说明覆盖范围,也无法复现筛选结果。

getnodeaddresses的五步证据链

network可限定ipv4、ipv6、onion、i2p或cjdns,结果包含time、services、address、port与network。

  1. 固定节点、版本和采样时间。
  2. 按研究问题选择count与network。
  3. 保留time、services、address、port原始值。
  4. 与getaddrmaninfo库存统计对照。
  5. 对可达性问题另做受控连接测试。

研究者应先声明想回答的是连接候选、网络分布还是可达性,再选择 RPC 参数。三种问题需要不同后续验证,不能由同一数组一次完成。

node-address-sampling-lab现场推演

addrman 报告 IPv4 total 很高,而 getnodeaddresses 返回的符合条件记录较少,这不必然是故障。RPC 会过滤低质量或过旧记录。应把“库存总量”和“可返回样本”画成两层,而不是认为有记录丢失。

getnodeaddresses 和 getaddrmaninfo 分别展示筛选样本与库存统计。两者数量不同是调查线索,不应直接认定数据丢失。

Bitcoin Core的四个高频误判:getnodeaddresses怎样抽样节点

  • count=0 就声称获得全部已知地址。
  • 把较新的 time 当成当前在线证明。
  • 不分网络直接计算地址占比。
  • 用单个节点样本外推全球分布。

已知地址、符合质量筛选的地址、当前连接和实际在线节点形成四层集合。每向下一层推进,都需要新的主动或被动证据。

getnodeaddresses怎样抽样节点状态判断树

  • 返回少于count:检查可用筛选结果数量。
  • 指定网络为空:核对本地库存与网络配置。
  • 需要在线清单:改查当前连接或主动探测。
  • 需要全网研究:使用多节点、分层采样与偏差说明。

返回不足、network 为空或 time 较旧都有多种原因。没有本地库存与配置对照时,应把分布结论标成不可外推。

节点地址抽样的数字与版本边界

返回条数可能小于addrman已知总量,因为RPC会过滤低质量或过旧记录;它也不是当前连接清单,不能用来证明目标地址在线。

地址数据可能涉及对等节点隐私和扫描风险。研究任务应限制频率、范围和用途,不把样本直接发布为可攻击目标列表,也不把服务位声明当成实际可用能力。

count 和时间戳按整数处理,地址与端口保持原字符串。去重时还要保留 network 类型,避免不同地址族被错误合并。

陈嘉伟复核台:getnodeaddresses独立演练

分别用默认count、固定count和count=0采样,再按network拆分。让复核者解释三组结果为何不能直接算成同一总体的随机样本,并指出验证在线状态还缺少哪些证据。

第二位研究者根据参数复现三组样本,并说明它们的选择偏差;若报告把 count=0 称为完整全网清单,必须否决。

node-address-sampling-lab验收清单

  • 固定节点、版本和采样时间,并允许复核者重放。
  • 按研究问题选择count与network,不跳过第一个证据关卡。
  • 已针对“count=0 就声称获得全部已知地址”设置阻断条件。
  • 已针对“把较新的 time 当成当前在线证明”保留人工复查入口。
  • 已执行“分别用默认count、固定count和count=0采样,再按network拆分”的独立样本。
  • 已记录 2026 年 10 月 26 日复查日期与一手来源版本。

当前仍需保留的未知项是:返回样本受本地addrman和筛选逻辑影响,安全扫描与网络测量不得把单节点样本外推为全网分布。

getnodeaddresses一级资料与站内延伸

  1. Bitcoin Core getnodeaddresses:支撑“getnodeaddresses怎样抽样节点”中的第 1 组字段定义与边界判断;访问于 2026 年 7 月 26 日。
  2. Bitcoin Core getaddrmaninfo:支撑“getnodeaddresses怎样抽样节点”中的第 2 组字段定义与边界判断;访问于 2026 年 7 月 26 日。

配套阅读可参考 Bitcoin节点网络信息内存池本地视图区分节点身份核对方法。本文用于解释技术接口和证据方法,不构成投资、收益、交易确认或资金安全承诺。