Zcash 升级将在区块 3,543,405 锁定 Sprout 代币,即使持有正确密钥也无效
要点速览
- •NU7 升级在区块 3,543,405 激活后将终止 Sprout 消费,因为激活后仍然有效的两种交易格式——版本 5 和版本 6——均不支持该池。
- •Sprout 持有者必须依赖第三方恢复工具(如 Sovright 开发的 Argos 应用),因为已废弃的 zcashd 是最后一个能够构建 Sprout 交易的受维护软件。
- •恢复速度取决于备份内容:已存储可消费票据数据的钱包文件可在数秒内完成清扫,而裸密钥则需要约 26 GB 的全网扫描,耗时数小时。
- •遗留的 Sprout 资金不会被销毁,仍计入 Zcash 的已发行供应量,且 ZIP 2003 声明 Sprout 消费可能永远不会恢复。
- •任何 Sprout 转账的确认应来自支持 NU7 的节点软件(如 Zebra 7.0.0),因为过时节点可能仍在线并遵循 NU7 之前的链。

根据 CoinDesk 的报道援引的 ZecStats 数据,截至周四上午,Zcash 的 Sprout 屏蔽池中仍有约 12,226 枚 ZEC,较一周前的约 22,263 枚有所下降。其中大部分流出发生在周日,约有 9,094 枚 ZEC 离开该池。按照 CoinDesk 使用的每枚 1,300 美元的价格计算,剩余代币价值约 1,600 万美元。
截止点是区块 3,543,405——这是 ZIP 259 中设定的主网激活高度,即 NU7 网络升级的部署规范,并重复出现在 Zcash 基金会的 Zebra 7.0.0 发布公告中。据 CoinDesk 报道,Blockchair 显示周四 05:24 UTC 时链高度为区块 3,542,391,按当前 75 秒的区块目标计算,激活时间约在周五 02:30 UTC 左右。真正的进度由矿工决定,因此该估计值可能向任一方向偏移。因此,这一日期是共识有效性边界,而非有保障的服务截止期限:决定性事件是区块被挖出,而钱包和托管方可能各自设定自己的运营截止时间。
在钱包中看起来相同的两种故障
截止期限背后的规则范围比 Sprout 更广。ZIP 2003 规定自 NU7 起禁止所有版本 4 交易,而 ZIP 259 指出这包括纯透明地址付款和 Sapling 付款。Sprout 之所以受影响,是因为两种幸存的格式均不支持它:随 NU5 引入的版本 5,以及随 NU6.3 引入的版本 6。
因此,一个拒绝发送的钱包可能面临两种问题之一,而其中只有一种能在激活后继续解决:
仍留在 Sprout 中的代币。 受影响之处:唯一能够消费它们的交易格式将失效。区块之后:不存在受支持的替代格式。窗口在区块 3,543,405 关闭。
过时钱包中的透明地址或 Sapling ZEC。 受影响之处:软件构建的版本 4 付款将被网络拒绝。区块之后:余额仍可消费,支持版本 5 或 6 的软件可以重新创建该笔付款——重新签名旧交易无效。只要更新软件,窗口保持开启。
提前准备的付款需要单独检查。ZIP 259 提醒,版本 5 和版本 6 交易在激活前后也并非自动有效,因为其签名承诺了某个共识分支 ID。在升级前离线保存或签名的付款,如果落入截止点之后的区块,无论其格式如何都可能失败。
托管余额由持有它们的平台负责。Zcash 基金会的公告直接向钱包、交易所及其他代用户构建交易的服务说明了版本 4 规则。
恢复材料决定时间表
对 Sprout 持有者而言,更棘手的问题是找到仍能构建此类转账的软件。ZIP 2003 指出,在 NU6.3 之前不久废弃的 zcashd 移除了最后一个仍提供 Sprout 钱包功能的受维护软件。共识规则在激活前仍接受 Sprout 消费,但持有者只能依赖第三方恢复工具来创建此类交易。
首先要识别代币。Zcash 的地址文档列出了以 zc 为前缀的 Sprout 屏蔽地址和以 zs 为前缀的 Sapling 地址。前缀只表明地址属于哪个池,并不能说明其中是否仍有余额。
备份比地址更重要。Zcash 的备份说明将旧版屏蔽密钥与 Sapling 地址背后的助记词分开处理。Argos 恢复应用的开发商在其文档中补充了两个细节:ZecWallet Lite 的助记词无法重建该钱包独立生成的 Sprout 密钥;而 zcashd 的 wallet.dat 完全没有主助记词,因为其密钥是逐个存储的——只能从文件中恢复其中包含的密钥。
备份的内容也决定了恢复所需的时间。根据 Argos 1.2.0 发布说明,已经存储了可消费 Sprout 票据数据的钱包文件可以在几秒钟内完成清扫,无需扫描。而没有该票据数据的密钥,例如独立的消费密钥或导入 zcashd 时未重新扫描的密钥,则需要进行一项扫描,尝试解密链上历史上所有屏蔽交易,因为不存在 Sprout 地址索引。该开发商网站指出,在主网上对裸密钥进行 Sprout 扫描大约需要传输 26 GB 数据,并警告扫描会持续数小时。在截止期限以小时计的情况下,这一差距可能决定转账是否完全可行。
目的地也是固定的。Sprout 中的价值只能转入 Sapling 池,因此发布说明要求提供 zs1 地址或带有 Sapling 接收方的统一地址(Unified Address)。此后将资金再转入 Orchard 是持有者另行发起的一笔独立交易。
在截止期限压力下审查救援工具
Argos 是 Sovright 开发的第三方桌面应用,在 ZecWallet Lite 停止维护后推出。开发商网站称,该应用经 Least Authority 独立审计,在本地处理助记词和密钥,仅在网络连接时读取公开区块数据并发送最终清扫交易。对于大额余额,开发商建议使用全新电脑,因为恢复出厂设置无法清除长期使用机器上的固件级恶意软件。
在按下 sweep 之前:
- 下载环节。 macOS 和 Windows 构建版本均经过代码签名。每个 GitHub 发布都附带 SHA256SUMS 文件和构建证明,可通过
gh attestation verify <file> --repo sovright/argos验证。 - 分配比例。 清扫确认页面包含一笔默认为 10% 的可选 Sovright 捐款。两项输出均在确认前显示,因此请谨慎设定该比例。
- 沟通渠道。 开发商表示,其客服绝不会索要助记词、钱包文件、密码短语或密钥。在任何平台上提出此类请求的行为均属诈骗。
清扫确认后,开发商建议废弃旧的恢复材料,因为恢复机器上的恶意软件可能已经捕获了它。原始钱包文件应保留,直至其所覆盖的每个池均已被清空。
只有升级后的节点才能确认转账
一笔已签名并广播的 Sprout 转账,只有在激活高度之前的区块中被包含后才算生效。确认信息的读取来源同样重要。ZIP 259 免除了旧节点软件须在升级前失效的常规要求,并警告不受支持的节点可能仍在线并遵循 NU7 之前的分支。Zcash 基金会的公告称,未升级的节点将遵循另一条链。持有者若查询过时的节点,可能看到升级后网络不认可的转账,因此确认应来自支持 NU7 的软件,例如 Zebra 7.0.0——首个支持主网 NU7 的稳定版 Zebra 发布。
流出过程也是公开的。ZIP 2003 的隐私章节指出,价值离开 Sprout 会改变该池的可见余额,且较短的流出窗口使交易时间和特殊金额更容易与特定持有者关联。在周三仅有约 40 枚 ZEC 流动的情况下,一笔较晚的提款几乎没有可供融入的周边流量。
遗留代币仍计入账面
由 Daira-Emma Hopwood 撰写的 ZIP 2003 不会注销或销毁 Sprout 资金。激活时该池的余额仍留在 Zcash 的已发行供应量之内,包括在 ZIP 237 的网络可持续性机制计算中。因此,Zcash 的供应量核算仍会统计这些目前无法移动的代币。
该提案留下了一条理论上的回归路径——或在社区认为值得的情况下增加另一种取回机制。提案同时声明,Sprout 消费可能永远不会恢复。
接受这一代价的理由在于节点安全。ZIP 2003 指出,自 Sapling 升级以来,Sprout 一直与 Sapling 共享 Groth16 证明系统和 BLS12-381 曲线。其 JoinSplit 电路以及对空指针(nullifier)和票据承诺的处理仍然拖累接受新交易的代码,包括作为拒绝服务攻击面。由于 Sprout 几乎无人使用,节点实现没有动力去优化该路径。升级范围的确定过程在 Coindoo 关于 NU7 代币持有人投票的报道中有所介绍。
代价落在范围狭窄的一群人身上:Sprout 密钥存放在未检查或已丢失的备份中的持有者。公开的池余额无法区分这两种情况。决定结局的数字,是区块 3,543,405 被挖出后 ZecStats 数据中 Sprout 池的价值——它将显示此次升级留下了多少 ZEC。此后若有 ZIP 提议增加取回机制,才是访问权限可能恢复的唯一迹象。
来源:Coindoo