返回 Expert 笔记
Expert Day 26

隐私 + 合规悖论 — Privacy Pools 与 ZK-KYC

深度阅读 Vitalik Buterin 等人 2023-09 论文《Blockchain Privacy and Regulatory Compliance: Towards a Practical Equilibrium》(Privacy Pools 论文)、ZK-KYC 技术框架、选择性披露原理;理解隐私池(Privacy Pool)与混币器(Mixer)的本质差异

2026-05-27
Phase 1 - 监管与合规框架 (Day 15-28)
监管合规隐私PrivacyPoolsZK-KYCTornadoCash

日期: 2026-05-27 方向: 机构DeFi / RWA 阶段: Phase 1 - 监管与合规框架 (Day 15-28) 标签: #监管 #合规 #隐私 #PrivacyPools #ZK-KYC #TornadoCash


今日目标

类型内容
学习深度阅读 Vitalik Buterin 等人 2023-09 论文《Blockchain Privacy and Regulatory Compliance: Towards a Practical Equilibrium》(Privacy Pools 论文)、ZK-KYC 技术框架、选择性披露原理;理解隐私池(Privacy Pool)与混币器(Mixer)的本质差异
实操研究 Privacy Pools 主网部署(0xbow.io)、Railgun 隐私协议、Aztec Network;分析"合规隐私"的实施路径
产出"合规隐私的技术路径"分析文档(链上零知识 + 监管可解开 + 用户可控的三方均衡设计)

一、悖论的本质

1.1 监管 vs 隐私的根本冲突

监管要求:
  - 完整 KYC(身份、地址、来源)
  - Travel Rule(交易方信息)
  - 制裁名单过滤
  - 长期审计追溯
  
用户需求:
  - 不暴露持仓(防针对性攻击)
  - 不暴露交易对手
  - 不暴露资金来源
  - 不被监控
  
冲突:信息透明 vs 信息隐藏

1.2 三种立场

立场代表核心
全面合规TradFi 银行KYC > 隐私
全面隐私Cypherpunk隐私 > 合规
平衡(合规隐私)Vitalik、机构 DeFi选择性披露

二、Tornado Cash 教训

2.1 Tornado Cash 的设计目标

  • 2019 上线,提供以太坊隐私混币
  • ZK-SNARK 实现:deposit 后,withdraw 时证明"曾 deposit"但不暴露具体哪笔
  • 累计 deposit $7B+
  • 用户群:合法用户(隐私需求) + 非法用户(洗钱)

2.2 制裁后果

  • 2022-08-08 OFAC 制裁
  • 合法用户被殃及(Mark Cuban、Vitalik 等)
  • 协议无法区分善意 vs 恶意用户
  • 核心教训:纯隐私无法适配监管

2.3 Privacy Pools 论文的回应

2023-09,Vitalik Buterin、Jacob Illum、Matthias Nadler、Fabian Schar、Ameen Soleimani 联合发布: "Blockchain Privacy and Regulatory Compliance: Towards a Practical Equilibrium"

核心论点:用户自愿证明资金来源不在制裁名单(Association Set),同时保持隐私。


三、Privacy Pools 设计

3.1 核心机制:Association Set

传统 Mixer(Tornado Cash):
  Deposit pool = 所有 deposit 合集(含合规 + 不合规)
  Withdraw 证明:我曾 deposit(无关来源)
  问题:合规用户与黑客资金混在一起

Privacy Pools:
  用户 deposit 时关联多个 Association Set
  例:
    - Set A: 所有 deposit
    - Set B: 排除 OFAC SDN 地址的 deposit
    - Set C: 仅 KYC 通过用户的 deposit
  Withdraw 时用户选择证明:我属于 Set B(合规子集)

3.2 Mathematical Formulation

设:

  • $D$ = 全部 deposits 集合
  • $A \subseteq D$ = 用户 $u$ 的 association set(如"非 SDN")
  • 用户证明:$\exists d \in A$ such that $u$ deposited $d$

ZK Statement:

"I know a deposit d such that:
  1. d ∈ Merkle Tree(A)
  2. nullifier(d) = N (公开)
  3. I am the owner of d"

