/ home / newsletters /
Bitcoin Optech 周报 #346
本周的周报总结了关于 LND 更新的动态手续费调整系统的讨论。此外还包括我们的常规板块,描述了服务和客户端软件的近期变更,发布新版本和候选版本的公告,以及总结了热门比特币基础设施软件的最新合并。
新闻
-
● 关于 LND 动态手续费率调整系统的讨论: Matt Morehouse 在 Delving Bitcoin 上发布了对 LND 最近重写的 sweeper 系统的描述,该系统用于确定链上交易的手续费率(包括手续费替换调整)。他首先简要描述了闪电网络节点手续费管理的安全关键方面,以及避免手续费过高的自然需求。然后他描述了 LND 使用的两种通用策略:
-
查询外部手续费率估算器,比如本地 Bitcoin Core 节点或第三方。这主要用于选择初始手续费率和为非紧急交易追加手续费。
-
指数级手续费提升,在截止期限临近时使用,以确保节点的交易池或其手续费估算出现问题时不会影响及时确认。例如,Eclair 在截止期限在六个区块以内时使用指数级手续费提升。
Morehouse 接着描述了这两种策略在 LND 新的 sweeper 系统中是如何结合的:“具有相同截止期限的 HTLC 取款被聚合到单个批量交易中。批量交易的预算是通过计算交易中各个 HTLC 预算的总和得出的。基于交易预算和截止期限,计算出一个手续费函数,该函数决定了随着截止期限临近要花费多少预算。默认情况下,使用线性手续费函数,从低手续费开始(由最低中继费率或外部估算器决定),在截止期限还剩一个区块时将全部预算分配给手续费。”
他还描述了新逻辑如何帮助防御替代循环攻击,总结道:“使用 LND 的默认参数,攻击者通常必须花费至少 20 倍于 HTLC 价值的费用才能成功进行替代循环攻击。”他补充说,新系统还改进了 LND 对交易钉死攻击的防御。
最后他用包含许多链接的形式,总结了通过改进逻辑修复的几个“LND 特定的错误和漏洞”。Abubakar Sadiq Ismail 回复提出了一些建议,说明所有闪电网络实现(以及其他软件)如何更有效地使用 Bitcoin Core 的手续费估算。其他几位开发者也发表了评论,既补充了细节,也对新方法表示赞赏。
-
服务和客户端软件变更
在这个月度专题中,我们会重点介绍比特币钱包和服务的有趣更新。
-
● Wally 1.4.0 发布: libwally-core 1.4.0 版本增加了对taproot的支持,支持派生 BIP85 RSA 密钥,以及额外的 PSBT 和描述符功能。
-
● Bitcoin Core 配置生成器发布: Bitcoin Core 配置生成器项目是一个用于创建 Bitcoin Core
bitcoin.conf
配置文件的终端界面。 -
● regtest 开发环境容器: regtest-in-a-pod仓库提供了一个配置了 Bitcoin Core、Electrum 和 Esplora 的 Podman 容器,详情请参见使用 Podman 容器进行 Regtest 比特币开发博文。
-
● Hashpool v0.1 发布: Hashpool 是一个基于 Stratum v2 参考实现的矿池,其中挖矿份额被表示为 ecash 代币(参见播客 #337)。
-
● DMND 启动矿池服务: DMND 正在启动 Stratum v2 矿池服务,这是在他们之前的独立挖矿公告基础上的进一步发展。
-
● Krux 添加 taproot 和 miniscript 支持: Krux 利用 embit 库添加了 miniscript 和 taproot 支持。
-
● Nunchuk 推出群组钱包: 群组钱包支持多重签名、taproot、币种控制、Musig2,并通过重新利用 BIP129 比特币安全多重签名设置(BSMS)文件中的输出描述符来实现参与者之间的安全通信。
-
● FROSTR 协议发布: FROSTR 使用 FROST 门限签名方案来实现 nostr 的 k-of-n 签名和密钥管理。
-
● Bark 在 signet 上线: Ark 的实现 Bark 现在在 signet 上可用,并提供水龙头和演示商店供测试。
-
● Cove 比特币钱包发布: Cove 钱包 是一个基于 BDK 的开源比特币移动钱包,支持 PSBT、钱包标签、硬件签名设备等技术。
新版本和候选版本
热门比特币基础设施项目的新版本和候选版本。请考虑升级到新版本或帮助测试候选版本。
- ● Bitcoin Core 29.0rc2 是网络中占主导地位的全节点的下一个主要版本的候选版本。
重要代码和文档变更
以下是Bitcoin Core、Core Lightning、Eclair、LDK、LND、libsecp256k1、硬件钱包接口(HWI)、Rust Bitcoin、BTCPay Server、BDK、比特币改进提案(BIPs)、闪电网络 BOLTs、闪电网络 BLIPs、Bitcoin Inquisition 和 BINANAs 的重要变更。
-
● Bitcoin Core #31649 移除了所有检查点逻辑,这在几年前实现的区块头预同步步骤(参见周报 #216)之后已不再必要。该预同步使节点在初始区块下载(IBD)期间能够通过将区块头链的总工作量与预定义的阈值
nMinimumChainWork
进行比较来确定其有效性。只有总工作量超过此值的链才被认为有效并存储,有效防止了低工作量区块头的内存 DoS 攻击。这消除了对检查点的需求,检查点经常被视为一个中心化元素。 -
● Bitcoin Core #31283 在
BlockTemplate
接口中引入了新的waitNext()
方法,该方法仅在链顶端区块发生变化或交易池手续费超过MAX_MONEY
阈值时才返回新模板。此前,矿工每次请求都会收到新模板,导致不必要的模板生成。这一变更符合 Stratum V2 协议规范。 -
● Eclair #3037 增强了
listoffers
命令(参见周报 #345),返回所有相关的 offer数据,包括createdAt
和disabledAt
时间戳,而不仅仅是原始的类型-长度-值(TLV)数据。此外,这个 PR 修复了尝试再次注册相同 offer 时导致节点崩溃的错误。 -
● LND #9546 在
lncli constrainmacaroon
子命令(参见周报 #201)中添加了ip_range
标志,允许用户在使用 macaroon(认证令牌)时将资源访问限制在特定的 IP 范围内。此前,macaroon 只能基于特定 IP 地址允许或拒绝访问,而不能基于范围。 -
● LND #9458 为某些对等节点引入了受限访问槽,可通过
--num-restricted-slots
标志配置,以管理服务器上的初始访问权限。对等节点根据其通道历史被分配访问级别:具有已确认通道的获得受保护访问权限,具有未确认通道的获得临时访问权限,其他所有节点获得受限访问权限。 -
● BTCPay Server #6581 添加了手续费替换支持,使得在没有后代交易、所有输入都来自商店钱包且包含商店的找零地址的交易中可以进行手续费提升。用户现在可以在选择提升交易手续费时在 CPFP 和手续费替换之间选择。手续费提升需要 NBXplorer 2.5.22 或更高版本。
-
● BDK #1839 通过引入新的
TxUpdate::evicted_ats
字段来支持检测和处理已取消(双重支付)的交易,该字段更新TxGraph
中的last_evicted
时间戳。如果交易的last_evicted
时间戳超过其last_seen
时间戳,则认为该交易已被驱逐。正统化算法(参见周报 #335)已更新,忽略被驱逐的交易,除非基于传递性规则存在正统后代。 -
● BOLTs #1233 更新了节点行为,规定如果节点知道原像,就永远向上游回传 HTLC 失败的信息,确保 HTLC 可以正确结算。此前的建议是,如果已确认的承诺中缺少未完成的 HTLC,即使知道原像也要向上游回传失败信息。LND 0.18 版本之前的一个错误导致节点在遭受 DoS 攻击后重启时,尽管知道原像但仍向上游回传 HTLC 失败信息,导致 HTLC 价值损失(参见周报 #344)。