Skip to content

zk-Attested Ad View

广告观看为 Prize Pool (奖池) 提供资金。因此,协议必须证明广告观看确实发生——而不仅仅是客户端声称其发生。

朴素失败模式

客户端声称的"广告已观看"极易伪造。用户可以无限次重放"我已观看"事件。若无验证,系统将在无实际广告收入的情况下支付 Prize Pool (奖池)。

AdMob SSV 作为事实来源

Google AdMob 的服务器端验证 (SSV) 是事实来源:当广告完成时,AdMob 服务器向配置的端点发送签名回调,包含广告 ID、用户 ID、时间戳和收入展示元数据。该回调由 AdMob 使用 Google 发布的公钥签名。

每个经过验证的回调是协议中一次广告观看的权威记录。该观看的奖励积分仅在收到并验证回调后发放。

隐私问题

SSV 的朴素链上结算将公布每个用户的广告观看历史。这是不可接受的,因为:

  • 它暴露了可识别用户的广告互动模式。
  • 它暴露了变现元数据(eCPM、广告商、地理位置)。
  • 它以侵犯用户隐私且可能违反 AdMob 服务条款的方式与用户身份关联。

zk-SNARK 构造

CashPop 将每个 AdMob SSV 回调封装在 zk-SNARK 中,该证明证明:

"我拥有一个有效的 AdMob SSV 回调,针对用户 i、广告 j、时间戳 t,由 AdMob 已知公钥签名。"

而不泄露 SSV 签名本身的内容。

形式上,证明者构造:

πi=Prove(SSVi:VerifypkAdMob(SSVi,ad_id,useri,t)=1)

链上验证者接受 π_i 作为广告观看的证据。SSV 签名本身在证明生成后被销毁。

实现

  • 证明者:SP1 zkVM (Succinct),生成 Groth16 封装的 Plonky3 证明。
  • 验证者:实现 BN254 上 Groth16 验证的 TON 智能合约。
  • 证明大小:每次广告观看约 200 字节。
  • 验证成本:每个证明约 0.001 TON。

在规模化场景下,广告观看在结算前聚合。N 次观看的批次生成一个聚合证明(递归组合),使每次观看的验证成本降至约 $0.00001。

第二阶段状态

zk-SNARK 流水线计划在第二阶段(2026 年第四季度)实现。在此之前,广告观看结算使用联合多签名:AdMob SSV 回调由 3 个独立运营商接收,每个运营商独立确认后再发放 POP (积分)。这在小规模运营商集合上提供拜占庭容错,同时等待 zk 流水线成熟。

为何重要

广告欺诈市场(点击欺诈、展示欺诈、归因欺诈)每年给广告行业造成约 800 亿美元的损失(Juniper Research, 2026)。CashPop 的结构完整性依赖于无法伪造广告观看。zk 证明流水线使协议处于已知最强的完整性位置:基于密码学,而非策略。

Built on TON.