地址筛查¶
地址筛查由独立 Public API 提供。请使用目标环境提供的筛查服务基础 URL,不要假定这些路径与交易 API 共用主机。公开查询无需交易 API Key。各版本是否可用取决于部署。
此处“公开查询”指面向外部集成的查询契约,不代表所有部署均允许匿名公网访问。请使用服务方提供的入口并遵守其访问与频率限制。查询结果不能代替交易准入,也不提供内部服务调用凭据。
接口与版本¶
当前状态查询均使用 POST 和 JSON 请求体。不同版本的判断语义与响应结构不同,接入时应明确选择版本。
| 版本 | 单条 / 批量路径 | 响应契约 |
|---|---|---|
| v1 | /api/v1/address-screenings、/api/v1/address-screenings/batch | 官方名单 MATCH / NO_MATCH;批量返回对应的 decisions、is_sanctions_matches 数组 |
| v2 | /api/v2/address-screenings、/api/v2/address-screenings/batch | 官方当前结果与历史摘要;单条为 result,批量为 results |
| v3 | /api/v3/address-screenings、/api/v3/address-screenings/batch | 本地快照 MATCH / NO_MATCH,另带覆盖/证据字段;批量使用对应数组 |
| v4 | /api/v4/address-screenings、/api/v4/address-screenings/batch | 官方/人工/一跳判断;单条字段在顶层,批量为 results |
| v5 | /api/v5/address-screenings、/api/v5/address-screenings/batch | 增加各来源状态与否定证据完整性;批量为 results |
| v6 | /api/v6/address-screenings、/api/v6/address-screenings/batch | 增加确认命中及详情可用性语义;批量为 results |
单条请求¶
批量请求¶
{
"chain_family": "evm",
"addresses": [
"0x1111111111111111111111111111111111111111",
"0x2222222222222222222222222222222222222222"
]
}
chain_family 必须为 evm。每个地址须是 20 字节 0x EVM 地址,并会规范化为小写。批量要求规范化后 1–50 个不重复地址,结果保持输入顺序。拒绝额外字段和查询参数。单条/历史请求体上限 2 KiB,批量上限 16 KiB。 解读当前结果¶
v1 与 v3¶
v1 返回 schema_version、request_id、decision、is_sanctions_match、provider_id、policy_id、capability、dataset_revision、checked_at、authority_checked_at。批量增加 decision_count,并用对应数组替换单条判断和布尔值。
v3 除判断和布尔值外,还返回 coverage_status(COMPLETE / PARTIAL)、coverage_incomplete、evidence_mode(LOCAL_SNAPSHOT_MATCH / LOCAL_SNAPSHOT_NO_MATCH)、可为 null 的 reason_code、policy_revision、serving_policy_id、serving_policy_revision、dataset_published_at。覆盖不完整时 reason_code="SOURCE_COVERAGE_INCOMPLETE"。批量证据使用 evidence_modes 数组,reason_code 仍是外层单一字段。
NO_MATCH 仅表示在所查询的数据集中未命中,不能解释为钱包安全的整体保证。覆盖不完整时,本地未命中不等于完整的否定证据。
v4–v6¶
decision | 含义 |
|---|---|
BLOCK | 存在阻断的肯定证据 |
NO_BLOCK | 所选策略具备足够证据得出不阻断结果 |
STALE | 证据已过时,不得视为 NO_BLOCK |
UNKNOWN | 证据不足以得出判断,不得视为 NO_BLOCK |
v4 包含 address、可为 null 的 match_type、official_dataset_revision、official_coverage_mode(COMPLETE / POSITIVE_ONLY)、可为 null 的 composite_generation、composite_revision、composite_policy_digest,以及 checked_at。
v5/v6 还返回 official_state、composite_state(MATCH、NO_MATCH、STALE、UNKNOWN、UNAVAILABLE),可为 null 的 official_membership_digest、composite_membership_digest、combined_membership_revision,以及 negative_evidence_complete。官方身份信息不可用时,相应字段可以为 null。可用来源的肯定证据仍可确定 BLOCK;不能将缺失来源证据转换为明确未命中。
match_type | 含义 |
|---|---|
DIRECT_OFFICIAL | 直接命中官方名单 |
DIRECT_MANUAL | 直接命中人工策略 |
ASSOCIATED_ONE_HOP | 命中配置的一跳关联策略 |
COMPOSITE_CONFIRMED | 仅 v6:已确认集合命中,但归因详情不可用或不一致 |
null | 没有肯定命中分类 |
v6 增加 details_status:AVAILABLE、UNAVAILABLE、INCONSISTENT、NOT_REQUESTED。对 COMPOSITE_CONFIRMED,详情不可用或不一致时仍应保留 BLOCK 判断。v4–v6 批量外层包含 schema_version、request_id、decision_count 和有序 results,每项使用对应版本的单条结果字段。
v2 历史摘要¶
单条查询返回 result 对象,批量返回 results。每项摘要包含:
| 字段 | 说明 |
|---|---|
address、decision、currently_listed | 当前官方名单结果 |
ever_listed | 历史是否出现;null 表示未知,不是 false |
advisory | 已知仅历史命中时为 HISTORICAL_OFFICIAL_MATCH,否则为 null |
current_origins | 当前来源记录 |
first_listed_at、last_delisted_at、period_count、source_count | 可用的历史摘要 |
外层包含 coverage_status、coverage_incomplete、history_coverage、policy_id、policy_revision、dataset_revision、checked_at、dataset_published_at、valid_until。单条响应还有 history_status(SUMMARY_ONLY / UNAVAILABLE)。history_coverage 包含 status(COMPLETE、PARTIAL、CURRENT_ONLY)、complete、available_from、basis。没有历史记录不代表地址从未被列入名单。
历史分页¶
身份验证: 无。
请求体¶
{
"chain_family": "evm",
"address": "0x1111111111111111111111111111111111111111",
"page_size": 25,
"cursor": null
}
page_size 默认 25,范围 1–50。后续请求传回响应中的不透明 next_cursor,不要自行构造。响应包含 result、history_coverage、history_status="AVAILABLE"、periods、has_more、next_cursor、policy_id、policy_revision、dataset_revision、published_at、queried_at、schema_version、request_id、coverage_status、coverage_incomplete。 每个历史区间包含 period_id、source_id、authority、jurisdiction、measure_type、可选 subject_name / legal_reference、官方与系统有效时间区间、起止事件标识/类型/原因、被替代事件引用和 policy_applications。官方生效时间与系统观测时间是不同事实。has_more 为 false 时 next_cursor 为 null。无效或过时游标可能被拒绝,应从第一页重新查询,不要猜测游标。
来源与历史记录字段¶
每条 current_origins 包含 source_id、authority、jurisdiction、可为空的 subject_name、legal_reference、measure_type、current_state(ACTIVE / REMOVAL_PENDING),以及可为空的 official_effective_from / official_effective_to。
每条 periods 中的字段 | 含义 |
|---|---|
period_id、source_id、authority、jurisdiction、measure_type | 历史区间标识与来源归属 |
subject_name、legal_reference | 可选来源详情 |
official_valid_from、official_valid_to | 官方有效区间,两端均可为空 |
system_valid_from、system_valid_to | 系统观察区间,结束时间为空表示尚未关闭 |
opening_event_id、opening_event_type、opening_reason_code | 打开该区间的事件 |
closing_event_id、closing_event_type、closing_reason_code | 可为空的关闭事件详情 |
opening_supersedes_event_id、closing_supersedes_event_id | 可为空的已修正/替代事件引用 |
policy_applications | 1–100 条策略适用记录 |
每条策略记录包含 policy_id、policy_revision、participation_mode(required / optional)、applicable_from 和可为空的 applicable_to。history_coverage.basis 为 OFFICIAL_ARCHIVE、CURATED_BACKFILL、FIRST_VERIFIED_SNAPSHOT 或 MIXED。日期时间序列化为 ISO 格式字符串。游标为 16–256 个 URL 安全字符,必须原样保留返回值。
错误¶
协议错误和限流使用下面的最小结构,不保证包含 schema_version 或 error.retryable:
| HTTP | error.code | 含义 |
|---|---|---|
| 400 | INVALID_REQUEST | 空体、无效 JSON、重复键或无效 Content-Length |
| 408 | REQUEST_TIMEOUT | 读取请求体超时(当前预算 5 秒) |
| 413 | REQUEST_TOO_LARGE | 请求体超过端点上限 |
| 415 | UNSUPPORTED_MEDIA_TYPE | 使用 application/json,不接受 Content-Encoding |
| 422 | INVALID_REQUEST | 字段、查询参数或游标无效 |
| 429 | RATE_LIMITED | 准入或限流;遵循 Retry-After |
筛查不可用返回 HTTP 503、Retry-After: 5 与:
{
"schema_version": "sanctions-screening.error.v1",
"request_id": "00000000000000000000000000000001",
"error": {
"code": "SCREENING_UNAVAILABLE",
"retryable": true
}
}
历史查询不可用也返回 503 与 Retry-After: 5,但使用独立结构:
{
"schema_version": "sanctions-screening.history-error.v2",
"request_id": "00000000000000000000000000000001",
"history_status": "UNAVAILABLE",
"error": {
"code": "HISTORY_UNAVAILABLE",
"retryable": true
}
}
按 HTTP 状态和 error.code 分支,存在 Retry-After 时遵循该值。缺少 retryable 不等于显式 false。无效输入应修正后再提交;技术错误不能当作 NO_MATCH 或 NO_BLOCK。这些结构不同于交易 API 的 detail 响应。
运维探针¶
这些端点用于部署、负载均衡和监控,建议仅通过受限的运维入口访问。客户接入不需要轮询这些探针。部分探针会查询下游依赖并返回运行状态;列入文档不代表应将其直接开放到公网。
| 方法 | 路径 | 含义 |
|---|---|---|
| GET | /live | 进程存活 |
| GET | /ready | 已配置公开服务的就绪状态 |
| GET | /serving-ready | 当前查询服务的接流能力 |
| GET | /policy-ready | 策略/来源覆盖的就绪状态 |
| GET | /v2-ready | v2 摘要/历史依赖的就绪状态 |
存活探针返回 200 不代表策略覆盖完整。公开查询结果不能授权后续交易;交易接口会自行执行准入检查。