3.3 Association Set Provider(ASP)

ASP 是第三方(如合规分析公司)维护的"白名单池":

  • ASP A:Chainalysis 提供,排除已知非法资金
  • ASP B:Sumsub 提供,仅含 KYC 通过用户
  • ASP C:Coinbase 提供,仅含其客户

用户在 deposit 时无需选择,但 withdraw 时必须证明属于至少一个 ASP。

3.4 三方均衡

用户:保持隐私(不暴露具体哪笔 deposit),但选择"声誉好"的 Set
监管:通过 ASP 治理,制定合规 Set 标准
诚信用户:选择合规 Set 自证清白
非法用户:被任何合规 Set 排除,只能选 Tornado Cash 类全集 → 等同被标记

四、Privacy Pools 主网实现

4.1 0xbow.io

  • 2024-03 主网上线(Ethereum)
  • 资金池:ETH 池 + USDC 池
  • ASP:与 Chainalysis 合作维护
  • TVL:$1M+(早期)
  • UI:用户可选择"隐私模式" + 关联 Set

4.2 关键合约

contract PrivacyPool {
    bytes32 public commitmentRoot;  // Merkle tree of deposits
    mapping(bytes32 => bool) public nullifierUsed;
    
    function deposit(bytes32 commitment) external payable {
        require(msg.value == DENOMINATION, "Wrong amount");
        // 添加 commitment 到 Merkle tree
        _insert(commitment);
    }
    
    function withdraw(
        bytes calldata zkProof,
        bytes32 root,
        bytes32 nullifier,
        bytes32 associationSetRoot,  // Privacy Pools 创新
        address recipient
    ) external {
        require(!nullifierUsed[nullifier], "Already withdrawn");
        require(
            isValidASP(associationSetRoot),
            "Not approved Association Set"
        );
        require(
            verifier.verify(
                zkProof,
                [root, nullifier, associationSetRoot, uint256(recipient)]
            ),
            "Invalid proof"
        );
        nullifierUsed[nullifier] = true;
        recipient.transfer(DENOMINATION);
    }
}

4.3 Railgun

  • 2021 上线
  • 隐私 DeFi(不仅 mixer,还支持 swap、stake)
  • 内置"View Key" — 用户可选择性公开持仓给特定方
  • 集成 Chainalysis 监控(合规设计)

4.4 Aztec Network

  • 类型:ZK Rollup + 隐私
  • 历史:Aztec Connect 2022 上线,2024-03 关闭
  • 2024-Q4 Aztec Mainnet:通用 ZK L2
  • 独有 Noir 编程语言

五、ZK-KYC 与选择性披露

5.1 ZK-KYC 概念

传统 KYC:
  KYC Provider → DApp: 全部用户信息(姓名、地址、年龄)
  问题:DApp 看到不需要的信息

ZK-KYC:
  KYC Provider → User: 签名 VC
  User → DApp: ZK 证明"满足条件"
  例:证明"年龄 > 18 AND country != Iran",不暴露具体年龄、国家

5.2 选择性披露(Selective Disclosure)

W3C VC 数据模型支持:

  • BBS+ Signatures:支持不暴露字段的证明
  • AnonCreds:Hyperledger 标准
  • Polygon ID:基于 Iden3 + Circom

5.3 监管认可

ZK-KYC 在监管层面"渐进认可":

  • eIDAS 2.0(EU):明确支持选择性披露
  • NIST SP 800-63-4(US):考虑增加
  • MAS Project Guardian:试点采用

5.4 实例:合规交易

机构 Alice 在 KYC 后获得 VC(含 KYC L2 + Country=US + Net Worth=$10M)

DEX 要求:
  Q1: KYC 通过?
  Q2: 国家不在 OFAC 制裁名单?
  Q3: 净资产 > $1M(Accredited)?

Alice 的 ZK 证明:
  proof = ZK(VC, [Q1=true, Q2=true, Q3=true])
  
DEX 验证:proof 有效
DEX 不知道:Alice 国家、净资产、姓名

六、各方案对比

6.1 隐私级别

