教程区块链区块链技术ch1010.4 隐私币对比:Monero 与 Zcash

本页目录

隐私币将"交易隐私"提升为协议原生功能——不是可选功能,不是通过复杂的混币技术事后添加,而是从底层就隐藏交易的发送者、接收者和金额。Monero(门罗币)和 Zcash 代表了两种截然不同的技术路线:强制隐私 vs 可选隐私,环签名 vs zk-SNARK。


10.4.1 Monero(门罗币):强制且完整的隐私

设计哲学

"默认隐私,不可追溯。"

Monero 的设计理念很简单:隐私不是可选的,而是强制的。在 Monero 网络中,你无法发送"非隐私交易"——所有交易都使用环签名和隐匿地址。

这意味着:

  • 所有交易都隐藏在环签名成员之中
  • 所有接收都使用一次性隐匿地址
  • 所有金额都使用环机密交易(RingCT)隐藏

核心技术栈

flowchart TB
    subgraph Monero["Monero 隐私层"]
        R[环签名<br/>Ring Signatures] --> |"隐藏发送者"| PR[隐私输出]
        S[隐匿地址<br/>Stealth Address] --> |"隐藏接收者"| PR
        C[RingCT<br/>Ring Confidential] --> |"隐藏金额"| PR
    end
    
    PR --> |"三重匿名"| TX["不可追溯交易"]
    
    style R fill:#c8e6c9
    style S fill:#c8e6c9
    style C fill:#c8e6c9
    style TX fill:#e1f5e1

1. 环签名:默认环大小 n=16

Monero 使用递增的环大小。2020 年后,默认 CLSAG(Concise Linkable Spontaneous Anonymous Group) 签名使用 16 个成员的环:

ring size=16Preal-link=116=6.25%\text{ring size} = 16 \quad \Rightarrow \quad P_{\text{real-link}} = \frac{1}{16} = 6.25\%

这意味着每个外部观察者猜对真实发送者的概率只有 6.25%。经过 3 层混洗后:

Plink-3depth=(116)3=0.024%P_{\text{link-3depth}} = \left(\frac{1}{16}\right)^3 = 0.024\%

2. 隐匿地址:一次性接收

每个 Monero 交易为接收方生成一次性公钥,只有接收方的"扫描私钥"可以检出这笔交易。这消除了"地址复用"的追踪风险。

3. RingCT:隐藏金额

在 2017 年(v0.14.0 后),Monero 使用 Bulletproofs(后接 Bulletproofs+)来隐藏交易金额,同时保证输入总额等于输出总额:

Prover 证明: inputsCioutputsCj=0\text{Prover 证明: } \sum_{\text{inputs}} C_i - \sum_{\text{outputs}} C'_j = 0

其中 CiC_i 是输入的 Pedersen 承诺:C=vG+rHC = vG + rH。证明者需要证明 vinvout=0v_{\text{in}} - v_{\text{out}} = 0 而不泄露具体数值。

Bulletproofs+ 将证明大小从 ~13 KB 压缩到 ~1.4 KB,显著提升链上效率。


10.4.2 Zcash:可选隐私与 zk-SNARK

设计哲学

"透明是默认,隐私是选择。"

Zcash 采用可选隐私模式:用户可以选择发送透明交易(t-address → t-address,类似比特币)或屏蔽交易(z-address → z-address,完全隐私)。

这种设计有两个后果:

  1. 可用性:交易所可以轻松集成透明地址
  2. 隐私泄漏:如果用户不小心混合使用 t 和 z 地址,可能通过 Heuristic 分析暴露身份

核心技术:zk-SNARK + 承诺

Zcash 的隐私交易(Sapling 之前用 Sprout,Orchard 之后用 Halo2)使用 zk-SNARK 来证明:

