隐私币将"交易隐私"提升为协议原生功能——不是可选功能,不是通过复杂的混币技术事后添加,而是从底层就隐藏交易的发送者、接收者和金额。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 个成员的环:
这意味着每个外部观察者猜对真实发送者的概率只有 6.25%。经过 3 层混洗后:
2. 隐匿地址:一次性接收
每个 Monero 交易为接收方生成一次性公钥,只有接收方的"扫描私钥"可以检出这笔交易。这消除了"地址复用"的追踪风险。
3. RingCT:隐藏金额
在 2017 年(v0.14.0 后),Monero 使用 Bulletproofs(后接 Bulletproofs+)来隐藏交易金额,同时保证输入总额等于输出总额:
其中 是输入的 Pedersen 承诺:。证明者需要证明 而不泄露具体数值。
Bulletproofs+ 将证明大小从 ~13 KB 压缩到 ~1.4 KB,显著提升链上效率。
10.4.2 Zcash:可选隐私与 zk-SNARK
设计哲学
"透明是默认,隐私是选择。"
Zcash 采用可选隐私模式:用户可以选择发送透明交易(t-address → t-address,类似比特币)或屏蔽交易(z-address → z-address,完全隐私)。
这种设计有两个后果:
- 可用性:交易所可以轻松集成透明地址
- 隐私泄漏:如果用户不小心混合使用 t 和 z 地址,可能通过 Heuristic 分析暴露身份
核心技术:zk-SNARK + 承诺
Zcash 的隐私交易(Sapling 之前用 Sprout,Orchard 之后用 Halo2)使用 zk-SNARK 来证明:
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 横向对比:三场维度的博弈
隐私强度对比
| 维度 | Monero | Zcash (z-addr) | 比特币 + 混币 | 以太坊 (非 ZK) |
|---|---|---|---|---|
| 发送者匿名 | 环签名 1/16 | zk-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 模拟:隐私币交易追溯难度评估
/**
* 隐私币匿名性评估模拟
* 比较不同方案的"不可逆追踪熵"
*/
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.anonymitySet.toString().padStart(6)} | {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+0010.4.4 知识地图
mindmap
root((隐私币))
Monero
强制隐私
环签名 n=16
隐匿地址
RingCT(Bulletproofs+)
优点: 无信任假设 无CRS
缺点: 大交易体积 不扩容
Zcash
可选隐私
zk-SNARK(Halo2)
承诺池
优点: 小证明 快验证
缺点: 可选→元数据泄漏
对比维度
发送者匿名
接收者匿名
金额隐藏
量子安全
法律合规
> ← 上一节:10.3 零知识证明技术详解 | 前往 → 10.5 隐私技术全景对比与决策 |*
评论
0评论加载中…