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

发布时间:2026/9/18 22:43:07

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/9/18 22:38:07

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

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

2026/9/19 0:48:14

UML系统设计证据链:从用例到部署的全栈一致性验证

简介:本资源是一份高校《软件系统分析与设计》课程的大作业完整报告,面向计算机、软件工程等专业本科生,聚焦企业级信息系统建模与实践能力培养。报告以ERP系统为案例,系统呈现了需求分析、模块划分(含基础数据维护、生…

2026/9/19 0:48:14

嵌入式工程师能力图谱:从单片机裸机到Linux驱动的四层验证

简介:本资源是一份面向嵌入式软件工程师求职者的高质量技术简历模板与能力范本,适用于应届生、转岗者及3–5年经验的开发者参考学习。简历完整呈现了扎实的嵌入式全栈能力:涵盖C/C/汇编语言基础、AVR/FreeScale/ARM等多平台单片机开发经验&am…

2026/9/19 0:48:14

2026款拯救者Y9000P深度学习环境精准调校指南

1. 为什么2026款拯救者Y9000P值得为深度学习专门调校我上个月把这台刚到手的2026款拯救者Y9000P拆开清灰时,顺手测了下双烤功耗——CPUGPU同时满载,整机稳定输出185W,其中RTX 5090 Laptop独占140W。这个数字不是厂商宣传页上的峰值&#xff0…

2026/9/18 14:13:01

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/19 0:03:10

验证 OpenSpec 兼容性,Cursor 的 Token 从 TaoToken 出

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

2026/9/19 0:03:10

书桌角落的 Mac mini,OpenClaw 通过 TaoToken 跑任务。

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

2026/9/19 0:03:10

oh-my-hermes:打造跨工具的命令编排与插件化工作流

1. 项目概述与设计初衷1.1 它到底是什么先说结论:oh-my-hermes 是一个面向开发者日常终端操作的效率工具套件,核心定位是“把分散在各类命令行工具里的高频操作,统一收拢成一套插件化、可编排的工作流”。项目灵感来源很明显——oh-my-zsh 重…

2026/9/18 14:13:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/18 14:13:02

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/18 14:13:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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