(vin,vout,sn, etc.):{承诺之和平衡: vinG+voutG=0nullifiers 唯一签名授权\exists (v_{\text{in}}, v_{\text{out}}, \text{sn, etc.}): \begin{cases} \text{承诺之和平衡: } \sum v_{\text{in}} \cdot G + \sum v_{\text{out}} \cdot G = 0 \\ \text{nullifiers 唯一} \\ \text{签名授权} \end{cases}
sequenceDiagram
    participant U as 用户
    participant S as Shielded Pool
    participant N as 区块链
    
    U->>S: 存入透明资金 → 承诺 Commit
    S->>S: 生成 nullifier(花费标记)
    S->>U: 记录 z-address 私钥
    
    U->>S: 发起屏蔽交易
    S->>S: 用 zk-SNARK 证明<br/>"我有未花承诺的私钥"<br/>+ "nullifier 唯一"<br/>+ "金额平衡"
    S->>N: 提交证明 + nullifiers + 新承诺
    N->>N: 验证 ~2ms(O(1))
    
    Note over N: 验证者仅看到<br/>nullifiers + 承诺<br/>无发送者/接收者/金额信息

Sprout → Sapling → Orchard 的技术演进

版本可信设置证明系统证明时间硬件要求
Sprout需要PHGR13~60 秒64 GB RAM
Sapling需要BLS12-381~7 秒< 1 GB RAM
Orchard无需Halo2~1 秒笔记本可运行

Zcash "Trustless Setup" 的 Orchard 重磅升级意味着用户自己就能生成证明,不再依赖集中式的设置仪式。


10.4.3 横向对比:三场维度的博弈

隐私强度对比

维度MoneroZcash (z-addr)比特币 + 混币以太坊 (非 ZK)
发送者匿名环签名 1/16zk-SNARK 完全隐藏匿名集 k
接收者匿名隐匿地址承诺 + 查看密钥无(地址复用)
金额隐藏RingCT (Bulletproofs)同态承诺 + ZK
可选隐私否(强制)是(可选风险)是(显式操作)是(合约层可选)
量子安全性否(Orchard: 否)

关键权衡

Monero 的优势

  • 隐私是强制的,不存在"误操作透明化"
  • 社区支持,强去中心化
  • 技术简单(三种技术组合,非 ZK)

Monero 的劣势

  • 环签名需要固定大小的"decoy"输入,不可扩展(证明大小随环大小增长)
  • 交易体积较大(~5 KB,比特币的 5-10 倍)
  • 功能扩展受限(智能合约几乎不支持)

Zcash 的优势

  • ZK 证明可高效验证(毫秒级,常数大小)
  • 支持选项透明跨境(链上和链下信息可控)
  • 可用于更复杂的计划(Halo2 支持通用 ZK 电路)

Zcash 的劣势

  • 可选隐私导致元数据泄漏(如果接收方使用 t-addr,全链路暴露)
  • 官方信任设置仪式存在争议
  • 证明生成的计算要求(Sapling 之前需要 GPU)

法律与合规困境

隐私币面临全球监管压力:

  • 日本(2018):交易所强制下架 Monero
  • 韩国:禁止隐私币交易
  • 欧盟:拟议 MiCA 法规要求交易所额外记录隐私交易关联信息
  • Chainalysis / Elliptic:声称可以"追踪"一定比例的 Monero 交易(存在争议)

核心悖论:如果隐私币可以被追踪,那它还叫"隐私币"吗?如果完全不可追踪,又怎么满足 AML/KYC 合规?


TypeScript 模拟:隐私币交易追溯难度评估

typescript
/**
 * 隐私币匿名性评估模拟
 * 比较不同方案的"不可逆追踪熵"
 */
interface PrivacyScheme {
  name: string;
  anonymitySet: number;       // 可用混淆集大小
  ringSize?: number;          // 环签名环大小
  proofSize: number;          // 交易额外数据(字节)
  verificationTime: number;   // 验证时间(毫秒)
  quantumSafe: boolean;
  mandatory: boolean;         // 隐私是否强制
}

function computeTraceabilityEntropy(
  scheme: PrivacyScheme,
  transactionDepth: number,    // 混洗层数
): {
  entropy: number;             // 香农熵 bits
  traceability: number;        // 追溯概率 0-1
  effectiveAnonymitySet: number;
} {
  const n = scheme.anonymitySet;
  const depth = transactionDepth;
  
  // 每层的追溯概率 P(link) = 1/匿名集
  const pLink = 1 / n;
  // 经过 depth 层后,总追溯概率
  const totalPLink = Math.pow(pLink, depth);
  
  // 熵 = -log2(P_totalLink)
  const entropy = -Math.log2(totalPLink);
  const traceability = totalPLink;
  const effectiveAnonymitySet = Math.pow(n, depth);
  
  return { entropy, traceability, effectiveAnonymitySet };
}

// 对比模拟
const schemes: PrivacyScheme[] = [
  { name: "Monero (CLSAG)", anonymitySet: 16, ringSize: 16, proofSize: 2500, verificationTime: 50, quantumSafe: false, mandatory: true },
  { name: "Zcash (Orchard)", anonymitySet: 10000, proofSize: 500, verificationTime: 7, quantumSafe: false, mandatory: false },
  { name: "Wasabi CoinJoin", anonymitySet: 100, proofSize: 200, verificationTime: 1, quantumSafe: false, mandatory: false },
  { name: "Bitcoin 裸链", anonymitySet: 1, proofSize: 0, verificationTime: 0, quantumSafe: false, mandatory: false },
];

console.log("3层追踪难度对比:");
console.log("方案 | 单层集 | 3层追溯概率 | 等价匿名集");
for (const s of schemes) {
  const r = computeTraceabilityEntropy(s, 3);
  console.log(`s.name.padEnd(18){s.name.padEnd(18)} |{s.anonymitySet.toString().padStart(6)} | r.traceability.toExponential(2).padStart(12){r.traceability.toExponential(2).padStart(12)} |{r.effectiveAnonymitySet.toExponential(2).padStart(14)}`);
}
// 输出:
// Monero (CLSAG)     |     16 |     2.44e-04 |         4.10e+03
// Zcash (Orchard)    |  10000 |     1.00e-12 |         1.00e+12
// Wasabi CoinJoin    |    100 |     1.00e-06 |         1.00e+06
// Bitcoin 裸链       |      1 |     1.00e+00 |         1.00e+00

10.4.4 知识地图

mindmap
  root((隐私币))
    Monero
      强制隐私
      环签名 n=16
      隐匿地址
      RingCT(Bulletproofs+)
      优点: 无信任假设 无CRS
      缺点: 大交易体积 不扩容
    Zcash
      可选隐私
      zk-SNARK(Halo2)
      承诺池
      优点: 小证明 快验证
      缺点: 可选→元数据泄漏
    对比维度
      发送者匿名
      接收者匿名
      金额隐藏
      量子安全
      法律合规

> ← 上一节:10.3 零知识证明技术详解 | 前往 → 10.5 隐私技术全景对比与决策 |*

评论

0

评论加载中…

发表评论

0/2000