zk-Attested Ad View (zkによる証明付き広告視聴)
広告視聴がプライズプール (Prize Pool) の資金源となります。そのため、プロトコルは広告視聴が実際に行われたことを証明する必要があります。単にクライアントが視聴したと主張しただけでは不十分です。
単純な失敗パターン
クライアント側の「広告を視聴した」という主張は、簡単に偽造可能です。ユーザーは「はい、視聴しました」というイベントを何度でも再生できます。検証がなければ、システムは実際の広告収入がないにもかかわらず、プライズプールに対して支払いを行ってしまいます。
真実の源泉としてのAdMob SSV
Google AdMobのサーバーサイド検証 (SSV) が真実の源泉です。広告が完了すると、AdMobのサーバーは設定されたエンドポイントに署名付きコールバックを送信します。このコールバックには、広告ID、ユーザーID、タイムスタンプ、収入インプレッションのメタデータが含まれます。コールバックは、Googleが公開する公開鍵を使用してAdMobによって署名されます。
検証された各コールバックは、1つの広告が視聴されたというプロトコルの信頼できる記録となります。その視聴に対する報酬クレジットは、コールバックが受信され検証された後にのみ発行されます。
プライバシーの問題
SSVを単純にオンチェーンで決済すると、各ユーザーの広告視聴履歴が公開されてしまいます。これは以下の理由から許容できません。
- 識別可能なユーザーの広告エンゲージメントパターンが露出します。
- 収益化メタデータ (eCPM、広告主、地域) が露出します。
- ユーザーIDと関連付けられ、ユーザーのプライバシーを侵害し、AdMobの利用規約に違反する可能性があります。
zk-SNARK (zk-SNARK) の構成
CashPop (キャッシュポップ) は、各AdMob SSVコールバックをzk-SNARKでラップします。このzk-SNARKは以下を証明します。
「私は、AdMobの既知の公開鍵によって署名された、ユーザー
i、広告j、タイムスタンプtに対する有効なAdMob SSVコールバックを保持している」
ただし、SSV署名の内容自体は明かしません。
形式的には、証明者は以下を構築します。
オンチェーンの検証者は、π_i を広告視聴の証拠として受け入れます。SSV署名自体は、証明生成後に破棄されます。
実装
- 証明者 (Prover) : SP1 zkVM (Succinct)。Groth16でラップされたPlonky3証明を生成します。
- 検証者 (Verifier) : BN254上でGroth16検証を実装するTONスマートコントラクト。
- 証明サイズ: 広告視聴1回あたり約200バイト。
- 検証コスト: 証明1つあたり約0.001 TON。
大規模運用時には、広告視聴は決済前に集約されます。N回の視聴のバッチは、1つの集約証明 (再帰的構成) を生成し、視聴あたりの検証コストを約0.00001ドルに抑えます。
フェーズ2の状況
zk-SNARKパイプラインは、フェーズ2 (2026年第4四半期) を目標としています。それまでは、広告視聴の決済には連合マルチシグネチャを使用します。AdMob SSVコールバックは3つの独立したオペレーターによって受信され、各オペレーターが独立して確認した後にPOP (ポイント) が付与されます。これにより、小規模なオペレーターセット上でビザンチン障害耐性が提供され、zkパイプラインが成熟するまでの間の運用が可能になります。
これが重要な理由
広告詐欺市場 (クリック詐欺、インプレッション詐欺、アトリビューション詐欺) は、広告業界に年間推定800億ドルの損失をもたらしています (Juniper Research, 2026年)。CashPopの構造的完全性は、広告視聴を水増しできないことに依存しています。zk証明パイプラインは、プロトコルを既知の最も強力な完全性の立場、すなわち暗号技術に基づくものであり、ポリシーに基づくものではない立場に置きます。