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 作为广告观看的证据。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 证明流水线使协议处于已知最强的完整性位置:基于密码学,而非策略。