Zcash 1.1.2-rc1 发布说明深度解读:deprecation 政策收紧与 Sapling 密钥/地址支持落地

发布时间:2026/11/11 6:39:53

Zcash 1.1.2-rc1 发布说明深度解读:deprecation 政策收紧与 Sapling 密钥/地址支持落地 Zcash 1.1.2-rc1 发布说明深度解读deprecation 政策收紧与 Sapling 密钥/地址支持落地【免费下载链接】zcashZcash - Internet Money项目地址: https://gitcode.com/GitHub_Trending/zc/zcash本篇文章以 Zcash 官方 1.1.2-rc1 发布说明doc/release-notes/release-notes-1.1.2-rc1.md为核心脉络重点剖析两大主题-disabledeprecation配置项被移除所代表的节点弃用deprecation政策收紧以及围绕 Sapling 密钥体系Bech32 编码、钱包密钥类、hashFinalSaplingRootRPC 字段的一批落地改动。读者通过本文可以掌握 Zcash 的节点自动弃用机制如何工作、在何种情况下会强制关机以及 1.1.2-rc1 为 Sapling 激活所做的地址编码与钱包基础设施准备。版本背景1.1.2-rc1 在 Zcash 路线图中的位置1.1.2-rc1 是 Zcash 主网 Sapling 升级激活高度约 419200筹备期间的一个重要候选版本。从 changelog 可以看出该版本的核心工作集中在三块收紧节点生命周期政策移除-disabledeprecation选项强化官方版本到期即停的弃用纪律Sapling 地址与密钥编码落地引入 Sapling 专用的 Bech32 HRPHuman-Readable Part可读前缀实现 Sapling 支付地址、扩展密钥、查看密钥的编解码Sapling 状态可见性把hashFinalSaplingRoot写入区块模板与区块查询 RPC 输出并为 Sapling 锚点anchor、SaplingNote 补充单元测试。以下按发布说明的结构逐项展开并结合当前仓库源码验证实现细节。-disabledeprecation移除官方节点将按策略强制弃用背景1.0.9 引入的自动弃用机制发布说明指出自 1.0.9 起Zcash 公司构建的zcashd版本引入了**自动弃用automatic deprecation**机制官方发布的节点软件在运行到预设区块高度后会自动关闭以推动用户升级。当时为了给用户提供留在特定版本的通道加入了配置项-disabledeprecation。移除原因错误暗示弃用版本仍受支持1.1.2-rc1 移除了该选项理由是它错误地暗示被弃用的版本仍然受支持。实际上弃用政策意味着官方不再维护、不再提供支持用户停留在旧版本只会暴露在无人维护的风险中。移除后官方zcashd版本将始终按照既定弃用政策发布时定义为发布后 16 周自动关机不再提供任何绕过开关。从当前仓库源码 src/deprecation.cpp 可以看到该机制的强制执行逻辑void EnforceNodeDeprecation(const CChainParams params, int nHeight, bool forceLogging, bool fThread) { // Do not enforce deprecation in regtest or on testnet std::string networkID params.NetworkIDString(); if (networkID ! main) return; int blocksToDeprecation DEPRECATION_HEIGHT - nHeight; if (blocksToDeprecation 0) { // ... 输出弃用错误信息AlertNotify 后调用 StartShutdown() 强制退出 StartShutdown(); } else if (blocksToDeprecation DEPRECATION_WARN_LIMIT || (blocksToDeprecation DEPRECATION_WARN_LIMIT forceLogging)) { // ... 输出即将弃用警告MSG_WARNING } }值得注意的实现细节仅在主网main强制执行testnet 与 regtest 上的节点不受自动弃用约束方便测试与开发到达DEPRECATION_HEIGHT即StartShutdown()节点在弃用区块高度到达时主动关闭日志、-alertnotify与 UI 弹窗同步给出错误提示提前 14 天窗口预警源码 src/deprecation.h 定义了DEPRECATION_WARN_LIMIT 14 * 24 * EXPECTED_BLOCKS_PER_HOUR即弃用前约 14 天按每小时 48 区块估算开始输出MSG_WARNING警告。发布说明中提到当前 16 周是当时1.1.2-rc1的政策口径仓库现版本的弃用窗口已演进为RELEASE_TO_DEPRECATION_WEEKS 7src/deprecation.h读者应以自己所用版本的源码常量为准。用户的两条出路不再有官方捷径发布说明明确给出移除后用户可选的两种方案自行编辑并编译源码改动弃用常量如RELEASE_TO_DEPRECATION_WEEKS、DEPRECATION_HEIGHT后重新构建自己的zcashd使用第三方构建的版本获取他人编译的、修改过弃用策略的软件并自行承担其支持责任。无论哪种方式语义都变得清晰你运行的软件不再受 Zcash 公司官方支持。这实际上是把弃用豁免从运行时配置-disabledeprecation转移到了源码级定制这一更重的成本上从而默认保持全网络节点的版本健康度。Changelog 核心解读Sapling 密钥与地址体系落地发布说明的 changelog 按贡献者列出提交摘要其中与 Sapling 直接相关的改动是 1.1.2-rc1 的技术主干下面结合源码逐一展开。Sapling Bech32 HRP主网/测试网/回归网的前缀矩阵Jack Grigg 的提交 chainparams: Add Sapling Bech32 HRPs 为三类网络定义了 Sapling 各类密钥与地址的可读前缀。当前仓库 src/chainparams.cpp 中主网mainnet的配置如下密钥/地址类型主网 HRP测试网 HRPchainparams.cppSapling 支付地址PaymentAddresszsztestsaplingSapling 完整查看密钥Full Viewing KeyzviewszviewtestsaplingSapling 传入查看密钥Incoming Viewing KeyzivkszivktestsaplingSapling 扩展支出密钥Extended Spend Keysecret-extended-key-mainsecret-extended-key-testSapling 扩展完整查看密钥Extended FVKzxviewszxviewtestsaplingAdd MacOS support to no-dot-so test、Use CChainParams::Bech32HRP() in zs_address_test 等提交说明 HRP 不是硬编码在编解码器里而是通过CChainParams::Bech32HRP()按网络注入地址测试因此能同时覆盖多网络。Sapling 支付地址以zs开头这一事实直到今天仍是 Zcash 地址最常见的识别特征。ConvertBitsSapling 地址编码的底层算法Sapling 地址/密钥的 Bech32 编码需要把 8 位字节流转换为 5 位数据字data words这一转换由泛化的ConvertBits模板完成。Pieter Wuille 的 Generalize ConvertBits 与 Jack Grigg 的 ConvertBits() - convert from one power-of-2 number base to another、Add examples of ConvertBits transformation 将其提炼为通用工具。当前实现位于 src/util/strencodings.htemplateint frombits, int tobits, bool pad, typename O, typename I bool ConvertBits(const O outfn, I it, I end) { size_t acc 0; size_t bits 0; constexpr size_t maxv (1 tobits) - 1; constexpr size_t max_acc (1 (frombits tobits - 1)) - 1; while (it ! end) { acc ((acc frombits) | *it) max_acc; bits frombits; while (bits tobits) { bits - tobits; outfn((acc bits) maxv); } it; } if (pad) { if (bits) outfn((acc (tobits - bits)) maxv); } else if (bits frombits || ((acc (tobits - bits)) maxv)) { return false; } return true; }头文件注释中保留了官方的转换示例ConvertBits8, 5, true000000 - 0000000000、202020 - 0400100200、757575 - 0e151a170a、abcdef - 150f061e1e、ffffff - 1f1f1f1f1e便于开发者对照验证实现正确性。在 src/key_io.cpp可以看到基于该转换的序列化尺寸计算即 changelog 中 Add comment about size calculations for converted serialized keys 的落点const size_t ConvertedSaplingPaymentAddressSize ((32 11) * 8 4) / 5; const size_t ConvertedSaplingExtendedFullViewingKeySize (ZIP32_XFVK_SIZE * 8 4) / 5; const size_t ConvertedSaplingExtendedSpendingKeySize (ZIP32_XSK_SIZE * 8 4) / 5;Sapling 支付地址 32 字节 pkd 11 字节 diversifier转为 5 位字后按 69 字符校验扩展密钥尺寸来自 ZIP 32 的 XFVK/XSK 常量DecodeSaplingsrc/key_io.cpp与EncodeSapling成对出现DecodeAny/DecodeSapling按类型元组HRP 尺寸逐个尝试解析实现输入任意地址字符串、自动识别 Sapling 地址/查看密钥/扩展密钥的入口。钱包中的 Sapling 密钥类与 librustzcash APIJay Graber 的 8 个提交把 Sapling 密钥类引入钱包侧Add Sapling key classes to wallet, with new librustzcash APIs 依赖新增的 Rust 绑定s/SaplingInViewingKey/SaplingIncomingViewingKey 统一了命名Incoming Viewing KeyIVKMake diversifier functions return option 表明 diversifier 相关函数改为返回Option语义以显式表达该 diversifier 可能无效Add json test vectors for Sapling key components 为密钥组件补充了 JSON 测试向量。仓库中对应的 Rust 封装位于 src/rust 目录Sapling 密钥相关的测试向量可在 src/gtest 与src/test中找到。hashFinalSaplingRoot区块模板与区块查询的字段扩展Eirik Ogilvie-Wigley 的提交 Add hashFinalSaplingRoot to getblocktemplate 与 Jack Grigg 的 Add hashFinalSaplingRoot to getblockheader and getblock output 把 Sapling 树的最终根哈希暴露到 RPC 输出。该字段的意义在于区块头的 commitments 中需要提交 Sapling 状态根轻客户端和矿工需要据此构造/验证区块。从当前仓库源码看数据结构层面区块索引CBlockIndex新增hashFinalSaplingRoot字段src/chain.h并在序列化时与hashBlockCommitments建立一致性校验src/txdb.cpp共识层面区块连接时用 Sapling 树的根填充该字段维护每个区块对应唯一最终 Sapling 锚点的不变量src/main.cppRPC 层面getblock/getblockheader输出finalsaplingrootsrc/rpc/blockchain.cpp、src/rpc/blockchain.cppgetblocktemplate则输出finalsaplingroothashsrc/rpc/mining.cpp其帮助文本已标注 DEPRECATED为后续统一字段名的过渡。钱包侧在构造 Sapling 交易时也依赖该锚点wallet.cpp从锚点区块索引取hashFinalSaplingRoot作为见证树的根src/wallet/wallet.cpp。Sapling 锚点与 SaplingNote 的测试保障发布说明收录了 Eirik Ogilvie-Wigley 的 Add tests for sapling anchors、Simon Liu 的 Add SaplingNote class and test_sapling_note unit test以及 Add BOOST_TEST_CONTEXT to distinguish sprout v. sapling。仓库中对应的单测文件为 src/gtest/test_sapling_note.cpp其验证了 SaplingNote 的序列化、承诺与无效化器nullifier计算等核心性质锚点相关测试则与 src/gtest/test_merkletree.cpp 中 Sprout 树测试形成对照通过BOOST_TEST_CONTEXT区分 Sprout 与 Sapling 两套见证树。其余值得留意的改动发布说明 changelog 中与 Sapling 主线平行的一批提交也值得快速盘点基础库现代化Replace boost::array with std::array 将boost::array全面替换为 C11 标准库的std::array跨平台安全检测Add Mach-O 64-bit detection to security-check.py、Skip ELF-only sec-hard checks on non-ELF binaries 使security-check.py能识别 macOS 的 Mach-O 64 位二进制并跳过 ELF 专属检查脚本见 contrib/devtools/security-check.py脚本可移植性Use portable #! in python scripts (/usr/bin/env) 与 Favour python over python2 统一了 Python 脚本的解释器声明共识安全Simon Liu 的 Closes #3328. Send alert to put non-Overwinter nodes into safe mode 通过 alert 机制让未升级 Overwinter 的节点进入安全模式RPC 体验Clarify help that signmessage only works on taddrs 明确signmessage仅适用于透明地址taddrFix parsing parameters in getnetworksolps 修复了getnetworksolps参数解析。升级与验证建议对于正在运行旧版官方zcashd的运维者结合本文分析给出如下操作建议确认弃用状态查询本节点当前区块高度与所用版本的DEPRECATION_HEIGHTsrc/deprecation.h对比若已进入最后 14 天警告窗口日志与 UI 会明确提示及时升级由于-disabledeprecation已移除且无法回退唯一官方路径是升级到最新正式版本切勿在生产环境长期停留在 1.1.2-rc1 这类候选版本自定义弃用策略只能靠源码定制需要延长运行窗口的团队只能修改 src/deprecation.h 中的弃用常量自行编译并将该构建视作第三方软件管理验证 Sapling 字段升级后可通过getblock/getblockheader查看finalsaplingroot输出确认节点已具备 Sapling 状态追踪能力为后续 Sapling 激活后的挖矿与钱包操作做好准备。总结1.1.2-rc1 是一份典型的政策 基建双线发布说明一边通过移除-disabledeprecation把弃用策略从可绕过收紧为强制另一边完成了 Sapling 密钥/地址的 Bech32 编码、钱包密钥类与 RPC 状态字段等一整套落地工作。对于理解 Zcash 的节点生命周期管理以及 Sapling 地址体系zs前缀、ConvertBits编码、hashFinalSaplingRoot锚点的形成过程这份发布说明及其对应源码都是非常清晰的参考材料。【免费下载链接】zcashZcash - Internet Money项目地址: https://gitcode.com/GitHub_Trending/zc/zcash创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/10 3:37:22

