Skip to content
全部期权指南
Zcash 隐私阅读约 10 分钟

Zcash 屏蔽池、统一地址与查看密钥详解

了解透明池与 Sapling、Orchard 的区别,发送钱包如何从统一地址中选择接收端,以及查看密钥能披露哪些信息。

本指南内容池是账本状态,不是托管机构

简短摘要

Zcash 不会自动隐藏每笔转账。透明池中的地址和价值流向是公开的;Sapling 与 Orchard 屏蔽池会加密 note 数据,并使用公开的承诺值(commitment)和作废标识(nullifier)进行共识检查。一个统一地址可以打包多种接收端,具体付款的隐私取决于发送钱包选择了哪个接收端,以及价值经过哪些池。

池是账本状态,不是托管机构

Zcash 中的池不是交易所,也不是替用户保管存款的公司,而是受特定共识规则约束的价值状态。透明池使用公开的 UTXO。查看区块链的人可以看到创建了哪个输出、后续哪笔交易花费了它,以及公开的金额。地址本身不等同于法律身份,但公开记录仍会展示地址使用情况和价值流转关系。

屏蔽池以 note(票据)表示价值,而不是公开的 UTXO。网络会记录加密后的 note 数据、承诺树,并检查各池的余额。密码学证明使共识能够验证交易有效性、价值守恒和防止双花,同时普通观察者无法像读取透明输出那样看到接收方及 note 金额。Zcash 协议规范说明了这两种表示方式。

区分当前的 Sapling、Orchard 与不能再注入新价值的 Sprout

Sapling 和 Orchard 是彼此独立的屏蔽池,使用不同的协议和 note 承诺树;它们的余额不是一个可以互换的共同状态。Sprout 是 Zcash 最早的屏蔽协议。ZIP 211 激活后,Sprout 池不再接受新价值,但旧的 Sprout 交易仍留在区块链历史中。

网络状态需要标注日期。官方 ZIP 索引显示,NU6.2 是最近一次已完成的 Mainnet 升级,于 2026 年 6 月 3 日在区块高度 3,364,600 激活。此前为临时缓解漏洞而停用 Orchard,NU6.2 在修正电路规则后重新启用了 Orchard 操作。NU6.3 和 Ironwood 池仍是草案提案,不是当前 Mainnet 规则。参见 ZIP 257、ZIP 索引和草案 ZIP 258。

加密的 note 数据与公开承诺值承担不同作用

屏蔽 note 将池中的价值与接收方的花费权限关联起来。金额、接收方信息和 memo 都经过加密,只有拥有相应接收信息的钱包才能解读。区块链记录加密数据和对 note 的承诺值,而不是 note 明文。承诺值使网络能够检查交易,却不必公开内容。

花费 note 时,交易会公开相应的 nullifier。花费者证明自己知道该 note 并公开 nullifier;网络会检查它此前是否已使用。观察者能看到 nullifier 和承诺树,但不应能判断该 nullifier 对应哪个历史承诺值。这能防止双花,却不意味着所有共识数据都被隐藏。Sapling 和 Orchard 遵循相同的大体思路,但采用不同的密码学组件和证明;花费仍需要对应的私密权限。

统一地址可以打包多种接收端

统一地址(Unified Address,简称 UA)是一串编码后的地址,可包含 Orchard、Sapling、透明 P2SH 和透明 P2PKH 接收端。当前生效的 Revision 0 UA 必须至少包含一个屏蔽接收端。这种编码有意设计为不透明格式,不能仅凭字符串外观判断其中有哪些接收端。ZIP 316 区分已生效的 Revision 0 和仍在提议中的 Revision 2。

发送钱包不会向所有接收端都付款。Revision 0 的优先级依次为 Orchard、Sapling、透明 P2SH、透明 P2PKH。发送方必须使用钱包支持的最高优先级接收端。若钱包支持 Orchard,就应选择 Orchard;若不支持 Orchard、但支持 Sapling,则可以选择 Sapling。因此实际使用的池取决于发送钱包支持哪些协议,而不只是屏幕上显示的地址字符串。

Revision 2 草案提出用 zu 表示仅含屏蔽接收端的地址,用 tu 表示可含透明接收端的格式。官方 ZIP 索引仍将 Revision 2 标为草案,不要把这些前缀当成当前 Mainnet 的常规 UA 格式。发送前应在钱包确认页查看地址类型、所选网络和实际接收端。

跨越池边界后,价值流可能再次变得可见

从透明池转入屏蔽池(t→z)时,可以花费公开 UTXO 并创建 Sapling 或 Orchard note。链上观察者能看到透明输入、透明池的变化,以及进入屏蔽池的净价值;但看不到普通屏蔽接收地址,也不能像透明 UTXO 一样读取每张 note 的金额。因此,将价值转入屏蔽池仍会留下边界信息。

反向转账(z→t)会公开透明输出的地址和金额,屏蔽池余额的相应变化也可能被观察到。在同一个池内创建 note 的屏蔽付款可能隐藏接收方和金额;而 Sapling 与 Orchard 之间的转移可能使各池余额变化成为线索。公开的边界金额本身不能确定某个人或旧 note,但可以结合金额、时间和外部记录分析。

所以不要只问地址是否屏蔽,还要看价值从哪里开始、经过哪些池。交易所提现、商户付款或时间和金额已知的个人转账,可能与公开的池边界信息相互印证。这不会自动揭示每张 note 的所有者或内部路径,但可能缩小可能范围。

无文字概念图:透明账本、两个加密 note 池、多个接收方,以及单独的只读查看路径
这幅无文字、无真实链上数据的概念图,对比公开可见的透明输出、加密 note 池与单独的查看路径。实际可见信息取决于接收端选择、池边界、钱包支持情况和密钥范围。

