跳到主要内容

贡献证明(POC)V2 白皮书

摘要

贡献证明(POC)V2 是 Topo 的贡献清算与链上算力(Power)协议。协议接收来自 DApp 链上业务状态的可信贡献事件。每个验证者(Validator)独立恢复相同的最终确认输入并执行确定性计算,再由严格超过三分之二权重的法定权重证书(Quorum Certificate,QC)为同一结果背书。链上候选结果(Candidate)状态机负责分批交付和原子激活。

链上合约负责可信输入、验证委员会(Committee)与密钥授权、QC 准入、状态连续性和最终激活;链下验证者节点扩展服务(Validator Sidecar)负责复杂但可复算的周期聚合。下游应用只读取已激活算力(Activated Power)。

1. 问题与定位

开放 DApp 生态中的贡献并不等同于资本投入。交易、履约、创作、任务完成、流动性、社区治理和业务增长都可能创造价值,但这些事实分散在不同状态机、资产和计价单位中。

传统方案通常存在三类局限:

  • 产品积分只能在单一应用内部解释,难以成为公共协议输入;
  • 纯质押模型容易验证,但主要衡量资本而非真实业务贡献;
  • 中心化评分可以表达复杂行为,却要求下游无条件信任运营方。

POC 不替代 DApp 的业务逻辑。它在 DApp 与链上权重应用之间提供一层可治理、可复算、可验证的贡献清算协议。

2. 设计目标与非目标

POC V2 必须满足以下目标:

目标协议要求
可信输入只有最终确认的链上事实和 POC 可信路径产生的贡献事件(ContributionEvent)可以进入计算
输入一致每个验证者从同一边界、生效基准(Active base)、历史配置、注册表(Registry)和价格读取锚点构造计算上下文(Context)
结果确定排序、整数运算、舍入、留存计算(Retention)、状态补丁(Patch)、交付批次(Batch)和摘要规则必须跨实现一致
分布式背书完整验证委员会中严格超过三分之二权重必须签署同一计算上下文与结果承诺(Commitment)
最小链上执行链上验证 QC、对象绑定和状态连续性,不重新执行算力业务公式
原子可见部分交付批次、未激活候选结果和失败交付都不能改变下游可见算力
自动追赶未形成 QC 或未激活时不丢贡献,下一边界从未推进的生效游标(Active cursor)重新覆盖
可审计与可恢复输入、证据包(Artifact)、签名投票(Vote)、QC、交付批次和激活状态都可按稳定身份重放或对账

该设计不把 POC 计算放入基础共识关键路径,不引入第二套 BFT 或独立周期协调器(Period Coordinator),也不允许治理账户绕过 QC 直接写入算力。

3. 端到端协议

POC V2 从可信 DApp 业务事实、最终确认贡献事件、验证者独立复算和加权 QC,到候选结果原子激活与下游读取的完整生命周期。

协议按以下顺序运行:

  1. DApp 状态机确认交易、履约、任务或其他业务结果已经成熟。
  2. DApp 通过 POC 可信贡献路径发放权益代币;注册表、代币与托管约束通过校验后,才产生最终确认的贡献事件。
  3. 每个验证者只采集最终确认交易,并在 PeriodClosed(P)\operatorname{PeriodClosed}(P) 后固化连续输入快照。
  4. 验证者从链上生效游标 LL 唯一派生覆盖范围 R(L,P)\mathcal{R}(L,P)
  5. 每个验证者独立恢复逐周期配置、注册表、贡献规则、留存计算,以及计算上下文边界上的 Topo DEX 最新稳定价格。
  6. 确定性计算产生稀疏状态补丁、后置状态、交付批次、证据包、计算上下文和结果承诺。
  7. 验证者使用运营者授权的独立 BLS 计算密钥签署精确投票;达到严格超三分之二权重后形成 QC。
  8. QC 创建候选结果;已承诺的交付批次完整到齐后才能封存。
  9. 目标边界执行原子激活(Atomic Activate),原子切换生效状态根、版本和游标,并生成下一次交付责任排序使用的种子。
  10. 质押、治理投票和其他模块只通过链上读取接口消费已激活算力。

4. 可信贡献边界

POC 只接受可信贡献事件。DApp 自行发布的普通日志不能作为协议输入。贡献进入协议前至少要满足:

  • 应用已在注册表中登记并处于有效准入状态;
  • 权益代币、托管关系和应用身份绑定一致;
  • DApp 业务状态已经达到明确的成熟条件;
  • 代币发放与贡献事件在同一可信执行路径中完成;
  • 事件已经达到 Topo 最终确认。

这条边界把 业务完成权益发放进入 POC 计算 区分开。候选行为、前端展示、后台日志和产品积分都不能直接产生算力。

