Foreshock
EN 订阅
文档

概念

覆盖健康度

为什么每个响应都告诉你我们看不看得见,以及为什么「没有匹配」和「我们现在看不见」在你的代码里绝不能塌缩成同一个值。

更新于
2026-08-24

一个空结果集有两种截然不同的成因:没事,或者我们现在看不见。分不清这两者的监控产品比没有监控更糟,因为它把一个盲区转换成了一个让人安心的答复。

所以覆盖健康度不是这套 API 的可选特性,它出现在每一条路径上。

它出现在三个地方

位置形式
GET /v1/exposure每个响应体里的 coverage_health 数组,与 matches 并列。
GET /v1/coverage同一个数组,可单独查询,按你的账户切分作用域。
POST /v1/screen/address、POST /v1/decide/depositForeshock-Coverage-Health: ok | degraded 响应头。

响应头是指针,不是报告。为 degraded 时,转 GET /v1/coverage 取逐权威的明细。之所以用响应头而不是响应体字段,是为了让覆盖健康度不缺席于任何一个响应,同时不改动响应形状。

一条条目说明什么

每个 CoverageHealthEntry 描述你账户作用域内的一个执法权威。

字段是什么
authority_id该权威在你的覆盖中呈现出的不透明、稳定标识符。
observable该权威当前对 Foreshock 是否可观测。
verified_at该权威的注册条目上次与链上核对的时间。
collector_lag_s链上状态与我们对该权威的视图之间当前的滞后秒数。

observable: false、verified_at 超出窗口、collector_lag_s 异常——这三者都读作盲区。没有一个是「全清」。

作用域按客户切分

已认证的调用方看到的是与其已登记资产和地址相关的那些权威,不是 Foreshock 注册表的全集。

某条条目不存在,意味着该权威不在你账户的作用域内。它不是关于我们注册表整体的陈述,也不得被这样解读。

权威、发行方与链的实时集合作为数据返回给已认证客户。它不在公开 schema 里枚举,也不向未认证方发布——这正是契约里 chain、asset、authority_id 是普通字符串而不是封闭枚举的原因。

可观测性不是我们提供的能力

一次执法动作在执行前是否可观测,是发行方如何治理自己的属性。这不是 Foreshock 加上去的,发行方改变执行方式时它可以毫无预告地消失。

这是诚实的说法,也是可操作的说法:请按「你依赖的某个权威明天就不再可观测」来设计你的回退。coverage.health_changed webhook 就是用来在这件事发生时通知你的。