/ home / newsletters /
Bitcoin Optech Newsletter #159
本周的 Newsletter 包括我们定期提供的内容,涵盖过去一个月内 Bitcoin Stack Exchange 上的最佳问答、关于为 Taproot 做准备的最新专栏、新软件的发布与候选发布列表,以及对流行的比特币基础设施软件的显著变更描述。
新闻
本周无重大新闻。
Bitcoin Stack Exchange 精选问答
Bitcoin Stack Exchange 是 Optech 贡献者寻找问题答案的首选场所之一——或者当我们有空时,会帮助那些好奇或困惑的用户。在这一每月特辑中,我们将重点介绍自上次更新以来发布的一些高票问题和答案。
-
● 比特币区块链中的这笔异常交易是什么? Murch 描述了在区块浏览器中标记为“UNKNOWN”的输出。该输出是一个使用特殊公钥的 Segwit v1 输出。正如 0xb10c 指出的那样,这笔创建于 2019 年的交易旨在测试 Optech 兼容性矩阵 对 Segwit v1 的支持。正如之前警告的(参见 Newsletter #158),在 Taproot 激活之前,P2TR 输出属于“任何人都可以花费”的类型,0xb10c 在博客文章中对此进行了演示和详细阐述。
-
● 当区块头的 nVersion 字段以 4 结尾(例如 0x3fffe004)时,矿工在信号什么? 在研究 ASICBoost 的显式形式时,用户 shikaridota 发现最近挖掘的区块在
nVersion
字段中设置了 bit 2。Andrew Chow 指出,Taproot 使用 bit 2 作为激活信号,具体规定在 BIP341 的部署部分。 -
● 我在哪里可以找到区块时间间隔为 15 分钟的比特币 Alpha 版本? Andrew Chow 指出了一个据称来自中本聪的源码选择,其中包含 15 分钟的区块时间以及 30 天的难度调整周期。
-
● 在 Gitian 中使用 Guix 的目的是什么?这是否会重新引入依赖性和安全问题? Andrew Chow 和 fanquake 介绍了可重复构建的好处,包括使用 Gitian 构建和基于 Guix 的可引导构建,并讨论了它们的结合使用。
-
● 为什么有几笔整数字额的交易没有找零? Shm 询问了一系列相关交易,这些交易有多个输入,但仅有一个无找零的整数字额输出。Murch 在回答中描述了避免找零的概念,尤其是在拥有大量 UTXO 的钱包中。避免找零可以减少交易大小、降低未来手续费、整合 UTXO,并提高隐私性。
准备 Taproot #6:通过使用学习 Taproot
关于开发者和服务提供商如何为即将到来的 Taproot 激活做好准备的系列文章。
将近两年前,James Chiang 和 Elichai Turkel 创建了一个开源仓库,其中包含一系列 Jupyter 笔记本,旨在为 Optech 组织的开发者培训提供 Taproot 技术相关内容。在旧金山、纽约和伦敦举办的研讨会收到了积极的反馈,但由于旅行限制,后续的线下研讨会未能如期进行。
自 Jupyter 笔记本发布以来,Taproot 发生了多项变更。然而,Taproot 支持已合并到 Bitcoin Core,这使得这些笔记本可以不再依赖于 Bitcoin Core 的自定义分支。开发者 Elle Mouton 友善地更新了这些笔记本,使其适应所有的更改,使其再次成为快速掌握 Taproot 算法和数据类型的绝佳实践工具。
这些笔记本分为四个部分:
-
● 第 0 部分 包含一个帮助您设置环境的笔记本,涵盖椭圆曲线密码学的基础知识,并介绍 BIPs 340、341 和 342 中广泛使用的标签哈希。
-
● 第 1 部分 指导您创建 Schnorr 签名。掌握这些知识后,您将学习如何使用 MuSig 协议创建多重签名。
-
● 第 2 部分 带您全面了解 Taproot。首先回顾 Segwit v0 交易的基本原理,然后帮助您创建和发送 Segwit v1(Taproot)交易。在掌握第 1 部分知识后,您将学习如何使用 MuSig 创建并花费 Taproot 输出。随后,您将接触密钥调整(key tweaking)概念,并学习如何利用 Taproot 公钥承载数据承诺。掌握承诺创建后,您将了解 Tapscript——其与传统及 Segwit v0 脚本的区别,以及如何创建 Tapscript 树的承诺。最后,一个简短的笔记本将介绍如何使用 Huffman 编码来创建最优的脚本树。
-
● 第 3 部分 提供了一个可选练习,内容是创建一个 Taproot 输出,该输出会随着未花费时间的增加而改变所需的签名数量——在正常情况下提供高效的花费方式,同时在出现问题时提供强大的备份方案。
这些笔记本包含众多相对简单的编程练习,确保您真正掌握所学内容。本专栏作者并非优秀的程序员,但能够在六小时内完成所有笔记本练习,并遗憾没有更早学习这些内容。
发布与候选发布
流行的比特币基础设施项目的新版本和候选发布。请考虑升级到新版本或帮助测试候选版本。
-
● Rust Bitcoin 0.27.0(Bech32m 支持)是一个新发布版本。最显著的变化是新增了对Bech32m地址的处理支持。
-
● C-Lightning 0.10.1rc1 是一个升级的候选版本,包含许多新功能、若干错误修复以及对开发协议的更新(包括双向资助和报价)。
重要的代码和文档变更
本周在 Bitcoin Core、C-Lightning、Eclair、LND、Rust-Lightning、libsecp256k1、Hardware Wallet Interface (HWI)、Rust Bitcoin、BTCPay Server、比特币改进提案(BIPs)和闪电网络规范(BOLTs) 中的显著变更。
-
● Bitcoin Core #22387 限制每个对等节点平均每 10 秒处理的地址公告数量。超出限制的地址将被忽略。可以将对等节点列入白名单,以允许其超出此限制。此外,节点明确请求的地址公告不受此限制影响。该限制估计约为当前 Bitcoin Core 节点地址公告速率的四倍。
-
● C-Lightning #4669 修复了其闪电网络报价解析和验证逻辑中的多个错误。此外,如果用户尝试创建相同参数的新报价,系统将返回先前创建但尚未过期的报价;这对默认不设置到期日期的报价尤为有用。
-
● BIPs #1139 添加了 BIP371,该文档规范了在 Taproot 交易中使用 PSBT(包括版本 0和版本 2)的新字段。有关详细信息,请参见 Newsletter #155。
致谢与修改
我们最初对 Bitcoin Core PR #22387 的描述错误地声称新速率限制比测得速率高 40 倍。正确数据应为 4 倍。感谢 Amiti Uttarwar 指出此错误。