比特币技术周报丨闪电网络迎来重大更新,0.168 BTC通道限制将消失
注:原文来自Bitcoin Optech
在本周的比特币技术简报中,我们首先介绍了简化ECDSA 适配器签名(adaptor signatures)的研究工作,然后总结了常规的Bitcoin Core PR 评议俱乐部讨论内容,最后,我们还会介绍闪电网络三大客户端Eclair、C-Lightning以及LND的最新研发进展,其中Eclair新客户端已支持金额超过0.168 BTC的闪电网络通道,而C-Lightning也在跟进开发。
据悉,在这之前,各大LN客户端都设置了0.168 BTC的通道限制,而放开限制,意味着开发者对协议的安全性有了更大的信心。
(图片来自:tuchong.com)
一、 使用简化版ECDSA适配器签名方案,修复闪电网络的安全隐患
点时间锁定合约(PTLC) 是当前在闪电网络中启用可路由支付的 哈希时间锁定合约(HTLC) 的一种替代方法。而现有HTLC机制存在的问题是,支付路径上的每一跳点(hop)都使用相同的哈希摘要来确保其条件支付。 这意味着,沿着同一路径控制两个节点的用户知道,这些节点之间的任何跳点(hop)都不是最终的付款方或收款方,而这不仅降低了闪电网络洋葱路由提供的隐私性,而且还允许恶意用户窃取支付给中间跳点(hop)的路由费用(这被称为虫洞攻击—— wormhole attack) 。例如,在下面的路径中,马洛里(Mallory)可以窃取鲍勃(Bob)和卡罗尔(Carol)的路由费,并得出结论称,他们都不是最终付款的支出者或接收者。
Alice → Mallory → Bob → Carol → Mallory' → Dan相比使用哈希值,PTLC通过使用适配器签名(代表椭圆曲线上的点),使每个跳点(hop)都可以使用不同的标识符进行付款。适配器签名(Adaptor signature)最初被提出用于schnorr签名方案,我们已经知道,适配器签名可与比特币当前的ECDSA签名方案一起使用(详见第16期Newsletter),但该过程依赖于双方ECDSA签名(2pECDSA),而这是复杂的,并且其所需的安全性假设,超出了比特币ECDSA签名通常所要求的。然而,最近Lloyd Fournier发表了一篇 论文 ,其描述了如何仅通过常规的2-of-2比特币多重签名(例如
OP_CHECKMULTISIG
)和简单的离散对数equivalence (DLEQ)安全地使用适配器签名。去年11月份,开发者们还在闪电网络开发(Lightning-Dev)邮件列表中对此进行了总结。
上周在闪电网络HackSprint活动中,几位开发人员研究了这些2-of-2多重签名适配器签名,然后Adam Gibson撰写了一篇关于C语言libsecp256k1和Scala bitcoin-s库主题和概念证明实现的出色文章,目前这些代码尚未得到审查,并且可能是不安全的,但是它可以帮助开发人员在主网上尝试使用适配器签名,其既可以用于闪电网络中的PTLC,也可以用于其他无需信任的合约协议。
二、Bitcoin Core PR评议俱乐部探讨重点
在本节中,我们总结了最近的Bitcoin Core PR 评议俱乐部会议上探讨的一些重要问题及答案。
讨论从建立PR(Pull Request,合并代码请求)的根本原因开始:
问题1 : 为什么可更快地重试
notfound
会有帮助?
答:预防DoS、交易传播速度、隐私以及未来的
mapRelay
删除。
问题2 : 什么是潜在的DoS攻击问题?
答: 具有小存储池(mempool)的节点可能会通过宣布一笔交易,然后因无法交付它,而无意中减慢了交易向对等节点的中继过程。问题3 : 为什么交易传播速度是重要的?
答:几秒钟的短暂延迟并不是一个问题(甚至对隐私而言也是可取的),但几分钟的较大延迟,可能会损害交易的传播及BIP152 致密区块(compact block)的中继。问题4: 最初添加
maprerelay
的时间和原因?
答:
mapRelay
出现在比特币的第一个版本当中,它确保如果节点宣布了一笔交易,即使已在宣布交易和请求交易的对等节点之间进行了确认,也可以下载该交易。
问题5 :删除
mapRelay
时会遇到什么问题?
答:它可能导致在诚实的情况下请求的交易更容易遇到notfound的情况,延迟最多会有2分钟,从而损害传播。在会议的后半部分,开发者们还讨论了
TxDownloadState
数据结构:
问题6: 描述下TxDownloadState 数据结构的作用?
答: 这是具有计时器的对等式状态机,用于协调来自对等方的请求交易。问题7: 我们如何改善TxDownloadState结构,以减少将来引入交易中继错误的可能性?
答: 向结构中添加内部一致性检查,或用定义良好的接口类替换它。然后,开发者们深入探讨了PR 实施、潜在的问题、未来的改进以及它们与 wtxid交易中继提议 的交互。有关更多详细信息,请参阅会议学习笔记及日志。
三、闪电网络三大客户端迎来重大更新
上周,闪电网络客户端Eclair迎来了 0.3.4 新版本,其支持设置超过 0.168 BTC 的闪电网络通道,并且还修复了一些漏洞,以及一些其它改进。有关详细信息,请参见其发布说明。
类似的,由Blockstream开发的闪电网络客户端C-Lightning,也在尝试放开
0.168 BTC通道金额限制。其
C-Lightning#3612添加了启动参数
--large-channels
和
--wumbo
(两者等效),如果使用了这些参数,则节点将在其
init
消息中通告对
option_support_large_channel
的支持,这意味着它将接受具有比先前的上限(约0.168 BTC)更高值的通道。如果远程对等节点也支持此选项,则C-Lightning的
fundchannel
RPC将允许用户创建超出先前限制的通道。另请参阅第88期Newsletter中所述的Eclair对此选项的支持。
此外,C-Lightning#3600还使用盲路径(blinded path)增加了对onion消息的实验性支持。
那什么是 onion消息 呢?在第86期Newsletter中,我们将其称为“闪电网络直接消息”,它允许节点通过网络发送加密消息,而无需使用闪电网络支付机制。这可以替代Whatsat等应用使用的消息-支付机制。相比消息-支付机制,onion消息有几个优点:
- 它们具有规范草案,如果被采纳,它将使多个实现更容易支持它们;
- 它们不需要onchain可执行支付通道的安全性,因此Onion消息甚至可以在不共享已建立支付通道的对等方之间路由;
-
它们不需要HTLC或错误消息这样的信息双向传输,因此一旦节点转发了一条消息,它就不需要保留任何与该消息相关的信息。这种无状态性,使节点的内存需求最小化。如果发送节点想要接收答复,则草案规范允许它包含一个盲
reply_path
字段,接收节点可以使用该字段在新消息中发送答复。
-
目标节点选择从中间节点到自身的路径,然后使用onion加密该路径信息,以便路径中的每个跳点(hop)仅能够解密应接收消息的下一个节点的标识符。目标节点将这个加密的(“盲”)路径信息提供给发送节点(例如,通过BOLT11 invoice中的字段或使用前面提到的onion消息
reply_path
字段)。 - 发送节点使用普通洋葱路由将其消息中继到中间节点;
- 中间节点从盲路径解密要使用的下一跳点(hop),并将消息发送给它。下一节点解密自己的下一跳点(hop)字段,并进一步中继消息,该过程一直持续到消息到达目标节点为止。
最后,另一大闪电网络客户端LND也迎来了一些更新内容,其中包括:
- LND#4087添加了对自动创建瞭望塔(watchtower)tor 隐藏服务的支持(如果在命令行中启用)。
-
LND#4079增加了对部分签名比特币交易(PSBT)融资通道的支持,从而允许任何与PSBT兼容的钱包为通道开放提供资金。而在这之前,只有通过LND的内部钱包才能实现,在通道获得资金后,LND会像平常一样管理所有其他操作,用户可以将
--psbt
标志提供给lncli openchannel
,以启动交互式对话框来完成资金流(有关详细信息,请参阅该文档)。 - LND#3970在LND的支付生命周期系统中增加了对多路径支付的支持,这使LND更接近其0.10版本完全支持多路径支付的目标。
原文:https://bitcoinops.org/en/newsletters/2020/04/08/ 作者:Bitcoin Optech 编译:洒脱喜 稿源(译):巴比特资讯(http://www.8btc.com/article/580286)