5. 周期、计算上下文与价值归一化

设最新关闭的源周期为 PP,正常时序为:

B=P,C=P+1,T=P+2.B=P,\qquad C=P+1,\qquad T=P+2.

其中 BBCCTT 分别表示源边界、计算期和目标期。

覆盖范围由生效游标决定,不取决于本地任务记录:

R(L,P)=[L+1,P].\mathcal{R}(L,P)=[L+1,P].

其中 LL 表示当前生效游标,R(L,P)\mathcal{R}(L,P) 表示覆盖的源周期范围。

计算上下文固定以下事实:链身份与协议版本、生效基准的状态根、版本和游标、覆盖范围、逐周期输入根、价格读取锚点与价格快照根、验证委员会纪元、验证者集合与计算密钥根。

不同 DApp 的权益代币通过 Topo DEX 价格身份换算到统一价值口径。POC 不读取仍在变化的当前周期价格,也不为每个源周期单独查询价格。在 PeriodClosed(P)\operatorname{PeriodClosed}(P) 之后,协议会在最终确认的价格读取边界上读取所有必需价格身份的最新稳定价格,并把价格快照承诺绑定到计算上下文。任何必需价格身份尚未形成稳定价格时,验证者都必须弃权(Abstain),不能改用零值或默认值。

6. 确定性算力模型

从用户基线 VL(u)V_L(u) 出发,覆盖范围内按源周期顺序计算:

Rp(u)=Ret ⁣(Vp1(u),ρp),Δp(u)=cp(u)πpwp,Vp(u)=Rp(u)+Δp(u),p=L+1,,P.\begin{aligned} R_p(u)&=\operatorname{Ret}\!\left(V_{p-1}(u),\rho_p\right), \\ \Delta_p(u)&=c_p(u)\,\pi_p\,w_p, \\ V_p(u)&=R_p(u)+\Delta_p(u),\qquad p=L+1,\ldots,P. \end{aligned}

其中 Vp(u)V_p(u) 表示用户 uu 的期末值;Rp(u)R_p(u) 表示执行留存计算后的值;Δp(u)\Delta_p(u) 表示本期增量;ρp\rho_pcp(u)c_p(u)πp\pi_pwpw_p 分别表示留存参数、贡献、计算上下文价格和应用权重。

每期都按 Rp ⁣ ⁣ΔpR_p\!\rightarrow\!\Delta_p 顺序执行。逐期留存率 ρp[0,1]\rho_p\in[0,1] 在源周期 pp 内保持固定。每个周期使用自身的配置、注册表、价格身份映射和留存规则;价格值则来自本次计算上下文统一冻结的最新稳定价格快照。

最终状态补丁只包含覆盖范围内的受影响用户,每个用户恰好出现一次。无贡献范围仍需形成空状态补丁(Empty Patch)及其计算上下文、证据包、投票与 QC;激活后状态根可以不变,但游标必须推进且生效版本增加 1。

7. 验证者驱动的信任架构

POC V2 将最终确认的链上事实、验证者节点扩展服务的独立计算与传播、链上 QC、候选结果和原子激活,以及已激活算力消费划分为清晰的权威边界。

每个验证者都运行相同的 POC 节点扩展服务,而不是依赖一个集中式计算服务:

  • L1 从 Topo 链连续读取最终确认事实并固化输入快照;
  • L2 从同一快照独立完成计算、证据包构造和签名前复验;
  • 隔离签名器(Signer)使用独立计算密钥和持久化签名日志防止双签;
  • L0 许可网络通过直接推送、持久化发件箱和补偿修复传播投票与 QC;
  • L3 聚合器(Aggregator)只聚合相同结果,不选择或修改结果;
  • L3 链上交付执行器(Settlement Worker)在 QC 就绪状态持久化后,异步提交 QC、交付批次和封存操作;
  • L4 链上模块验证 QC 并控制候选结果与生效状态。

QC 门槛固定为:

3S>2W.3S>2W.

其中 SS 表示已签权重,WW 表示完整验证委员会总权重。

离线、缺少计算密钥或未运行节点扩展服务的验证委员会成员仍计入分母。网络连接数、消息数、PeerId、中继账户和奖励地址都不产生 QC 权重。

8. 候选结果与原子激活

合法 QC 不会立即改变算力。非空结果进入暂存中(Staging)状态,所有承诺的交付批次到齐后进入已封存(Sealed)状态;空状态补丁可以在没有交付批次时直接封存。只有原子激活能让结果对下游可见。

状态生效状态根与版本生效游标下游可见性
未记录(Unrecorded)/ 未达法定权重(NoQuorum)不变不变不可见
暂存中 / 部分交付批次不变不变不可见
已封存不变不变不可见
已过期(Expired)/ 已拒绝(Rejected)不变不变不可见
已激活(Activated)原子切换推进到 PP可见

