本周的简报描述了 FROST 无脚本门限签名方案的分布式密钥生成协议,并链接到一个关于族群线性化的全面介绍。此外,还包括我们常规部分,描述了最近对客户端、服务和流行比特币基础设施项目的变更。

新闻

  • FROST 的分布式密钥生成协议: Tim Ruffing 和 Jonas Nick 在 Bitcoin-Dev 邮件列表上发布了一份 BIP 草案以及 ChillDKG 的参考实现,这是一个用于安全生成密钥的协议,这些密钥将用于与 FROST 风格的无脚本门限签名,兼容比特币的 schnorr 签名

    无脚本门限签名可以创建 n 个密钥,其中任何 t 个密钥可以合作生成一个有效的签名。例如,一个 2-of-3 方案创建三个密钥,任何两个都可以生成一个有效签名。作为无脚本方案,该方案完全依赖于共识和区块链之外的操作,与比特币内置的脚本门限签名操作(例如使用 OP_CHECKMULTISIG)不同。

    与生成常规比特币私钥类似,每个为无脚本门限签名生成密钥的人必须生成一个大的类似随机的数字,而不向其他任何人透露该数字。然而,每个人还必须在其他用户之间分配该数字的派生分片,以便如果某个密钥不可用时,达到阈值数量的成员可以生成签名。执行这些步骤的几个密钥生成协议已经存在,但它们假定密钥生成用户可以访问一个加密和认证的通信通道,该通道在各个用户对之间进行加密和认证,还允许每个用户向所有其他用户进行不可审查的认证广播。ChillDKG 协议结合了 FROST 的一个知名密钥生成算法,以及现代密码学原语和简单算法,提供必要的安全、认证和可证明的不可审查通信。

    参与者之间的加密和认证开始于 椭圆曲线 diffie-hellman(ECDH)交换。每个参与者使用其基本密钥签署会话从开始到生成无脚本门限公钥(即会话结束)的记录来创建不可审查的证明。在接受门限公钥为正确之前,每个参与者都必须验证每个其他参与者的签名会话记录。

    协议目标是提供一个完全通用的协议,可用于所有希望生成用于基于 FROST 的无脚本门限签名的密钥的情况。此外,该协议有助于简化备份:用户只需其私有种子和一些不涉及安全性(但影响隐私)的恢复数据。在 后续消息中,Jonas Nick 提到他们正在考虑扩展协议,通过从种子派生的密钥加密恢复数据,以便用户只需保密其种子。

  • 族群线性化介绍: Pieter Wuille 在 Delving Bitcoin 上发布了一个关于族群线性化所有主要部分的详细描述,这是族群交易池的基础。以前的 Optech 周报曾尝试介绍该主题的关键概念,但这个概述更加全面。它按顺序将读者从基本概念带到正在实施的具体算法。最后,链接到几个实现族群交易池部分的 Bitcoin Core 拉取请求。

服务和客户端软件的变更

