尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

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

发布时间:2026/9/18 22:42:59

资讯中心
01
ARTICLE

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

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),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。