/ home / newsletters /
Bitcoin Optech Newsletter #174
本周 Newsletter 总结了一篇关于如何将谨慎日志合约(DLC)与闪电网络通道整合的帖子、近期闪电网络开发者会议的详细总结链接,并描述了关于如何对致密区块过滤器进行额外验证的想法。此外还包括常规栏目:Bitcoin Core PR 审查俱乐部会议总结、关于准备 taproot 激活的最终专栏、新版本与候选版本描述,以及热门基础设施软件的重大变更列表。
新闻
-
● 闪电网络上实现 DLC: Thibaut Le Guilly 在 DLC-Dev 邮件列表上发起了一个讨论,主题是将谨慎日志合约(DLCs)与闪电网络(LN)整合。初始帖子描述了几种在直接 LN 对等节点(例如共同运营通道的 Alice 和 Bob)之间的交易中嵌入 DLC 的可能方案。帖子还讨论了在通过 LN 网络路由的 DLC 中创建所面临的挑战。*
-
● 2021 年闪电网络峰会纪要: Olaoluwa Osuntokun 发布了近期苏黎世线上线下混合举行的闪电网络开发者会议的详尽总结。纪要内容包括关于在 LN 中使用 taproot 的讨论,涉及 PTLCs、用于多签的 MuSig2 以及 eltoo;将规范讨论从 IRC 迁移至视频会议;当前 BOLTs 规范模型的变更;洋葱消息与报价;无卡支付(见周报 #53);通道阻塞攻击及多种缓解措施;以及蹦床路由。*
-
● 致密区块过滤器的额外验证: Neutrino 轻客户端包含了一种启发式方法,用于检测致密区块过滤器是否可能包含错误数据。该方法曾错误地报告了一个包含 taproot 交易的测试网区块的正确过滤器存在问题。该问题已在 Neutrino 源代码中修复,其他致密区块过滤器实现不受影响。但 Olaoluwa Osuntokun 在 Bitcoin-Dev 和 LND-Dev 邮件列表上发起讨论,提出了未来可能的改进方向:*
Bitcoin Core PR 审查俱乐部
在本月栏目中,我们总结近期一次 Bitcoin Core PR 审查俱乐部会议,重点呈现部分重要问答。点击下方问题查看会议讨论摘要。
添加 ChainstateManager::ProcessTransaction
是 John Newbery 提出的拉取请求,旨在新增 ChainstateManager::ProcessTransaction()
接口函数,负责将交易作为候选加入内存池并执行内存池一致性检查。审查俱乐部讨论了当前向内存池添加交易的接口。
-
什么是
cs_main
?为何如此命名?cs_main
是一个互斥锁,用于同步多线程对验证状态的访问。实际上,它也保护了非验证数据(包括 P2P 逻辑使用的数据)。多位贡献者希望减少cs_main
的使用范围。该变量在验证功能位于 main.cpp 文件时命名,前缀cs
代表临界区(critical section)。 ➚ -
当前哪些组件调用
AcceptToMemoryPool
?哪些调用来自外部客户端代码,哪些来自验证内部?排除测试中的调用,共有四个调用点:
- 节点启动时,从 mempool.dat 加载 交易并调用 ATMP 重新验证交易以恢复内存池内容。此为内部验证调用。
- 从 P2P 网络接收的交易通过 ATMP 验证并提交 至内存池。此调用源自验证外部的组件。
- 重组期间,断开区块中存在但未包含在新链尖的交易通过 ATMP 重新提交 至内存池。此为内部验证调用。
- RPC(如
sendrawtransaction
)和钱包(如sendtoaddress
)等客户端通过BroadcastTransaction()
调用 ATMP 提交交易。testmempoolaccept
RPC 也会调用 ATMP 并设置test_accept
为true
。这些属于外部组件的调用。 ➚
-
CTxMemPool::check()
的作用是什么?调用该函数是谁的职责?CTxMemPool::check()
检查所有交易输入是否对应可用 UTXO,并执行内存池内部一致性检查。例如,统计每笔交易的祖先和后裔数量以确保缓存的ancestorsize
、ancestorcount
等值准确。当前 ATMP 调用者需负责在之后调用check()
。但与会者认为应由ChainstateManager
负责执行其内部一致性检查。 ➚
准备 Taproot #21:感谢!
关于开发者和服务提供商如何为区块高度 709,632 激活 taproot 做准备的系列文章的最终篇。
Taproot 将在区块 709,632 激活,预计于本文发布后数日内完成。作为本系列的终篇,我们谨向众多参与开发与激活 Taproot 的人士致谢——他们即将开始执行这一升级。未提及的诸多贡献者同样值得感谢,我们为所有疏漏致歉。
Bitcoin-Dev 邮件列表讨论
Taproot 的核心构想萌芽于 2019 年 1 月 22 日早晨几位密码学家的会议,并于当日通过邮件列表发布。以下人士参与了主题含 “taproot” 的讨论:
Adam Back、 Andrea Barontini、 Andreas Schildbach、 Andrew Chow、 Andrew Poelstra、 Anthony Towns、 Antoine Riard、 Ariel Lorenzo-Luaces、 Aymeric Vitte、 Ben Carman、 Ben Woosley、 Billy Tetrud、 BitcoinMechanic、 Bryan Bishop、 Carlo Spiller、 Chris Belcher、 Christopher Allen、 Clark Moody、 Claus Ehrenberg、 Craig Raw、 Damian Mee、 Daniel Edgecumbe、 David A. Harding、 DA Williamson、 Elichai Turkel、 Emil Pfeffer、 Eoin McQuinn、 Eric Voskuil、 Erik Aronesty、 Felipe Micaroni Lalli、 Giacomo Caironi、 Gregory Maxwell、 Greg Sanders、 Jay Berg、 Jeremy Rubin、 John Newbery、 Johnson Lau、 Jonas Nick、 Karl-Johan Alm、 Keagan McClelland、 Lloyd Fournier、 Luke Dashjr、 Luke Kenneth Casson Leighton、 Mark Friedenbach、 Martin Schwarz、 Matt Corallo、 Matt Hill、 Michael Folkson、 Natanael、 Oleg Andreev、 Pavol Rusnak、 Pieter Wuille、 Prayank、 R E Broadley、 Riccardo Casatta、 Robert Spigler、 Ruben Somsen、 Russell O’Connor、 Rusty Russell、 Ryan Grant、 Salvatore Ingala、 Samson Mow、 Sjors Provoost、 Steve Lee、 Tamas Blummer、 Thomas Hartman、 Tim Ruffing、 Vincent Truong、 vjudeu、 yancy、 yanmaani—— 以及 ZmnSCPxj。
Taproot 整合的 schnorr 签名 和 MAST 等概念源起更早,我们同样感谢相关贡献者。
Taproot BIP 审查
自 2019 年 11 月起,大量用户和开发者参与了 Taproot 的系统化审查:
achow101、 afk11、 aj、 alec、 amiti、 _andrewtoth、 andytoshi、 ariard、 arik、 b10c、 belcher、 bjarnem、 BlueMatt、 bsm1175321、 cdecker、 chm-diederichs、 Chris_Stewart_5、 cle1408、 CubicEarth、 Day、 ddustin、 devrandom、 digi_james、 dr-orlovsky、 dustinwinski、 elichai2、 evoskuil、 fanquake、 felixweis、 fjahr、 ghost43、 ghosthell、 gmaxwell、 harding、 hebasto、 instagibbs、 jeremyrubin、 jnewbery、 jonatack、 justinmoon、 kabaum、 kanzure、 luke-jr、 maaku、 mattleon、 michaelfolkson、 midnight、 mol、 Moller40、 moneyball、 murch、 nickler、 nothingmuch、 orfeas、 pinheadmz、 pizzafrank13、 potatoe_face、 pyskell、 pyskl、 queip、 r251d、 raj_149、 real_or_random、 robert_spigler、 roconnor、 sanket1729、 schmidty、 sipa、 soju、 sosthene、 stortz、 taky、 t-bast、 theStack、 Tibo、 waxwing、 xoyi—— 以及 ZmnSCPxj。
GitHub 拉取请求
Taproot 在 Bitcoin Core 中的主要实现于 2020 年 1 月通过两个拉取请求提交审查。以下人士参与了代码审查:
Andrew Chow (achow101)、 Anthony Towns (ajtowns)、 Antoine Riard (ariard)、 Ben Carman (benthecarman)、 Ben Woosley (Empact)、 Bram (brmdbr)、 Cory Fields (theuni)、 Dmitry Petukhov (dgpv)、 Elichai Turkel (elichai)、 Fabian Jahr (fjahr)、 Andreas Flack (flack)、 Gregory Maxwell (gmaxwell)、 Gregory Sanders (instagibbs)、 James O’Beirne (jamesob)、 Janus Troelsen (ysangkok)、 Jeremy Rubin (JeremyRubin)、 João Barbosa (promag)、 John Newbery (jnewbery)、 Jon Atack (jonatack)、 Jonathan Underwood (junderw)、 Kalle Alm (kallewoof)、 Kanon (decryp2kanon)、 kiminuo、 Luke Dashjr (luke-jr)、 Marco Falke (MarcoFalke)、 Martin Habovštiak (Kixunil)、 Matthew Zipkin (pinheadmz)、 Max Hillebrand (MaxHillebrand)、 Michael Folkson (michaelfolkson)、 Michael Ford (fanquake)、 Adam Ficsor (nopara73)、 Pieter Wuille (sipa)、 Sjors Provoost (Sjors)、 Steve Huguenin-Elie (StEvUgnIn)、 Tim Ruffing (real-or-random)、 以及 Yan Pritzker (skwp)。
Taproot 激活讨论
社区围绕激活方式展开了数月讨论,主要参与者包括:
6102bitcoin、 AaronvanW、 achow101、 aj、 alec、 Alexandre_Chery、 Alistair_Mann、 amiti、 andrewtoth、 andytoshi、 AnthonyRonning、 ariel25、 arturogoosnargh、 AsILayHodling、 averagepleb、 bcman、 belcher、 benthecarman、 Billy、 bitcoinaire、 bitentrepreneur、 bitsharp、 bjarnem、 blk014、 BlueMatt、 bobazY、 brg444、 btcactivator、 btcbb、 cato、 catwith1hat、 cguida、 CodeShark__、 conman、 copumpkin、 Crash78、 criley、 CriptoLuis、 CubicEarth、 darbsllim、 darosior、 Day、 DeanGuss、 DeanWeen、 debit、 Decentralizedb、 devrandom、 DigDug、 dome、 dr_orlovsky、 duringo、 dustinwinski、 eeb77f71f26eee、 eidnrf、 elector、 elichai2、 Emcy、 emzy、 entropy5000、 eoin、 epson121、 erijon、 eris、 evankaloudis、 faketoshi、 fanquake、 fedorafan、 felixweis、 fiach_dubh、 fjahr、 friendly_arthrop、 GeraldineG、 gevs、 gg34、 ghost43、 ghosthell、 giaki3003、 gloved、 gmaxwell、 graeme1、 GreenmanPGI、 gr-g、 GVac、 gwillen、 gwj、 gz12、 gz77、 h4shcash、 harding、 hebasto、 hiro8、 Hotmetal、 hsjoberg、 huesal、 instagibbs、 Ironhelix、 IT4Crypto、 ja、 jaenu、 JanB、 jeremyrubin、 jimmy53、 jnewbery、 jonatack、 jonny100051、 jtimon、 kallewoof、 kanon、 kanzure、 Kappa、 keblek、 ksedgwic、 landeau、 lucasmoten、 luke-jr、 maaku、 Majes、 maybehuman、 mblackmblack、 mcm-mike、 Memesan、 michaelfolkson、 midnight、 MikeMarzig、 mips、 mol、 molz、 moneyball、 mrb07r0、 MrHodl、 murch、 naribia、 newNickName、 nickler、 nikitis、 NoDeal、 norisgOG、 nothingmuch、 occupier、 OP_NOP、 OtahMachi、 p0x、 pinheadmz、 PinkElephant、 pox、 prayank、 prepaid、 proofofkeags、 provoostenator、 prusnak、 qubenix、 queip、 r251d、 rabidus、 Raincloud、 raj、 RamiDz94、 real_or_random、 rgrant、 riclas、 roasbeef、 robert_spigler、 rocket_fuel、 roconnor、 rovdi、 rubikputer、 RusAlex、 rusty、 sanket1729、 satosaurian、 schmidty、 sdaftuar、 setpill、 shesek、 shinobiusmonk、 snash779、 solairis、 somethinsomethin、 stortz、 sturles、 sugarpuff、 taPrOOteD、 TechMiX、 TheDiktator、 thomasb06、 tiagocs、 tomados、 tonysanak、 TristanLamonica、 UltrA1、 V1Technology、 vanity、 viaj3ro、 Victorsueca、 virtu、 walletscrutiny、 wangchun、 warren、 waxwing、 Whatisthis、 whuha、 willcl_ark、 WilliamSantiago、 windsok、 wumpus、 xxxxbtcking、 yanmaani、 yevaud、 ygrtiugf、 Yoghurt11411、 zmnscpxj、 以及 zndtoshi。
矿工信号
我们感谢自区块 681,408 以来所有发出 Taproot 准备就绪信号的矿工。
生态项目
Taproot 激活仅是起点,开发者与用户将开始运用其新特性。我们感谢多年筹备 MuSig 等生态项目的贡献者。
全节点运营者
最关键的致谢致予数千名 Bitcoin Core 0.21.1 及以上版本(或兼容软件)的运营者。他们通过升级节点确保从区块 709,632 开始仅接受符合 Taproot 规则的交易,为全网的升级安全提供经济保障。
发布与候选发布
热门比特币基础设施项目的新版本发布。请考虑升级至新版本或协助测试候选版本。
-
● BTCPay Server 1.3.3 是一个包含关键安全补丁的版本(此前一天另有发布),修复共享服务器上同时共享 LN 节点的实例问题。还包括次要功能和其他错误修复。
-
● Rust-Lightning 0.0.103 新增
InvoicePayer
API,支持在部分路径失败时重试支付。 -
● C-Lightning 0.10.2 修复了不经济输出安全问题,缩小了数据库体积,并提升了
pay
命令的有效性(见 Decker 推文)。 -
● LND 0.13.4-beta 是维护版本,修复了上述 新闻 部分描述的 Neutrino 问题。发布说明指出:“若在生产环境使用 Neutrino,强烈建议在 taproot 激活前升级至此版本以确保节点持续同步。”
-
● LND 0.14.0-beta.rc3 是候选版本,包含额外的日蚀攻击防护(见周报 #164)、远程数据库支持(周报 #157)、更快路径查找(周报 #170)、Lightning Pool 用户改进(周报 #172)以及可重复使用的 AMP 发票(周报 #173)等多项功能与错误修复。
值得注意的代码和文档变更
本周 Bitcoin Core、C-Lightning、Eclair、LND、Rust-Lightning、libsecp256k1、硬件钱包接口 (HWI)、Rust Bitcoin、BTCPay Server、BDK、比特币改进提案(BIPs)和闪电网络规范(BOLTs)的显著变更。
-
● Rust-Lightning #1078 新增 BOLTs #880 定义的
channel_type
协商功能(BOLTs #906 提出的功能位暂未实现)。BOLTs #880 是锚定输出的必需项,也可能支持零确认通道。 -
● Rust-Lightning #1144 在路由评分逻辑中新增惩罚机制。在支付重试间对失败通道施加惩罚,以向路径查找算法提示潜在故障通道。
-
● BIPs #1215 对 BIP119 中的 OP_CHECKTEMPLATEVERIFY 提案进行多项更新:
- 指定使用类似 taproot 的快速试验激活方式部署该软分叉。
- 记录使用非标签化 SHA256 哈希的缘由。
- 增加 OP_CHECKTEMPLATEVERIFY 与 SIGHASH_ANYPREVOUT 提案的对比。
- 说明 OP_CHECKTEMPLATEVERIFY 与其他潜在未来共识变更的交互。