查看密钥提供读取权限,不提供花费权限

ZIP 316 将查看密钥定义为查看发送到某地址的付款所需的信息。完整查看密钥(Full Viewing Key,FVK)还可以查看从该地址发出的付款信息。可从 FVK 派生传入查看密钥(Incoming Viewing Key,IVK),再从 IVK 派生地址。统一查看密钥可以打包多个协议的查看密钥条目。

仅凭查看密钥不能签署花费交易;花费需要独立的 spending key 或签名系统。但查看密钥也不是无害的公开信息。密钥类型和钱包实现决定了能看到哪些交易;账户级密钥可能披露的内容多于单个收款地址。与审计人员或服务商共享前,先确认查看范围、保留期限、删除方式,以及是否会与其他地址信息合并。

查看密钥不会消除原本公开的线索:即使没有它,透明输入和输出、金额与时间也可以被分析。反过来,不支持相关池的区块浏览器或钱包,也可能无法显示已经记录在链上的屏蔽交易。“应用里看不到”不代表“链上不存在”。

屏蔽交易不会隐藏所有关联

可见信息取决于池和接收端类型。完全透明的资金流会暴露地址、金额和 UTXO 关联。屏蔽付款会加密 note 的接收方和价值,但承诺值、nullifier、时间与协议数据仍会出现在链上。跨池边界、钱包支持的池、已知付款时间、交易所记录和共享的查看密钥都可能提供不同线索。

统一地址不会强制每笔付款都使用 Orchard。所选接收端可能取决于钱包版本、设置、实现方式和交易路径。不要只因粘贴了地址就判断隐私属性,应检查交易预览或最终结果。[Monero 隐私指南](/zh/learn/monero-private-transactions-stealth-addresses-ring-signatures-ringct-explained)介绍了另一种设计;[Bitcoin 地址复用指南](/zh/learn/bitcoin-address-reuse-privacy-transaction-linkability-explained)则对比了透明账本。

网络层隐私是另一层问题。RPC 服务商、轻钱包服务器、交易所或支付服务可能观察交易创建或转发请求,并在链外保存 IP、账户或时间信息。密码学证明不会自动删除服务日志。与其声称绝对匿名,不如确认哪些服务获得了元数据、如何保存这些数据。

同时检查地址与交易结果

首先确认钱包连接的是预期的 Mainnet 或 Testnet。确认付款时,核实收款方提供的是统一地址,并查看钱包实际选择了哪个接收端。UA 字符串无法直观看出接收端列表,应在钱包里检查池、金额、memo 和手续费。如果收款方要求屏蔽付款,而预览显示透明输出,应先检查双方钱包是否支持相应协议,再发送。

调查已发生的交易时,应匹配交易 ID 和网络,再查看输入和输出涉及哪些池。透明地址和金额可以在公开浏览器中看到;不支持 shielded 功能的工具可能无法显示 note 详情。如果需要查看密钥,先明确用途及其可见范围;不要把 spending key 或 viewing key 粘贴到陌生网站。托管与自托管钱包指南也解释了签名责任。

不要断言“我用了屏蔽地址,所以付款完全私密”,也不要因为“浏览器没显示金额”就认定转账没有发生。钱包历史、网络、交易 ID、链上状态、确认数和查看权限是不同事实。若收款方需要确认到账,还要确认其钱包支持相关池并已完成同步。

用假设付款追踪接收端选择与可见信息

假设 Lee 从一个透明 UTXO 向包含 Orchard、Sapling 和透明接收端的 Revision 0 UA 发送 1.25 ZEC。这个金额仅用于说明,不代表手续费率或钱包默认值。如果 Lee 的钱包支持 Orchard,ZIP 316 的优先级规则会选择 Orchard。公开链上可见透明输入和边界信息,例如进入屏蔽池的净价值;但不会像普通公开输出那样显示收款人的屏蔽地址和 note 金额。

如果 Lee 的钱包不支持 Orchard、但支持 Sapling,就可以选择 Sapling。完全不支持屏蔽池的钱包,在地址和付款格式允许的情况下可以使用透明接收端。Revision 0 UA 必须含有屏蔽接收端,但发送方只能选择钱包支持的接收端。同一个 UA 因此可能在不同钱包中使用不同池,也留下不同的公开边界信息。

最后,如果收款方单独把查看密钥交给记账服务,该服务可能看到密钥范围内的屏蔽活动。钱包显示已收款、浏览器不显示 note 详情、区块链依据共识记录了交易,是三件不同的事。统一地址方便兼容多代协议,但不保证完全隐私,也不会代替接收端选择、密钥管理或网络信息保护。

协议一手资料

常见问题

Q1每笔 Zcash 交易的地址和金额都会隐藏吗?

不会。透明池交易会公开 UTXO、地址和金额。统一地址可以含有多个接收端,因此要查看发送钱包实际选择了哪一个。

Q2统一地址含有 Orchard,就一定通过 Orchard 收款吗?

若发送钱包支持 Orchard,且处理的是包含该接收端的 Revision 0 UA,ZIP 316 的规则要求选择 Orchard。不同钱包支持的接收端可能不同,应检查付款预览。

Q3可以用 Viewing Key 转走资金吗?

不可以。查看密钥用于读取其范围内的交易信息。花费需要独立的 spending key 或签名权限;查看密钥也应妥善保管,因为它可能披露隐私数据。

资料来源与延伸阅读

报告问题

我们会准备一封包含本文链接的邮件。发送后,Mark 才会收到你的反馈

快速检查

读完指南后,用 3 道题检查一下

问题 1 / 3

问题 01

屏蔽 note 写入链上时,普通观察者会看到什么?

选择答案即可查看解释

期权术语表