getchaintips如何识别链分叉? 图 1
getchaintips如何识别链分叉? · 图 1

getchaintips 展示的是当前节点知道的所有链尖,而不只是主链。出现多个 tips 很常见:可能是短暂分叉、只收到 header、曾经无效的分支或同步残留。判断异常必须同时看 status、height、branchlen 与 chainwork。

更高的Headers-only Tip出现时

一个 headers-only tip 高度更高,不代表它应该成为主链;节点可能缺少区块体或尚未验证。只按 height 排序选择“最高链”会绕过累计工作和有效性规则。

active 只有当前选中的主链尖

active tip 应与 getbestblockhash 对应。valid-fork 表示分支区块有效但累计工作较少;headers-only 说明节点知道 header 却没有完整区块数据;invalid 表示该分支已被判定无效。状态不同,处置完全不同。

每种Chain Tip状态代表什么

  1. active 只有当前选中的主链尖:getchaintips列出节点已知链尖,active表示当前主链,其他状态可包含valid-fork、headers-only、valid-headers或invalid。
  2. branchlen 从共同祖先开始计算:branchlen表示该链尖相对共同分叉点延伸的区块数,不是与全网一致的确认数。
  3. 监控要避免“多链尖即攻击”:看到多个链尖是节点已知分支视图,不能只凭数量断言遭受攻击;还需核对状态、链功和节点同步。

branchlen 从共同祖先开始计算

branchlen 是该 tip 相对与 active 链分叉点的长度,不是交易确认数,也不是全网支持数量。结合 forkpoint、height 和 chainwork,才能判断分支有多深以及是否接近主链工作量。

从同一时刻快照识别分叉

  1. 记录本节点版本、peer 数和同步状态。
  2. 读取 getchaintips、getbestblockhash 与 getblockchaininfo,保存同一时刻快照。
  3. 按 status 分组,计算每个分支 forkpoint 与 active chainwork 差距。
  4. 与另一运营者节点比对;持续异常才触发人工事件响应。

监控要避免“多链尖即攻击”

短暂的一两个 valid fork 可能来自正常传播竞争。真正需要升级的信号包括深度持续增加、active 频繁切换、无效区块异常增多或与多个独立节点的主链哈希分歧。

多节点主链冲突就暂停结算

节点尚未同步、系统时间错误或多节点主链哈希冲突时暂停依赖该节点的结算判断。

给非主链Tip建立生命周期

监控规则可以给每个非 active tip 建立生命周期:首次发现、最后见到、状态变化、最高 branchlen 和最终消失原因。短暂竞争分支自然消失时归档为传播事件;invalid 持续增加时再关联 debug 日志与 peer 来源。不要自动封禁所有传播该 header 的节点,因为正常节点也可能转发后来被判无效的数据,处置需要更多网络层证据。

getchaintips返回定义

  1. Bitcoin Developer Reference:用于核对Bitcoin Core getchaintips的候选主题的一手字段、产品说明或事件发现。
  2. Bitcoin RPC Index:用于核对Bitcoin Core getchaintips的实现路径、交叉验证或风险边界。

相关站内主题:确认与重组区块读取。资料访问时间为2026-07-22;协议、接口、监管清单与产品界面均可能更新。

风险提示:多个Chain Tip可能是正常传播竞争,也可能反映同步、数据或共识异常。不要仅按高度选择分支或自动封禁Peer;主链哈希在独立节点间冲突时,应暂停依赖该节点的支付和结算判断。