闪电网络是什么?闪电网络解决了比特币的若干问题,尤其是比特币底层无法有效地处理大量交易。闪电网络交易是即时且去信任的,但是缺少底层的结算保证。闪电网络将交易转到链下,从而速度更快,费用更低,但由于其网络结构的问题,流动性管理也更加困难。
闪电网络支持双方将链上资金锁定在支付通道中,此时双方可以自由交易,而无需向底层链提交支付。每一方可以发送的最大交易净值为该方在通道中锁定的初始金额。
用户可以通过由多个通道组成的路径进行支付,这样用户可以向没有对其直接开放支付通道的接收方进行支付。支付方指定支付路径,向中间渠道的运营商支付少量费用。交易使用洋葱路由,以防止中间节点获取支付双方的身份。
进行间接支付需要支付方和接收方之间有一条间接路径,通常需要双方相对良好的网络连接。用于选择支付路径的算法未由闪电网络协议指定,协议作者认为该算法是实施上的细节问题。
通过将交易转移至链下,闪电网络实现了在不损害底层区块链可验证性的情况下将比特币网络进行扩容。与任何新技术一样,闪电网络也有很多问题,其中大多数问题,如当前 0.16 BTC的通道容量限制,最终将被解决。
然而,有些问题是闪电网络架构所固有的。其中一些问题源于闪电网络专用的两方支付渠道。虽然底层的未花费交易输出(UTXO)可以用作任意交易的输入,但用户在一个通道中的余额不能直接发送到另一个通道的接收方。
因此,确保闪电网络上的充足流动性是比特币底层没有遇到过的挑战。用户必须小心不要耗尽支付通道内锁定的资金,并且必须确保其节点通过容量足够大的通道连接到整个网络。
通道再平衡
为了确保可以进行链外支付,用户可以采用一套通道再平衡技术。用户可以使用若干种方式,通过闪电网络通道重新分配资金,并从其链上余额中引入新资金。
为了增加闪电网络上的资金量,资金必须从比特币底层转入。这可以通过开启新通道或通过一种称为拼接(Splicing)的技术来实现,该技术允许用户关闭并重新打开通道,增加通道中的余额。这两种方法都要求执行链上交易。
原子级交换是一种要么完全执行要么完全中止的加密货币交易。大多数比特币的最常见的原子交换技术实现是使用哈希时间锁定合约(HTLC)。该合约锁定资金,直到一方出示密钥或锁定期满才会解锁。用户可以通过执行深陷式交换(Submarine Swaps)来增加通道余额,这是一种在底层持有的比特币和保存在闪电网络通道上的比特币之间的原子交换。采用此技术,锁定在闪电网络中的资金总量保持不变,但用户的总余额会增加。
闪电网络用户还可以通过循环支付实现通道再平衡,即用户从一个通道发送资金,然后通过循环路径,在另一个通道接收。这样,用户会增加接收通道的余额,并减少发送通道的余额——以较低的费用保持净余额总量不变。
用户还可以通过鼓励其他网络参与者使用不平衡的通道进行交易,被动地实现通道再平衡。为此,可以通过提供低费用甚至负费用(即支付激励),使支付经由不平衡的渠道朝着有利方向发展。此技术对“即时性”的敏感度较低,并且在节点连接状况良好时更有效。
保持闪电网络的流动性
拼接支付通道、执行深陷式交换和开启新通道都需要进行链上支付,循环支付也不够便利。因此,通道再平衡可能会相当昂贵且耗时。为了克服这一点,人们提出了几种技术以降低通道再平衡的频率,并在通道容量低的情况下提高网络的流动性。
ACINQ团队提出了蹦床路由,在维持当前路由模式的同时减少用户所需的内存和计算量。在蹦床路由中,用户将交易和预期接收方发送到连接良好的蹦床节点,并要求蹦床节点代表他们计算支付路径。由于这些节点连接状况良好,因此用户需要维护的通道较少,从而提高流动性。此模式鼓励一定程度的中心化,用户可能需要支付比其他模式更高的路由费用,以换取计算量的减少。
如果通过单个蹦床节点路由支付,则蹦床路由会损害用户隐私,因为此节点知道最终接收方的信息。为了解决这个问题,该协议允许用户指定多个蹦床节点,这样,中间节点负责按照发送方的要求查找通往下一个接收方的路径。蹦床节点不确定下一个接收方是最终接收方还是另一个中间节点。
另一个方案是原子多路径支付(AMP),支持用户将支付进行原子拆分,并使其通过多个路径,这样用户能够通过非流动性通道发送更大的交易。除了解决流动性问题外,这种技术还有额外的好处——使中间节点更难确定他们路由的支付金额,从而有利于用户隐私。原子多路径支付的实现需要更新闪电网络规范,但只有支付的发送方和接收方才需要启用此更新。
为了减少通道再平衡的频率,人们提出了另外几种交易路由技术。一篇学术论文建议使用一种称为 Spider(蜘蛛)的技术,该技术受到数据包交换协议的启发,并且像 AMP 一样支持多路径支付。但是,Spider 不支持交易原子化,因此交易的某些部分可能成功处理,而另一些部分可能会处理失败。该协议还引入了交易批处理,提高了吞吐量,但代价是增加了延迟。
"及时(JIT)"路由协议提出,中间节点在为另一个节点做路由支付时,自行执行循环支付,以重新平衡其通道。这样中间节点就可以根据动态需求调整其流动性,而不是预测需要提前使用哪些渠道。JIT路由不需要更新闪电网络规范,但需要网络中的大多数节点采用该路由,从而比目前的其他协议具备显著优势。
缺点
闪电网络协议中存在一些漏洞可能会降低流动性,或与改善流动性的愿景相悖。
闪电网络对支付通道的依赖使其可能遭受拥塞攻击,攻击者会长时间锁定其他节点的通道容量。最近提出了一种攻击的变体,可以通过使用循环支付来减少发起攻击所需的资金量。在目前的网络条件下,此攻击的开发人员估计,攻击者可以将650 BTC的流动性锁定三天,费用仅为 0.25 BTC。
为了降低攻击的有效性,研究人员建议减少支付时可以使用的最大跃点数量,并采用另外的哈希时间锁定合约解析机制来代替闪电网络目前使用的机制。
研究人员还讨论实施一种避免循环的策略,其中当一个节点在支付路径上多次出现时,路由节点将拒绝为该支付提供路由服务。这种措施将阻止诚实的用户执行循环支付,限制他们使用该技术实现再平衡,并限制了及时路由的实施。
只包含少量中间节点的闪电支付可能容易受到这些节点的流量分析攻击。在此类攻击中,中间节点从交易参与者的支付模式中学习可能的解匿名信息。用户可以通过有意选择更长的支付路径来克服这一弱点,但这会导致费用和复杂性的略微增加。
流量分析攻击在大部分流量通过少量节点的情况下尤其有效。因此,蹦床路由等技术以增加中心化为代价提高流动性,将加重此类攻击的严重性。
定向拥塞攻击可能由希望通过流量分析攻击获取闪电网络用户身份的对手发动。攻击者可以通过拥塞攻击降低替代路径的通道容量,迫使用户把流量交给攻击者的节点,最终使他们能够更有效地对交易进行监视。