方案协议级用户级监管解开
公链(Ethereum)完全公开仅地址全可见
Tornado Cash完全隐私完全隐私不可解开
Privacy Pools完全隐私 + ASP完全隐私 + 自证清白通过 ASP 间接
Railgun完全隐私 + View Key用户可控通过 View Key
Aztec完全隐私完全隐私通过 Audit Key
ZK-KYC公开(金额、地址)隐私(身份)KYC Issuer 持有

6.2 合规适配性

方案OFAC 制裁风险EU TFR 兼容机构可用性
Tornado Cash已制裁不兼容不可用
Privacy Pools通过 ASP 规避设计中可能
Railgun通过 View Key 兼容部分兼容部分
Aztec设计中设计中探讨中
ZK-KYC完全合规完全兼容优选

七、TradFi 监管 → Web3 映射

7.1 银行的"机密 vs 透明"经验

传统银行:
  - 客户对银行透明(KYC、交易记录)
  - 银行对监管透明(CDD、STR)
  - 银行对竞争对手保密
  - 银行对公众保密

链上等价:
  - 用户对 KYC Issuer 透明
  - KYC Issuer 对监管透明(合法授权时)
  - 用户对 DApp 选择性披露
  - 用户对竞争对手保密

7.2 GDPR 与链上隐私

GDPR 关键原则在链上的对应:

GDPR 原则链上实现
Data MinimizationZK 选择性披露
Purpose Limitation单次 attestation 用途明确
Storage LimitationVC expiration
Right to ErasureIssuer 端撤销 + 链上 nullifier
Lawful Basis用户 consent + KYC 法律基础

7.3 监管"后门"设计

合规隐私的关键挑战:监管能否"应需打开"?方案:

  1. Issuer 持有原始数据:法律授权时 Issuer 解密
  2. Threshold Cryptography:监管 + 协议 + 用户多方签名
  3. Audit Key:Aztec 模式,用户主动给监管 Key
  4. TEE:Intel SGX 等,硬件保证隐私 + 合法访问

八、关键速查 Cheat Sheet

数值 / 引用
Privacy Pools 论文2023-09-09, SSRN 4563364
论文作者Buterin, Illum, Nadler, Schar, Soleimani
Tornado Cash 制裁2022-08-08
0xbow Privacy Pools2024-03 主网
Railgun 上线2021
Aztec Mainnet2024-Q4
BBS+ SignaturesRFC 9380 (草案)
AnonCredsHyperledger Project
Aztec Connect 关闭2024-03
eIDAS 2.0EU Regulation 2024/1183
ZKSync ProtocolMatter Labs
Sismo(ZK Badge)已 sunset
Holonym Privacy Pool2024
Manta NetworkZK 隐私 L1

九、面试题(资深级)

Q1: Privacy Pools 与 Tornado Cash 的核心法律差异是什么?

STAR-T

  • Situation:Tornado Cash 被制裁后,行业需要"合规隐私"方案
  • Task:解释 Privacy Pools 如何避免 Tornado Cash 命运
  • Action:核心差异:
    1. 意图差异:Privacy Pools 主动设计"排除非法资金"机制(Association Set)
    2. 可治理性:ASP 由第三方治理,监管可影响清单
    3. 用户行为信号:选择"全集 ASP"vs"合规 ASP"暴露用户意图
    4. 法律地位:Privacy Pools 协议可与 ASP 提供商签合规协议
    5. OFAC 风险:仅"非法 ASP"会被制裁,整个协议安全
  • Result:Privacy Pools 提供"合规友好的隐私",机构可用
  • Trade-off:依赖 ASP 治理,集中化风险

Q2: 为什么"完全 ZK 不可解开"在合规市场不可行?

回答

  • 根本挑战:监管必须能在合法情况下访问数据(subpoena、court order)
  • 完全 ZK 的悖论
    • 隐私 = 任何人都不能解开
    • 但监管要求"按需解开"
    • 不可同时满足
  • 解决路径
    1. Issuer-side Custody:原始 KYC 数据在 Issuer 端,受监管时解开
    2. Multi-party Computation:监管 + 协议 + 用户共同签名解开
    3. TEE-based:硬件保证,仅授权下输出
    4. Audit Key:Aztec 模式,用户给监管"viewable key"
  • 架构启示
    • 完全 ZK 适合"非合规应用"(如个人捐赠、私下转账)
    • 合规市场必须"可控隐私"
    • "隐私 + 合规"= 用户隐私(防竞争)+ 监管可见(合法时)

