跳到主要内容

DApp 接入参考案例

1. 案例定位

本附录以交易型 DApp 为例说明 POC V2 的接入方式。案例只界定安全边界,不要求所有 DApp 使用相同的业务状态机。游戏、内容、任务、去中心化金融(DeFi)和供应链应用可以分别定义成熟条件,但 候选活动成熟事实可信发行已激活算力(Activated Power) 四个阶段必须彼此独立。

2. 成熟贡献

支付、点击、订单创建或前端显示成功都只是候选活动。业务状态机排除主要撤销路径,或进入明确且可治理的后续纠错阶段后,贡献才算成熟。

事实类别交易型 DApp 示例POC 处理
候选活动下单、支付、锁定库存不产生 POC 算力
成熟条件履约确认、服务验收、锁定期结束允许进入贡献发行判断
成熟贡献结算已执行、净值已确定可以通过可信路径发行
退款或争议退款、仲裁、欺诈、拒付取消、冻结、未来抵扣或治理纠正

3. 参考旅程

交易型 DApp 的贡献旅程:支付与履约形成候选事实,结算成熟后通过可信路径产生最终确认的贡献事件,随后由 POC V2 的验证者计算、QC 与原子激活形成已激活算力。

接入流程分为八步:

  1. 用户通过钱包签署业务交易。
  2. 合约执行支付、资产锁定或订单状态转换。
  3. 履约、验收、锁定期和结算规则形成成熟事实。
  4. DApp 的贡献管理模块(contribution manager)检查成熟状态、幂等性、暂停状态、受益人和托管关系。
  5. DApp 通过 POC 可信贡献入口(poc_contribution)发放权益代币并产生贡献事件(ContributionEvent)。
  6. 事件达到最终确认后,进入验证者(Validator)的下一次计算范围。
  7. POC V2 完成独立复算、投票与 QC、候选结果、交付批次、封存和原子激活。
  8. DApp 前端或下游模块通过算力读取模型(PowerReadModel)读取已激活算力。

4. 注册表与权益代币

DApp 接入前必须在注册表(Registry)中登记以下信息:

  • 应用管理权限和链上地址;
  • DApp 权益代币;
  • 托管地址;
  • POC 准入与暂停状态;
  • 有效权重及其周期语义;
  • Topo DEX 的基础代币与报价代币价格对(base_token / quote_token)。

权益代币是可信贡献路径中的价值载体和价格身份,不等同于最终算力。只有贡献事件进入确定性周期计算并最终激活后,用户才能获得协议可读算力。

5. Topo DEX 价格接入

DApp 必须为权益代币配置可审计的 Topo DEX 价格身份。POC 使用的是计算上下文(Context)价格读取边界(price_read_fence)上的最新稳定价格,而不是 DApp 后台报价、当前周期临时价格或贡献发生周期的专属价格。

接入验收需要确认:

  • 价格源已经注册,且报告方授权正确;
  • 已形成至少一条稳定价格和价格更新事件(PriceUpdatedEvent);
  • 注册表中的价格身份映射明确;
  • 未形成稳定价格时任务会弃权(Abstain),不会使用默认值;
  • 前端和运维界面能够显示价格陈旧程度,但不能自行替换价格。

6. 业务交易入口

钱包签名交易的后端入口必须验证:

检查项要求
身份交易发送方与已认证钱包一致,链 ID 正确
目标合约地址、模块、函数和泛型参数在允许列表中
语义订单、资产、数量、受益人和业务状态与服务端事实一致
幂等交易哈希、业务对象和重试具有明确唯一键
结果RPC 接受不等于成功,最终状态以最终确认的链上事实为准

后端不应只是转发已签名交易对象(signedTx),也不能把本地数据库状态当作链上执行成功的证明。

7. 合约职责

交易型 DApp 的 Move 合约应清晰分离:

  • 业务状态机与权限;
  • 资产、库存、托管与退款;
  • 结算和成熟条件;
  • 贡献管理模块;
  • 对外事件与只读视图(view)。

贡献事件必须由 POC 可信贡献入口产生。DApp 自己的业务事件可以作为审计证据,但不能替代 POC 输入。

8. 业务结算与 POC 解耦

贡献发行或后续 POC 链上交付失败,不得阻塞商户资金结算。业务状态机应先完成合法的资金与权益处理,再把符合条件的成熟事实提交贡献发行。

场景业务结果POC 结果
结算成功、贡献发行成功商户结算完成产生贡献事件
结算成功、贡献发行暂时失败商户结算仍完成记录可重试或暂缓状态,不伪造事件
结算前退款或争议退款、仲裁或取消不发行贡献
发行后争议业务按治理规则纠正通过未来抵扣、反向贡献或治理机制处理
应用暂停已有业务按安全规则完成停止新的贡献发行

9. 事件投影与用户界面

事件消费器(Event consumer)只投影最终确认的链上事实,并支持幂等、重放、缺口检测和对账。用户界面应分别显示:

  • 业务交易已提交;
  • 链上业务事实已确认;
  • 贡献已经成熟;
  • 贡献事件已产生;
  • 已进入 POC 计算范围;
  • 候选结果尚未激活;
  • 已激活算力已经可以读取。

将这些状态合并成一个“奖励成功”会掩盖最终确认、未达法定权重(NoQuorum)和自动追赶边界。

10. 接入步骤

阶段主要产出退出条件
I0 业务语义状态机、成熟条件、退款和争议规则产品、合约、后端和测试定义一致
I1 链上事实Move 合约、事件、只读视图、权限和初始化关键路径与负向测试通过
I2 POC 身份注册表、权益代币、托管关系、权重和价格身份所有状态可查询并可审计
I3 可信发行贡献管理模块与 POC 可信贡献入口成熟、重复、暂停和余额测试通过
I4 投影与对账事件消费器、读取模型和对账机制可从链重放并修复
I5 影子接入观察贡献、计算上下文与验证者结果多周期输入一致,不写入生产算力
I6 受控启用测试网强制执行与有限生产试点安全阶段门槛、监控和故障演练通过

11. 接入验收

  • 候选活动和成熟贡献有不同的链上状态。
  • 支付成功不会直接产生算力。
  • 贡献事件只能从 POC 可信路径产生。
  • 注册表中的应用、代币、托管关系、状态、权重和价格身份一致。
  • POC 故障不会阻塞合法的业务资金结算。
  • 退款、争议、暂停和发行后纠正路径有明确状态与审计事件。
  • 事件消费器可以从最终确认的链上事实重放,不依赖不可验证的本地日志。
  • 前端清楚区分贡献发行、候选结果处理和算力激活。