Colibri纯C推理引擎:用mmap与量化跑百B级MoE大模型

1. 先把 Colibri 是什么说清楚colibri 这个词在法语和西班牙语里都是蜂鸟的意思。蜂鸟有几个特点:体重只有几克,翅膀每秒扇动几十次,能悬停,能倒飞,单位体重的代谢率高得离谱。有意思的是,用这个名字命名的…

2026/11/11 6:37:53

欧洲认证电工证值不值得考?实操考试心里没底怕挂科怎么办?

欧洲认证电工证值不值得考?实操考试心里没底怕挂科怎么办? 实操考试心里没底怕挂科,这是很多准备考取欧洲认证电工证的学员的共同焦虑。尤其是一些从事电工工作的朋友,对这种认证是否真的有必要考、考试难度是否高、能不能顺利通过,心里没底。今天咱们就…

2026/11/11 6:37:53

电工证考前押题怎么拿?全国电工证区别一文说透

电工证考前押题怎么拿?全国电工证区别一文说透 工地太忙根本没时间复习考试,这是很多一线电工的共同烦恼。尤其是像你这种在鹤壁中小施工企业负责项目管理的,经常要兼顾现场施工和证件办理,时间一紧,考证就成了“可有可无”的事。但现实是,…

2026/11/11 6:37:53