激活必须在一个链上状态转换中校验候选结果已经封存、基准与当前生效状态一致、覆盖起点连续,然后提交新的状态根、版本、游标和下一代交付责任种子(Duty Seed)。任何中间状态或失败交易都不能留下部分激活结果。

9. 失败自动追赶

当输入缺失、验证者结果分叉、签名权重不足、候选结果过期或交付未完成时,协议保持原有已激活算力,且不推进生效游标。下一次边界到来后,所有验证者从同一个旧游标重新计算扩大后的完整范围。

NQ(P)L=L,R(L,P+1)=[L+1,P+1].\operatorname{NQ}(P) \Longrightarrow L'=L,\qquad \mathcal{R}(L',P+1)=[L+1,P+1].

其中 NQ(P)\operatorname{NQ}(P) 表示源周期 PP 未达到法定权重,LL' 表示下一边界时的游标;L=LL'=L 表示失败未推进游标。

自动追赶会逐周期恢复当期输入,并依次执行 Rp ⁣ ⁣ΔpR_p\!\rightarrow\!\Delta_p,不能把失败周期直接求和。系统不得截断最早周期、删除离线权重或由管理员手工推进游标。

10. 可验证性与审计证据

POC V2 的验证证据链从最终确认事实和输入快照开始,经计算上下文、证据包、结果承诺、验证者投票、QC 与候选结果,最终到达已激活算力。

一条“计算成功”日志不足以完成审计。系统需要保留可重放的对象链:

证据对象证明内容
最终确认事实贡献、策略、注册表、价格更新和周期边界来自 Topo 链
输入快照 / 计算上下文计算使用的边界、基准、范围、输入根、价格根和验证委员会已经固定
证据包输入切片、证明、状态补丁和交付批次可以按摘要重放
投票 / QC指定验证委员会对同一计算上下文与结果承诺完成加权背书
候选结果 / 激活交付批次完整性、状态连续性和最终原子可见性由链上保证

链上验证 QC 并不等同于链上重新证明业务公式。安全性还依赖诚实验证者独立完整复算、确定性规范、数据可用性、黄金测试向量和独立验证器。

11. 交付责任与激励

每个验证者节点扩展服务都运行链上交付执行器。当前生效状态中保存的种子与计算上下文、结果承诺、动作类型、交付批次序号和验证者地址共同派生主责任窗口与次级责任窗口(Primary / Secondary)的顺序;责任窗口只依据最终确认边界。全部验证者窗口结束后,任意公共中继器(Public Relayer)都可以接续尚未完成的 QC、交付批次或封存操作。

激励分为两类:匹配最终已激活结果的验证者投票奖励,以及首次合法完成 QC、交付批次或封存状态转换的交付奖励。两类奖励只能来自预先注资且设有候选结果与周期上限的奖励池(Reward Pool),并在候选结果激活后领取。奖励不足或领取失败不能阻止合法激活,也不能改变算力。

12. 下游组合方式

链上算力存储中的已激活算力是唯一公共读取接口。质押、投票、治理、奖励及合作方协议可以组合使用该值,但不得读取链下估值、证据包或候选结果的临时状态。

当质押同时要求经济约束时,可以将已激活 POC 算力与 TOPO 押金覆盖结合:

E(u)=min ⁣(A(u),D(u)).E(u)=\min\!\left(A(u),D(u)\right).

其中 E(u)E(u)A(u)A(u)D(u)D(u) 分别表示用户 uu 的有效算力、已激活 POC 算力和押金覆盖。

该组合同时限制“只有资本、没有贡献”和“只有贡献、没有经济承诺”两种极端。

13. 安全假设与边界

POC V2 的核心安全假设包括:

  • 严格超过三分之二验证委员会权重能够对同一结果签名;
  • 少于三分之一权重恶意或违反独立复算规则;
  • 最终确认链历史和必要证据包在签名与交付窗口内可获得;
  • 计算密钥、共识密钥、PeerId、运营者、中继账户和奖励地址按用途隔离;
  • Topo 链持续提供最终确认性,且至少有一个验证者链上交付执行器或公共中继器能完成交付。

条件不足时,协议保持原有已激活算力,不降低 QC 门槛,也不接受不完整结果。

14. 核心设计原则

POC V2 遵循五项约束:可信贡献只能来自链上认可路径;计算输入必须在最终确认边界固化;每个验证者必须独立得到相同结果;严格超三分之二 QC 只为同一结果承诺背书;只有原子激活可以改变下游可见算力。任何失败都应保持原有生效状态,并通过未推进的游标在后续周期自动追赶。

15. 附录指南