系统架构与组件边界
1. 文档范围
本附录定义 POC V2 的逻辑分层、组件职责、状态所有权、跨层契约和部署隔离,并说明职责归属、权威来源和失败后的安全收敛方式。本文不冻结最终 ABI、数据库模式和容量参数。
系统只有六个功能层;共享的 POC 协议包(poc-protocol)只定义版本化对象、编码、域标识和限制,不构成第七层。
2. 六层架构

| 层 | 只回答的问题 | 核心职责 |
|---|---|---|
| L5 业务应用 | 为什么产生或消费算力(Power) | DApp 业务、质押、治理投票和其他下游组合 |
| L4 链上协议与权威状态 | 哪些事实和状态转换全网有效 | 贡献、周期与策略、验证委员会、QC 准入、候选结果、算力存储、交付责任与奖励 |
| L3 结果协调与链上交付 | 如何把相同投票形成 QC 并完成幂等交付 | 聚合器、持久化的 QC 就绪状态、链上交付执行器、公共兜底和奖励领取 |
| L2 周期取数与确定性计算 | 如何从唯一输入产生唯一结果 | 覆盖范围、输入、确定性计算核心、证据包和隔离签名器 |
| L1 数据访问与持久化 | 如何读取、固化和恢复工作状态 | 最终确认链适配器、事件存储、输入快照、认证状态和签名日志 |
| L0 通信协议基础 | 如何可靠传播已签对象 | 许可覆盖网络、持久化发件箱、已验证入站、确认与补偿修复 |
3. 权威模型
| 权威内容 | 唯一权威来源 | 非权威副本 |
|---|---|---|
| 贡献、策略、周期边界和验证委员会 | Topo 最终确认链状态与事件 | 索引器(Indexer)、事件库、对等节点(Peer)消息 |
| 生效基准与覆盖游标 | 链上生效算力元数据(ActivePowerMeta) | 本地检查点、任务记录 |
| 结果背书 | 完整验证委员会对同一结果的严格超三分之二 QC | 聚合器选择、对等节点数量、消息多数 |
| 可消费算力 | 链上原子激活后的生效状态根、版本和游标 | 本地候选结果(LocalCandidate)、证据包、暂存中或已封存的候选结果 |
| 链上交付责任种子 | 当前生效状态中由上一次激活生成的最终确认种子 | 本地排序缓存、交易发送者声明 |
| 奖励归属 | 链上位图、交付回执(Delivery Receipt)和冻结的受益人 | 本地链上交付记录、聚合器签名方子集 |
只要必要事实缺失、冲突或无法验证,组件就必须返回未就绪(NotReady)、弃权(Abstain),或保持原有生效状态。不得用执行时的最新值、默认值或人工修改填补空缺。
4. 端到端对象流
其中, = L4 最终确认事实; = L1 输入快照; = L2 计算、证据包和投票; = L0 网络; = L3 聚合与 QC 就绪状态; = L3 交付; = L4 准入与激活; = L5 已激活算力。
系统不设置集中式结果服务器。每个验证者(Validator)都可以独立计算、传播投票、聚合 QC,并在自己的责任窗口内承担链上交付。
5. L4 链上模块
| 模块 | 责任 | 明确不负责 |
|---|---|---|
| POC 可信贡献入口(poc_contribution) | 校验可信贡献交易并产生最终确认的贡献事件(ContributionEvent) | 计算最终算力 |
| 周期与策略(Period / Policy) | 固化周期边界,并提供可从历史恢复的配置、注册表、价格预言机和留存规则 | 选择链下结果 |
| 计算密钥注册表(Compute Key Registry) | 校验验证者运营者、PoP 和独立 BLS 计算密钥的纪元授权 | 托管私钥或产生额外权重 |
| QC 验证器(QC Verifier) | 验证验证委员会、位向量、多签、权重门槛、对象绑定、防重放以及基准与游标的连续性 | 重算贡献、价格、留存规则或算力 |
| 候选结果存储(Candidate Store) | 保存 QC 绑定的隐藏结果,以及交付批次与封存进度 | 向 L5 暴露未激活结果 |
| 算力存储与读取模型(PowerStore / PowerReadModel) | 原子切换生效状态根、版本和游标,并提供唯一读取接口 | 接受普通账户绕过 QC 写入算力 |
| 验证者中继绑定与交付责任(Validator Relay Binding / Duty) | 绑定中继与奖励地址,并从生效种子无状态派生责任窗口 | 形成 QC 权重或保存逐交付批次排名表 |
| POC 奖励模块(POC Reward) | 保存投票领取位图、交付回执、预算和领取状态 | 参与算力公式或阻止合法激活 |
6. 验证者节点扩展服务
每个验证者节点扩展服务至少包含以下模块:
| 模块 | 层 | 关键保证 |
|---|---|---|
| 最终确认链适配器(Finalized Chain Adapter) | L1 | 只读取明确链身份、连续交易和最终确认边界 |
| 事件与策略存储(Event / Policy Store) | L1 | 事件与检查点原子提交;旧周期按边界恢复 |
| 输入快照(Input Snapshot) | L1 | 固定周期边界、生效基准、范围、验证委员会和逐周期事实引用 |
| 确定性计算核心(Compute Core) | L2 | 纯函数;不访问 RPC、SQL、P2P、时间、随机数或环境变量 |
| 认证状态与证据包存储(Authenticated State / Artifact Store) | L1/L2 | 状态根与证明可验证;证据包按内容摘要发布并回读 |
| 隔离签名器与签名日志(Isolated Signer / Journal) | L2 安全边界 | 结构化签名请求、实时资格复验、持久化防双签 |
| POC 网络服务(POC Network Service) | L0 | 直接推送、语义确认、持久化发件箱和补偿修复 |
| 聚合器(Aggregator) | L3 | 只按相同计算上下文与结果承诺分组,并使用完整验证委员会计权 |
| QC 就绪存储(QcReady Store) | L1/L3 | QC 自验后先持久化,再允许异步交付 |
| 链上交付执行器(Settlement Worker) | L3 | 以独立中继账户、队列和 RPC 连接池幂等提交 QC、交付批次与封存操作 |
7. 密钥和身份隔离
| 身份 | 用途 | 是否产生 QC 权重 |
|---|---|---|
| 验证者运营账户(Validator Operator account) | 授权、轮换和撤销计算密钥 | 否 |
| Topo 共识密钥(Topo consensus key) | 基础共识 | 否,禁止复用 |
| BLS 计算密钥(BLS compute key) | 签署 POC 投票 | 是,权重来自冻结的验证委员会 |
| PeerId 密钥 | POC 覆盖网络连接认证 | 否 |
| 中继账户(relay account) | 支付交易燃料费(Gas),提交 QC、交付批次与封存操作 | 否 |
| 奖励地址(reward address) | 接收投票与交付奖励 | 否 |
POC 网络不能持有计算私钥。签名器不提供任意字节签名接口(sign(bytes));它只接受结构化计算上下文与结果承诺请求,并在持久化精确投票预留记录后操作密钥。
8. 跨层契约
下列接口定义稳定的责任边界,但不限定最终的语言签名:
| 接口 | 调用方 → 实现方 | 必须保证 |
|---|---|---|
| 最终确认贡献源(FinalizedContributionSource) | L1 → Topo 链 | 最终确认、连续且具有明确链身份 |
| 边界与生效状态源(BoundaryAndActiveSource) | L1/L2 → Topo 链 | 周期边界与生效状态来自可验证边界 |
| 历史策略源(HistoricalPolicySource) | L2 → L1 | 按源周期恢复,不允许使用最新值兜底 |
| 认证状态仓库(AuthenticatedStateRepository) | L2 → L1 | 基准、状态根、证明与检查点一致 |
| 证据包仓库(ArtifactRepository) | L2/L3 → L1 | 不存在时才写入,并按摘要读取和复验 |
| 计算签名器(ComputeSigner) | L2 → 隔离签名器 | 强类型签名原像、防双签和持久化屏障 |
| 投票发布器(VotePublisher) | L2 → L0 | 只接受已经持久化的签名投票 |
| 持久化网络事件源(DurableNetworkEventSource) | L3 → L0 | 已验证、可重放且游标单调递增 |
| 持久化 QC 就绪源(DurableQcReadySource) | 链上交付 → L1/L3 | QC 与任务状态持久化,并支持至少一次消费 |
| 链上算力提交接口(ChainPowerSubmission) | L3 → L4 | QC、交付批次与封存操作幂等,并按最终确认结果核验 |
| 已激活算力读取接口(ActivePowerRead) | L5 → L4 | 只返回已激活算力 |
9. 数据与恢复边界
链下状态分为三类:
- 可从链重建:事件投影、周期事实、输入快照、验证委员会、候选结果和链上交付进度。
- 可按摘要验证或重建:认证状态检查点、证据包、投票与 QC 的网络缓存。
- 不可随意重建:签名日志。其丢失或疑似回滚时,对应计算密钥必须停止签名。
满足 的输入(其中 表示输入源周期, 表示生效游标)、未终结候选结果引用的证据包,以及休眠用户所需的历史留存规则,都不能按普通 TTL 删除。
10. 部署与资源隔离
- POC 节点扩展服务与 Topo 共识使用独立运行时、端口、身份密钥、资源配额和就绪检查。
- CPU 与密码运算工作使用有界工作线程池;IO、队列、连接、分页、证据包和交付批次均有硬上限。
- 链上交付、确定性计算与聚合器使用独立执行器、RPC 连接池和熔断器。
- RPC、Gas、交易序号、数据库拥塞或 POC OOM 只能降低 POC 活性,不能阻塞 Topo 共识就绪。
- 证据包可以有多个提供方,但定位信息不具有权威性;使用前必须按摘要验证。
11. DApp 接入边界
DApp 负责自己的业务状态机、成熟条件、权益代币发放和可信贡献事件入口,无需运行 POC 计算公式,也不能选择验证者结果或直接写入算力存储。前端和后台可以展示投影状态,但必须把 业务完成、贡献已发行、候选结果处理中 和 算力已激活 区分开。
12. 架构验收
- 文档和实现只使用 L5–L0 六层。
- L4 不依赖链下服务在线,并且是贡献、候选结果与生效算力的唯一权威。
- 每个验证者从最终确认事实独立构造输入快照和结果。
- L2 纯计算核心不访问 IO 或非确定性环境。
- 投票在发布前已经过证据包回读、资格复验和签名器持久化屏障。
- 聚合器使用完整验证委员会和严格超三分之二门槛。
- 链上交付积压不反向阻塞确定性计算、签名器、L0 或基础共识。
- 部分交付批次、已过期、已拒绝和奖励故障都不改变生效算力。
- L5 只能通过算力读取模型读取已激活算力。