在这个每月专题中,我们重点介绍比特币钱包和服务的有趣更新。

  • ZEUS 添加 BOLT12 offer 和 BIP353 支持: v0.8.5 版本利用 TwelveCash 服务支持 offerBIP353(参见周报 #307)。

  • Phoenix 添加 BOLT12 offer 和 BIP353 支持: Phoenix 2.3.1 版本增加了 offer 支持,Phoenix 2.3.3 版本增加了 BIP353 支持。

  • Stack Wallet 添加 RBF 和 CPFP 支持: Stack Wallet 的 v2.1.1 版本增加了通过 RBFCPFP 进行费用提升的支持,以及 Tor 支持。

  • BlueWallet 添加静默支付发送支持:v6.6.7 版本中,BlueWallet 增加了发送到静默支付地址的能力。

  • BOLT12 Playground 公布: Strike 公布了一个测试环境,用于 BOLT12 offer。该项目使用 Docker 发起和自动化不同 LN 实现之间的钱包、通道和支付。

  • Moosig 测试库公布: Ledger 发布了一个基于 Python 的测试,用于 MuSig2BIP388 钱包描述符钱包策略

  • 实时 Stratum 可视化工具发布: 基于 以前的研究stratum.work 网站显示来自各种比特币矿池的实时 Stratum 消息,同时也有可用的源代码

  • BMM 100 迷你矿机公布: Braiins 的挖矿硬件,默认启用 Stratum V2的一部分功能。

  • Coldcard 发布基于 URL 的交易广播规范:协议允许使用 HTTP GET 请求广播比特币交易,并可用于 NFC 基础的硬件签名设备等用例。

重要代码和文档更改

近期出现重大变更的有:Bitcoin CoreCore LightningEclairLDKLNDlibsecp256k1Hardware Wallet Interface (HWI)Rust BitcoinBTCPay ServerBDKBitcoin Improvement Proposals (BIPs)Lightning BOLTsLightning BLIPsBitcoin InquisitionBINANAs

  • Bitcoin Core #26596 使用新的只读历史数据库来迁移遗留钱包到描述符钱包。此更改不会弃用遗留钱包或遗留 BerkeleyDatabase。创建了一个新的 LegacyDataSPKM 类,只包含迁移遗留钱包所需的基本数据和功能。参见周报 #305 了解 BerkeleyRODatabase 的介绍。

  • Core Lightning #7455 通过实现通过 short_channel_id (SCID) 和 node_id 转发的方式增强了 connectd洋葱消息处理(参考周报 #307以了解关于 LDK 相似变更的讨论)。洋葱消息功能现在总是启用,传入消息的速率限制为每秒 4 条。

  • Eclair #2878 使盲化路由和通道静止功能变成可选,因为它们现在已经完全实现并成为 BOLT 规范的一部分(参考周报 #245#309)。Eclair 节点向其对等节点广告支持这些功能,但默认情况下禁用 route_blinding,因为它不会转发不使用蹦床路由盲化支付

  • Rust Bitcoin #2646 引入新的脚本和见证结构的检查器,例如 redeem_script 以确保符合 BIP16 关于 P2SH 花费的规则,taproot_control_blocktaproot_annex 以确保符合 BIP341 规则,witness_script 以确保 P2WSH 见证脚本符合 BIP141 规则。更多内容可参考周报 #309

  • BDK #1489 更新 bdk_electrum 以使用默克尔证明进行简化支付验证 (SPV)。它获取默克尔证明和区块头以及交易,验证交易在确认区块中,然后再插入锚点,并从 full_scan 中移除重组处理。该 PR 还引入 ConfirmationBlockTime 作为新的锚点类型,替代之前的类型。

  • BIPs #1599 添加 BIP46 作为 HD 钱包的派生方案,用于创建用于忠诚保证保险时间锁定地址,这些地址用于 JoinMarket 风格的 coinjoin市场撮合。忠诚保证保险通过创建一个声誉系统来提高协议的抗女巫能力,挂单者通过时间锁定比特币来证明他们有意地牺牲了金钱的时间价值。

  • BOLTs #1173 使故障洋葱消息中的 channel_update 字段成为可选。节点现在忽略当前支付之外的此字段,以防止 HTLC 发送者的指纹识别。此更改旨在防止因过时的通道参数导致的支付延迟,同时仍允许具有过时八卦数据的节点在需要时受益于更新。

  • BLIPs #25 添加 BLIP25,描述如何允许转发少于洋葱编码数值的 HTLC。例如,Alice 向 Bob 提供一个闪电发票,但她没有支付通道,所以当 Bob 付款时,Carol(Alice 的 LSP)即时创建一个通道。为了允许 Carol 向 Alice 收取费用以支付创建 JIT 通道的初始链上费用,可以使用此协议并向 Alice 转发一个少于洋葱编码数值的 HTLC。关于此前 LDK 中的一个实现的讨论,请查阅周报 #257