Q3: ZK-KYC 在欧盟 MiCA + GDPR 框架下如何落地?

回答

  • MiCA:CASP 须 KYC 客户
  • GDPR:数据最小化 + 被遗忘权
  • 冲突:CASP 必须 KYC(MiCA),但不能保留过多数据(GDPR)
  • ZK-KYC 解决方案
    1. Issuer-side:KYC 数据在 KYC Provider(Sumsub)端
    2. CASP-side:仅持有 ZK proof(无 PII)
    3. 审计:CASP 可向监管证明 KYC 通过(验证 ZK proof)
    4. GDPR Erasure:用户请求删除时,Issuer 撤销 VC(链上 revocation list)
  • 架构示意
    User → KYC Provider (full data) → ZK VC → User Wallet → CASP (ZK only)
                                                 ↓
                                      Monitoring → Issuer (audit access)
    
  • 实施挑战
    • 监管需认可 Issuer
    • 跨境数据传输(KYC Provider 在第三国)
    • 撤销机制的实时性

Q4: Vitalik 的 Privacy Pools 论文中"Association Set"治理面临什么挑战?

回答

  • 核心挑战:谁治理 ASP?
  • 可能模式
    1. Centralized ASP:单一公司维护(如 Chainalysis)
      • 优点:高效、专业
      • 缺点:单点失败、审查
    2. Multi-Party ASP:多个 ASP 联合(最佳实践)
      • Chainalysis、TRM、Elliptic 各自一个 ASP
      • 用户选择 trusted ASP
    3. DAO-Governed ASP:DAO 投票决定 ASP 政策
      • 透明但可能被操纵
    4. Government ASP:监管直接维护
      • 完全合规但失去 Web3 价值
  • 风险
    • 过度排除:ASP 过严,合法用户被殃及(如 Tornado Cash 法 Coinbase 失误冻结)
    • 过松:恶意资金混入,OFAC 风险
    • 博弈:用户选 trusted ASP → 中心化趋势
  • 架构启示
    • ASP 必须开放、多元
    • 监管认可路径长
    • 早期可能仅用于"友好"用例(KYC 完成的机构)

Q5: 设计一个面向欧洲机构的"合规隐私 DEX",关键架构组件?

回答

  • Layer 1: 用户接入
    • KYC Provider(Sumsub / Onfido)发行 ZK VC
    • 用户钱包:Polygon ID Wallet 持有 VC
  • Layer 2: 合规检查
    • DEX 要求 KYC L2 + Country in EU + 非 OFAC SDN
    • ZK proof 验证(无 PII 暴露)
  • Layer 3: 隐私执行
    • 订单基于 Aztec / Privacy Pools
    • 链上仅可见加密订单
    • Solver 网络在加密状态下匹配(FHE 或 MPC)
  • Layer 4: 监管接口
    • DEX 持 Audit Key
    • 监管 subpoena → DEX 揭示用户身份 + 交易记录
    • 持 5 年记录(MiFID II 要求)
  • Layer 5: 制裁过滤
    • Sanctions Oracle 集成(链上)
    • 跨链分析(资金来源穿透)
  • Layer 6: 报告
    • MiFIR Art. 26 自动生成 T+1 报告
    • 监管 dashboard
  • 预算:€5M 开发 + €2M/年运营
  • 挑战:FHE 性能、Solver 网络合规、ASP 治理

十、明日预告

明日(Day 27)我们进入 税务与会计专题:研究 DeFi 交易的税务事件分类(swap、yield farming、staking、airdrop、bridging)、FASB 加密资产准则(ASU 2023-08)、IRS Notice 2014-21、机构记账方案(Cryptio、Bitwave、Lukka),以及链上记账标准的演进。