zk-Attested Ad View (zk 인증 광고 시청)
광고 시청이 Prize Pool (상금 풀)에 자금을 공급합니다. 따라서 프로토콜은 광고 시청이 실제로 발생했음을 증명해야 합니다 — 단순히 클라이언트가 발생했다고 주장하는 것이 아니라요.
순진한 실패 모드
클라이언트 측의 "광고 시청 완료" 주장은 사소하게 위조 가능합니다. 사용자는 "네, 시청했습니다" 이벤트를 임의로 무한 반복할 수 있습니다. 검증 없이는 시스템이 실제 광고 수익이 전혀 없는 상태에서 Prize Pool에 대해 비용을 지급하게 됩니다.
AdMob SSV (AdMob 서버 측 검증)를 진실 공급원으로
Google AdMob의 Server-Side Verification (SSV, 서버 측 검증)이 진실 공급원입니다: 광고가 완료되면 AdMob 서버가 설정된 엔드포인트로 서명된 콜백을 전송하며, 여기에는 광고 ID, 사용자 ID, 타임스탬프 및 수익 노출 메타데이터가 포함됩니다. 이 콜백은 Google이 게시한 공개키로 AdMob이 서명합니다.
각 검증된 콜백은 하나의 광고가 시청되었음을 나타내는 프로토콜의 권위 있는 기록입니다. 해당 시청에 대한 보상 크레딧은 콜백이 수신되고 검증된 후에만 발행됩니다.
프라이버시 문제
SSV를 순진하게 온체인에서 정산하면 각 사용자의 광고 시청 이력이 공개됩니다. 이는 다음과 같은 이유로 용납될 수 없습니다:
- 식별 가능한 사용자의 광고 참여 패턴이 노출됩니다.
- 수익화 메타데이터(eCPM, 광고주, 지역)가 노출됩니다.
- 사용자 신원과 상관관계가 형성되어 사용자 프라이버시를 침해하고 AdMob 이용약관을 위반할 수 있습니다.
zk-SNARK (영지식 SNARK) 구조
CashPop은 각 AdMob SSV 콜백을 zk-SNARK로 감싸서 다음을 증명합니다:
"저는 사용자
i, 광고j, 타임스탬프t에 대한 유효한 AdMob SSV 콜백을 보유하고 있으며, 이는 AdMob의 알려진 공개키로 서명되었습니다."
단, SSV 서명 자체의 내용은 공개하지 않습니다.
공식적으로, 증명자는 다음을 구성합니다:
온체인 검증자는 π_i를 광고 시청의 증거로 수락합니다. SSV 서명 자체는 증명 생성 후 폐기됩니다.
구현
- Prover (증명자): SP1 zkVM (Succinct), Groth16으로 래핑된 Plonky3 증명을 생성합니다.
- Verifier (검증자): BN254에서 Groth16 검증을 구현하는 TON 스마트 계약입니다.
- 증명 크기: 광고 시청당 약 200바이트입니다.
- 검증 비용: 증명당 약 0.001 TON입니다.
대규모 환경에서는 광고 시청이 정산 전에 집계됩니다. N개 시청의 배치가 하나의 집계 증명(재귀적 구성)을 생성하여, 시청당 검증 비용을 약 $0.00001로 낮춥니다.
Phase 2 (2단계) 현황
zk-SNARK 파이프라인은 Phase 2 (2026년 4분기)를 목표로 합니다. 그때까지는 광고 시청 정산에 연합 다중 서명을 사용합니다: AdMob SSV 콜백을 3개의 독립적인 운영자가 수신하고, 각 운영자가 독립적으로 확인한 후에야 POP이 적립됩니다. 이는 소규모 운영자 집합에 대해 비잔틴 장애 허용을 제공하며, zk 파이프라인이 성숙해지는 동안 사용됩니다.
이것이 중요한 이유
광고 사기 시장(클릭 사기, 노출 사기, 기여도 사기)은 광고 산업에 연간 약 800억 달러의 손실을 초래합니다 (Juniper Research, 2026). CashPop의 구조적 무결성은 광고 시청을 부풀릴 수 없다는 점에 달려 있습니다. zk 인증 파이프라인은 프로토콜을 알려진 가장 강력한 무결성 상태, 즉 정책 기반이 아닌 암호학적 무결성 상태에 놓이게 합니다.