再次打开 Zcash 软件钱包的收款页面,你可能会发现:今天显示的 u1... 地址,和上一次看到的不一样。
没有更换钱包,也没有新建账户,为什么收款地址变了?这串陌生的新地址,还能放心用来收款吗?
地址变化,并不一定意味着出了问题。 同一个 Zcash 账户可以生成多个不同的收款地址。但“地址可以变化”和“眼前这个地址确实属于我”,是两回事。
Keystone 的 Verify Unified Address(验证统一地址) 功能,就是帮助你确认后者:扫描软件钱包展示的地址二维码,让硬件设备独立核对它与当前钱包的关系。
一个地址“有效”,不代表这个地址“属于你”。
地址为什么会变?
我们很容易把一个钱包和一个固定地址画上等号。但在 Zcash 中,同一个账户可以拥有多个接收地址,不需要每生成一个地址,就创建一个新钱包。
支持地址轮换的软件钱包,可以在不同的收款场景中展示新的地址。这有助于减少重复使用同一地址带来的关联,保护用户的隐私。
所以,两个看起来完全不同的统一地址,仍然可能属于同一个账户。
你不需要记住每一串地址,但需要确认正在使用的这一个,确实属于自己的钱包。
一个统一地址,可以包含不同的收款方式
本文讨论的 u1... 地址,是 Zcash 的 Unified Address(统一地址,简称 UA)。
它看起来是一串地址,里面却可以包含不同的收款方式。这些收款信息在技术上叫作 Receiver,可以简单理解为地址里的“收款入口”。
其中,Transparent 是透明收款方式,相关交易信息公开可见;Sapling 和 Orchard 则是两种不同的隐私收款方式,用来保护交易信息。
因此,“这个统一地址包含 Sapling”,简单来说就是:这个地址里也有一个通过 Sapling 接收 ZEC 的入口。 你不需要另外创建一个钱包,也不需要先理解它背后的技术原理。
一个统一地址不一定同时包含这三种入口。付款方的钱包需要支持统一地址,并能使用其中兼容的收款方式,才能按照协议规则选择入口完成付款。
统一地址的价值就在这里:把不同的收款方式放在一起,减少用户在不同地址类型之间做选择的麻烦。
不过,这也意味着,验证一个统一地址,不能只检查其中某一部分,就认定整个地址都属于你。
Keystone 验证的,不只是地址格式
软件钱包可以告诉你“这是一个有效的 Zcash 地址”,但这还不足以回答“这是我的地址吗”。
Keystone 提供的是一个来自硬件设备的独立核对结果。本文介绍的验证流程,核对的是地址是否属于当前 Keystone 钱包的 Account 0,也就是编号为 0 的 Zcash 账户。
这个过程不是拿新地址和某一条旧地址做比较。Keystone 会根据设备中的钱包信息,重新计算并核对地址里的收款信息。
在这套流程中,设备先检查 Orchard 部分,确认它与当前账户的关系及对应的地址位置;如果地址中还包含受支持的 Transparent 部分,也会继续核对。
这就是为什么,一个从未在设备上显示过的新地址,仍然可能通过验证。
Keystone 确认的是“这个地址是否来自当前账户”,而不是“这个地址以前有没有出现过”。
四种验证结果,一眼看懂
因为一个统一地址可能包含多个收款入口,而设备对不同部分的验证能力并不完全相同,所以结果不只有“成功”和“失败”。
| 设备提示 | 它代表什么 |
|---|---|
| Zcash Address Verified | 验证通过。地址中的收款信息全部与当前 Account 0 匹配,没有尚未验证的部分。 |
| Zcash Address Not Fully Verified | 未完全验证。已检查的部分都匹配,但 Sapling 部分尚未得到确认。 |
| Zcash Address Not Verified | 验证不通过。设备已经发现至少一部分收款信息与当前 Account 0 不匹配。 |
| Invalid QR Code | 当前扫描内容不符合这个功能的输入要求,无法进入相应的验证流程。 |
最容易混淆的,是中间两种状态。它们并不是“程度不同的失败”,而是两个不同的结论。
未完全验证,不等于验证不通过
Not Fully Verified:还有一部分没有确认
假设一个统一地址同时包含 Orchard、Transparent 和 Sapling 三种收款信息。
Keystone 已经确认 Orchard 和 Transparent 都与当前账户匹配,但本文介绍的验证流程尚未核对 Sapling 部分。
这时,设备没有在已检查的内容中发现问题,但也不能替尚未检查的部分作出保证。因此,它会显示 Zcash Address Not Fully Verified。
你可以把它理解为:
“我能检查的部分都对得上,但还有一部分没有确认。”
这不代表设备已经确认地址有问题,也不代表整个地址已经验证通过。 不能因为其他部分匹配,就推断 Sapling 部分也一定属于当前账户。
这里的限制来自这项功能的验证范围,并不是说 Sapling 地址在技术上无法验证。
Not Verified:已经发现不匹配
另一种情况是,设备已经检查到了明确的不匹配。
例如,Orchard 部分属于当前账户,但 Transparent 部分不匹配;或者 Orchard 部分本身就无法与当前账户对应。这时,设备会显示 Zcash Address Not Verified。
它表达的是:
“这个地址里,已经有一部分与当前账户对不上。”
看到这个结果,建议先不要将该地址用于当前 Keystone 账户收款,检查软件钱包所选的钱包、账户及连接关系是否正确。
两种提示的区别,可以用一句话记住:未完全验证,是还有部分不知道;验证不通过,是已经发现不一致。
为什么透明地址会显示 Invalid QR Code?
你可能会问:既然 Keystone 能检查统一地址里的 Transparent 部分,为什么直接扫描一个 t1... 透明地址,却可能显示 Invalid QR Code?
因为这个功能验证的是统一地址,而不是所有类型的 Zcash 地址。
在统一地址里,设备可以先通过 Orchard 部分确认地址位置,再核对对应的透明收款信息。单独的透明地址不包含当前流程所使用的 Orchard 部分,也不属于这项功能的验证范围。
所以,这里的提示应该理解为:“这个内容不能用当前功能验证。” 而不是:“这个地址在 Zcash 网络上一定无效。”
一个透明地址本身完全可能合法可用,只是不能通过本文介绍的 Verify Unified Address 功能确认归属。这同样是功能范围的区别,不是说透明地址在技术上无法验证。
如何在 Keystone 上验证地址?
整个过程分为三步:
- 在软件钱包中打开收款页面。 找到需要确认的 Zcash 统一地址,并显示它的二维码。
- 在 Keystone 中选择 Verify Unified Address。 使用硬件设备扫描这个地址二维码。
- 查看设备上的验证结果。 根据提示,区分完整验证通过、尚未完全验证、发现不匹配,以及输入不受支持。
如果显示 Not Fully Verified,不要把它当作完整验证通过;建议先向钱包或 Keystone 官方支持确认尚未验证部分的归属与支持情况。
如果显示 Invalid QR Code,先检查扫描的是不是此功能支持的统一地址二维码,而不是仅凭这条提示判断钱包或地址出了问题。
本文介绍的验证范围为当前 Keystone 钱包的 Account 0。具体支持能力和界面表现,请以所使用的固件版本为准。
地址可以变化,确认不能省略
统一地址让 Zcash 的不同收款方式更容易使用;地址轮换则让同一个账户不必一直使用同一串地址。
Keystone 的地址验证功能,为这个过程增加了一次来自硬件设备的独立确认。
对用户来说,最重要的不是记住每一种底层协议,而是看懂设备已经确认了什么,还有什么没有确认。
地址变了,不必立即担心;但在把它当作自己的收款地址之前,先确认它的归属。
参考资料
以下官方资料用于解释 Zcash 的地址机制,不代表 Keystone 已实现其中的全部功能。
- ZIP 316:统一地址与统一查看密钥 — 统一地址的组成,以及钱包如何选择收款方式。
- ZIP 32:隐私钱包的分层确定性派生 — 同一个账户如何生成多个接收地址。
- ZIP 315:钱包实现最佳实践 — 地址轮换与相关隐私注意事项。
- Zcash 官方文档:地址与资金池 — 透明地址和 Sapling 隐私地址的基础说明。
- ZIP 224:Orchard 隐私转账协议 — Orchard 的设计与背景。