当前页面已进入跨页知识网络层:不仅展示本页拓扑,还明确它在整站里的分类、被哪些页面引用、又继续指向哪些专题与证据页。
registry 页当前证明的是“关键地址来自链上 canonical key 寻址”,而不是由页面作者手工填地址。
可信性不是来自单个成功查询,而是来自“单 key 查询 + 分页列表 + 运行时 resolve + 负样本保留”四段式证据。
白皮书读者如果只想确认“地址到底从哪里来”,可按这条最短路径核对。
| 寻址链路 | 拓扑锚点 | 原始证据 | 典型下游 | 可信意义 |
|---|---|---|---|---|
| 单 key 查询 | User -> QueryKey -> Resolve -> Addr / Null | `get_contract_by_canonical_key(...)` 原文 | `foundation` / `emission` | 证明地址不是文档手填,active 与 reserved 有链上区分 |
| 分页核对 | ListPage1 -> Page1 -> StartAfter -> ListPage2 -> Page2 | `list_contracts` page1 / page2 响应 | `evidence_index` | 证明 registry 不是只展示单点样本,而是可分页巡检整个注册表 |
| 运行时 resolve | Addr -> Refresh -> Apply | `pkg/quantum/node.go` resolve 逻辑 | `dao` / `foundation` / `emission` | 证明 registry 是节点运行依赖面,不是白皮书注释页 |
flowchart TD
subgraph Keyspace["Canonical Key 空间"]
KeyDAO["dao_governance"] --> Registry["genesis_registry_v1"]
KeyTreasury["foundation_treasury"] --> Registry
KeyGas["gas_fee_distribution"] --> Registry
KeyEco["economic_constitution"] --> Registry
KeyBlock["block_time_schedule"] --> Registry
KeyEmission["emission_schedule"] --> Registry
end
subgraph QueryFlow["链上查询与分页"]
User["节点 / 运维 / 审计脚本"] --> QueryKey["get_contract_by_canonical_key(key)"]
User --> ListPage1["list_contracts(limit=5)"]
ListPage1 --> Page1["第 1 页 5 条 / total_contracts = 12"]
Page1 --> StartAfter["start_after = challenge_slashing_v1"]
StartAfter --> ListPage2["list_contracts(limit=5, start_after=...)"]
ListPage2 --> Page2["第 2 页继续返回 dao / dar / emission / treasury / gas"]
end
subgraph StatusModel["状态模型"]
Registry --> Active["active -> 已部署且可解析地址"]
Registry --> Reserved["reserved -> 未部署 / 保留键位"]
QueryKey --> Resolve{"返回状态"}
Resolve -->|"active"| Addr["contract_name + contract_address"]
Resolve -->|"reserved"| Null["contract_name=null / contract_address=null"]
end
subgraph RuntimeUse["节点运行时使用"]
Addr --> Refresh["Node 启动后 delayed refresh"]
Refresh --> Normalize["normalizeContractRoleAliases"]
Normalize --> RoleResolve["contractAddressForRole(canonical role)"]
RoleResolve --> Apply["写入 merged contractAddresses"]
Null --> Pending["保持 pending / placeholder"]
Pending --> Retry["等待下轮刷新 / 不伪装成成功"]
end
QueryKey -.-> Timeout["负样本: reserved / timeout / empty response"]
Apply --> DAORef["dao.html
治理寻址依赖 registry"]
Apply --> TreasuryRef["foundation.html
金库地址依赖 registry"]
Apply --> EmissionRef["emission.html
发行合约地址依赖 registry"]
DAORef --> DownstreamProof["proposal_id / execution_id / emission_state"]
DownstreamProof -.-> Evidence["evidence_index.html
canonical key / pagination / timeout"]
Pending -.-> CredBoundary["credibility.html
保留态不会伪装成已上线"]