电工证报考收费标准值不值得考?实操考试心里没底怕挂科怎么办

电工证报考收费标准值不值得考?实操考试心里没底怕挂科怎么办 实操考试心里没底怕挂科?你不是一个人。不少刚接触电工行业的朋友,尤其是劳务班组负责人,都担心电工证考试不过、挂科,影响后续工作安排。尤其是现在电工证报考收费标准越来越透明,但很多人…

2026/11/11 6:32:53

工地太忙根本没时间复习考试 低压电工证复证时间怎么安排最稳妥

工地太忙根本没时间复习考试 低压电工证复证时间怎么安排最稳妥 工地太忙根本没时间复习考试,这话在咱干电工这行的耳朵里,听得太多了。特别是在郑州的水利工程项目上,施工进度紧,任务重,很多人都在为低压电工证复证时间犯愁。别急,今天就从实际出发,…

2026/11/10 8:12:38

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/11 0:02:26

考低压电工证通过率考试真题与备考技巧

低压电工证通过率高不高?学历不高也能考,值不值得考? 你是不是总听说电工证能帮你找高薪工作,但又担心自己学历不够,考不上?其实,低压电工证考试门槛并没有你想象中那么高,关键是方法对不对。这篇文章就告诉你, 考低压电工证通过率到底有多高 ,…

2026/11/11 0:02:26

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名 你是不是也和我一样,刚毕业就听说低压电工证学时必须达标才能上岗?可一打听,发现报名机构五花八门,价格参差不齐, 不知道去哪报名怕被中介坑…

2026/11/10 20:08:15

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