要点
Layer 2 解决方案旨在解决区块链技术固有的可扩展性限制。
闪电网络是一种 Layer 2 扩容解决方案,它无需区块确认即可进行快速交易,从而实现了高效的小额支付。
闪电网络通过多重签名地址和哈希时间锁定合约来确保支付的安全性和可扩展性。
简介
加密货币具有显著特性,不易遭黑客袭击或关停。所有人都能通过加密货币在全球范围内传输价值,无需第三方介入。
为确保这些特征保持不变,须付出巨大代价。由于运行加密货币网络的节点众多,导致吞吐量受限。因此,虽是致力于面向大众普及的技术,但区块链网络能处理的每秒交易量 (TPS) 相对较低。
为打破区块链技术的固有局限性,各种可扩展性解决方案纷纷涌现,以提升网络可处理的交易数量。在本文中,我们将深入探讨比特币协议的一种扩展,即闪电网络。
什么是闪电网络?
闪电网络运行在区块链之上,旨在加速点对点交易。该网络不仅运行在比特币区块链之上,也集成到了其他加密货币中。
我们可能会产生困惑,“在区块链之上”是什么意思?闪电网络即所谓的链下或Layer 2解决方案。个人可通过该网络交易,且无需在区块链中记录每笔交易。
闪电网络独立于比特币网络,拥有自主节点和软件,但仍需与主链通信。如要进出闪电网络,需在区块链中创建特殊交易。
个人的首笔交易实际上是在与其他用户建立一种智能合约。关于这一点,稍后我们会详细介绍。现在,我们先把智能合约设想为您与其他用户共持的私人账本。您可以在这本账本中写入多笔交易。这些记录仅对您与您的交易对手可见,且基于设置的特性,双方无法作假。
这种迷你账本称之为通道。例如,Alice 和 Bob 分别向智能合约投入 5 BTC。他们的通道中此刻各自有 5 BTC 的余额。然后,Alice 写入账本“向 Bob 支付 1 BTC”。现在,Bob 有 6 BTC,Alice 余 4 BTC。Bob 日后又将 2 BTC 发还给 Alice。余额更新后,Alice 有 6 BTC,而 Bob 剩 4 BTC。他们可以这样持续操作一阵。
任意一方随时可将通道当前的状况发布到区块链中。届时,通道两端的余额分配到双方各自的链上地址。
顾名思义,闪电交易快如闪电。无需等待区块确认,即可在互联网连接允许时实现快速支付。
为何需要闪电网络?
截至目前,闪电网络(或简称“LN”)似乎是解决比特币区块链可扩展性问题最合理的方式。在如此庞大的生态系统中协调变化十分棘手,因为要面临硬分叉和潜在灾难性漏洞等风险。由于关系到巨额价值,开展实验是一件极为危险的事情。
如果要把实验从区块链中移除,就必须更具灵活性。这样稍出差错,也不会对比特币网络造成实质影响。Layer 2 解决方案不会破坏维持该协议运行长达 15 年有余的任何安全假设。
而且,没有必要改变惯有的操作方式。这样终端用户的链上交易照常进行,现在还多了链下交易选择。
使用闪电网络有诸多好处。我们将重点介绍以下几点。
可扩展性
比特币区块大约每十分钟创建一次,且容纳的交易数量有限。区块空间属于稀缺资源,因此用户之间须相互竞价,才能保证自己的交易及时纳入区块空间。矿工最关心的是获取报酬,因此他们会优先纳入手续费更高的交易。
假设没有多名用户试图同时发送资金,这其实并不会成为问题。您可以将手续费设置得较低,这样交易可能会纳入到下一个区块。但是,如果同时发布交易的用户过多,手续费就会大幅上涨,已多次超过 10 美元。在 2017 年牛市鼎盛时期,手续费一度突破 50 美元。2021 年 4 月,比特币的平均交易手续费甚至超过了 60 美元。
这对于价值数千美元的比特币交易而言,似乎微不足道。但小额支付却举步维艰。谁会愿意为买一杯3美元的咖啡而额外支付10美元呢?
使用闪电网络仍需支付两项手续费,即开启和关闭通道的手续费。通道开启后,您和您的交易对手可免费进行数千笔交易。交易完成后,只需将最终状态发布到区块链即可。
从宏观角度来看,如果有更多人选择闪电网络等链下解决方案,区块空间的使用效率将得到提高。小额、高频次的转账通过支付通道进行,而区块空间则用于大额交易和通道开启/关闭。如此一来,访问系统的用户群体数量增加,可扩展性进而获得长久发展。
小额支付
比特币设有最低交易金额,约为 0.00000546 BTC。截至本文撰稿时,约等值于 38 美分。这已经是很小的数额,但闪电网络将交易限额压得更低,按目前最小的单位来算,为 0.00000001 BTC,即1聪。
闪电网络对小额支付更具吸引力。按照常规交易的手续费,在主链上发送小金额显得不切实际。然而在通道内,则可免费发送比特币的微小零头。
小额支付适用于众多用例。有人预测小额支付会成为订阅服务模式的有效替代方案,这样用户只需就每次使用的服务支付很小的金额。
隐私
闪电网络的第二个好处是用户信息的保密程度更高。各方无需在网络上扩散自己的通道信息。区块链中可能会显示“该交易开启了通道”,但不会透露交易详情。如果参与者选择将通道设为私密状态,则交易进展仅本人可见。
假设Alice和Bob共享通道,Bob又与Carol共享另一个通道,则Alice和Carol可通过Bob相互发送付款。如果Dan与Carol建立连接,Alice同样可向他发送付款。试想将这种模式扩展到支付通道相互连接的庞大网络中。按照这样的设置,只要通道关闭,就无法确定Alice究竟向谁发送了资金。
闪电网络如何运作?
我们已经从更高的层次上解释了闪电网络如何依赖节点之间的通道。下文将为您介绍其底层的具体原理。
多重签名地址
多重签名(或英文简称“multisig”)是可供多个私钥支付的地址。用户创建多重签名后,就能指定支付资金及签署交易所需的私钥数量。例如,5 取 1 方案指五个密钥生成一个有效签名,且签署交易仅需一个密钥。而 3 取 2 方案表示,用户必须持有三个密钥中的两个才能支付资金。
要预置闪电网络通道,参与者需在 2 取 2 方案中锁定资金,即仅需两个私钥即可签署交易,而划转代币同样需要这两个私钥。让我们回到 Alice 和 Bob 的示例。接下来几个月内,他们需相互支付大笔款项,因此,他们决定开启闪电网络通道。
首先,他们在共有的多重签名地址中分别存入3 BTC。需特别强调的是,未经Alice同意,Bob无法把资金转出地址,反之亦然。
他们只需在调整两边余额时留下一纸记录。双方各自拥有3 BTC的初始余额。如果Alice想向Bob支付1 BTC,为何不直接记下Alice现有2 BTC,而Bob的余额为4 BTC呢?在决定真正转出资产之前,这样记录可以追踪到余额。
这种方式行之有效,但其中有什么奥妙呢?其实更重要的是,这样是不是让彼此合作变得易如反掌了呢?假设Alice最终拥有6 BTC,而Bob空无分文,那么Bob拒绝释放资金就不会有任何损失(或许失去的只是与Alice的友谊吧)。
哈希时间锁合约(HTLC)
上述系统很枯燥单调,与目前的受信任设置相比,没有什么过人之处。我们接下来介绍的机制可强制执行Alice与Bob之间的“合约”,就会有趣得多。如果其中一方不按规则行事,则另一方可采取补救措施,将资金撤出通道。
这种机制称为“哈希时间锁合约”(缩写为 HTLC)。这个术语听上去令人生畏,但实际上是个非常简单易懂的概念。它结合了哈希锁和时间锁两种技术,对支付通道中各种拒不配合的操作采取补救措施。
哈希锁是附加在交易中的一个条件,规定用户需证明自己知道某个秘密才能动用资金。汇款方对一段数据进行哈希运算,并将带有哈希值的交易发送给收款方。而收款方只有提供与哈希值匹配的初始数据(即秘密),才能动用资金。唯一能获取该数据的途径是由汇款方告知。
时间锁是防止在特定时间前动用资金的限制条件,可指定具体时间,或特定区块高度。
哈希时间锁合约(HTLC)通过结合哈希锁和时间锁而创建。在实际运用中,哈希时间锁合约(HTLC)可用于创建条件支付,即接收方须在特定时间前提供某个秘密,否则发送方收回资金。以下通过示例解释会更加浅显易懂。那么,让我们说回Alice和Bob。
开启和关闭通道
我们之前举了例子,设想Alice和Bob刚创建交易,双方向共享的多重签名地址存入资金。但是这些交易还没发布到区块链当中!我们需要先做一件事。
三枚代币来自Bob,还有三枚代币则来自Alice。
请记住,从多重签名中取出这些代币的唯一途径是 Alice 和 Bob 共同签署交易。如果 Alice 要把全部六枚代币发送到外部地址,需获得 Bob 批准。她先发起一笔交易,指明“将六枚比特币发送到该地址”,然后加上自己的签名。
如果她尝试立即发布交易,但没有Bob的签名包含其中,则交易无效。Alice须先将不完全交易交给Bob。他签名之后,交易才生效。
到此为止,我们还没建立督促众人诚信交易的机制。正如前文所述,如果交易对手拒绝合作,资金就会彻底困住。让我们来了解一下预防此类情况的机制。该机制涉及多步骤操作,请耐心听我们逐一介绍。
双方各提供一个秘密,我们姑且称之为秘密“As”和秘密“Bs”。双方一旦透露秘密,结果不堪设想。因此,他们暂时要保守住秘密。两个秘密分别生成各自的秘密哈希值,即 h(As) 和 h(Bs)。这样双方无需分享秘密,只需彼此分享哈希值。
Alice与Bob相互分享秘密哈希值。
Alice 和 Bob 在向多重签名地址发布首笔交易之前,还需创建一系列承诺交易,即防止对方扣押资金的补救措施。
如果把通道想象成我们之前提过的迷你账本,那么承诺交易就是对账本的更新。每当创建一组新的承诺交易,就是在对二位参与者的资金进行再平衡。
Alice 的交易有两个输出,一个支付她拥有的地址,另一个锁进新的多重签名地址。她签名后交给 Bob。
Alice的交易有两个输出,一个到她自己的地址,另一个到新的多重签名,且需Bob签名才能生效。
Bob的情况一样,一个输出支付自己,另一个支付其他的多重签名地址。他签名后交给Alice。
两笔大同小异的不完全交易。
通常而言,Alice 可在给 Bob 的交易中添加签名,让交易生效。但是我们注意到,这些支出资金来自于尚未注资的的 2 取 2 多重签名。这类似于试图从目前余额为零的账户中支出支票。因此,这些部分签名的交易只有在多重签名启动和运行后才能使用。
新的多重签名地址,即3 BTC输出的目的地,具有一些特性。我们来看一下Alice签名给Bob的不完全交易。多重签名输出可在以下条件下使用:
双方可以合作签署交易。
由于有时间锁,Bob 在一段时间后才能自行花销。
Alice如果知道Bob的秘密Bs,就能够动用资金。
对于Bob给Alice的交易:
双方可以合作签署交易。
Alice 在一段时间后方可自行花销。
Bob如果知道Alice的秘密As,就能够动用资金。
请记住,双方均不知道彼此的秘密,因此条件 3 暂时无法实现。另一个注意事项是,如一方签署了交易,交易对手就能够立即动用资金,因为他们的输出未设置任何条件限制。签署方可以等待时间锁到期后自行花销资金,也可以与对方合作直接共同花销。
一切顺利!现在就能把交易发布到初始的 2 取 2 多重签名地址中去。这样做是安全的,因为您可以在交易对手放弃该通道时收回资金。
交易确认后,通道将开启并运行。第一对交易显示的是迷你账本的当前状态。这时,账本向 Bob 支付 3 BTC,并同样向 Alice 支付 3 BTC。
Alice要向Bob支付新款项时,两人会创建两笔新的交易来取代第一组交易。操作方式如出一辙,这笔交易会由各自签署一半。只是Alice和Bob要先放弃他们的旧秘密,并为下一轮交易交换新的哈希值。
例如,Alice要向Bob支付1 BTC,两笔新交易会把2 BTC存给Alice,而4 BTC给Bob。这样,余额就会更新。
双方均可随时签署和发布最近的一笔交易并在区块链完成“结算”。然而,签署发布方需等待时间锁到期,而另一方可马上花销费用。请记住,如果Bob签署和发布了Alice的交易,她就能拥有一次无条件输出。
双方可就一起关闭通道达成共识,即合作关闭。这是资金返回链上最便捷的途径。但是,如有一方没有回应或拒绝合作,另一方可在时间锁到期后收回资金。
闪电网络如何预防作假?
我们可能会注意到此处存在攻击向量。假设 Bob 现有余额为 1 BTC,要怎样才能阻止他发布余额更高的旧交易?毕竟他已经从 Alice 那里拿到了半签名的交易,他只需加上自己的签名就可以发布了,对吧?
没有任何措施能阻止他这样操作。但如果真要这么做,他可能会损失全部余额。假设他确实发布了旧交易,交易内容是向 Alice 支付 1 枚代币,并向我们此前提到的多重签名地址支付 5 枚代币。
Alice 马上就会收到代币,但 Bob 必须等到时间锁到期才能从多重签名地址进行花销。是否记得我们上面提过,还要具备另一个条件,Alice 才能立即动用同一笔资金?她需要掌握一个自己当时不知晓的秘密。但是现在她已经知道这个秘密了 – 第二轮交易刚刚创建,Bob 泄露了这个秘密。
在Bob只能静待时间锁到期时,Alice就能挪走所有资金。这种带有惩罚性质的机制确保参与者不会打歪主意试图作假,否则交易对手将获得他们的代币。
通道支付
我们之前说到过这个问题,通道之间可以建立连接,否则闪电网络无法有效支持支付功能。试想我们是否真的会预存 500 美元到同一家咖啡店,就为了接下来几个月每天都去喝上一杯?
其实完全没有必要这样做。如果 Alice 和 Bob 开启了通道,而 Bob 和 Carol 也已建立通道,那么 Bob 就能通过通道向二者付款。Alice 通过这种方式跨越多个“跳点”,就能向路径中的任何人付款。
在这种情况下,Alice可通过多通道抵达Frank处。实际操作时,她一定会选择最便捷的通道。
中间机构在通道中起到一定作用,可能会收取少量手续费,但非强制收取。闪电网络仍相对较新,收费市场还未成形。许多人期望能够基于流动性收取手续费。
在基础链中,用户手续费仅取决于其交易所占用的区块空间,与传输价值无关。也就是说,支付 1 美元与 1000 万美元的手续费是相同的。相比之下,闪电网络不存在区块空间一说。
但是,存在本地余额和远程余额的概念。本地余额是指一方可“推送”到通道另一端的金额,而远程余额则是指交易对手可推送回本地一方的金额。
再来举个例子。下面我们详细了解一下上述其中一条路径:Alice <> Carol <> Frank。
Alice向Frank转账0.3 BTC之前和之后各位用户的余额。
Alice <> Carol和Carol <> Frank两条路径各有 1 BTC 的总容量。Alice 的本地余额为 0.7 BTC。假设大家此时在区块链中结算,则 Alice 将收到 0.7 BTC,而 Carol 将收到 0.3 BTC 的远程余额。
假设Alice要向Frank发送0.3 BTC,她会向Carol通道一侧推送0.3 BTC。然后Carol从自己的本地余额经通道向Frank推送0.3 BTC。最终,Carol的余额保持不变:来自Alice的+0.3 BTC和发送至Frank的-0.3 BTC相互抵消。
Carol 并没有因为充当 Alice 和 Frank 之间的纽带而损失价值,但是自己的资金支配灵活性变差。可以看到,她目前在与 Alice 的通道中可花销 0.6 BTC,但在与 Frank 的通道端只能支配 0.1 BTC。
我们设想一种情况,Alice只与Carol连接,而Frank连接的网络范围更广。此前,Carol通过Frank可向他人共计发送0.4 BTC,但现在她的通道一端只有0.1 BTC可供向外推送。
在这种情况下,Alice 实际上正在蚕食 Carol 的资金流动性。在没有任何激励的情况下,Carol 并不想让自己处于劣势。因此,她可能会提出“从我的通道每输出 0.01 BTC,我将收取 10 聪的手续费”。这样一来,Carol 在“较强”路径中舍弃的本地余额越高,赚取的手续费就越多。
如前所述,这里并没有事实上的收费要求。有人并不担心流动性变差,而有人只想与接收者直接开启通道。
闪电网络的局限性
如果事实证明,闪电网络能让比特币所有可扩展性问题迎刃而解,就皆大欢喜。但很遗憾,闪电网络存在着阻碍自身发展的缺点。
可用性
对于初学者而言,比特币并不是最直观的系统,地址和手续费等可能都会让人摸不着头绪。设置好闪电网络客户端之后,用户还需开启通道才能进行支付。这个过程非常耗时,尤其当新人接触到“入站/出站容量”等概念,更是一头雾水。
所以说,闪电网络还需不断改进,降低准入门槛,让用户获得更流畅的体验。
流动性
闪电网络的一大诟病在于用户的交易能力可能会受到限制。个人支出不能超过锁定在通道中的金额。如果有人要支出所有资金,把通道的所有资金转到远程余额,则必须关闭该通道。或者,被动等待他人通过该通道进行支付,但这并不是理想的方式。
个人路径受限于通道总容量。以此前的 Alice <> Carol <> Frank为例。如果 Alice 和 Carol 的通道有 5 BTC 的容量,而 Carol 和 Frank 的容量仅为 1 BTC,那么 Alice 永远无法发送超过 1 BTC 的金额。即便如此,所有余额需在 Carol <> Frank通道的 Carol 一端才能保证闪电网络的正常运作。这会严重限制通过闪电网络通道传输的资金量,继而连带影响到网络的实用性。
中心化枢纽
基于前面提到的问题,有人担心这样的网络会催生出大量“枢纽”,即具有强劲流动性且密切关联的大型实体,让所有大额支付都通过这些实体通道。
显然,这种发展势头并不是好现象。中心化枢纽会削弱系统,因为这些实体离线会严重扰乱用户之间的关系。此外,由于只有少数几个点进行交易,审查风险随之增加。
闪电网络的现状
截至 2024 年 3 月,闪电网络运行良好。它拥有超过 1.3 万个在线节点,5.2 万多个活跃通道,且容量已突破 4,570 BTC。
闪电网络节点的全球分布。
在众多不同的节点实现当中,Blockstream 的 c-lightning、Lightning Labs 的闪电网络守护进程 (Lightning Network Daemon) 以及 ACINQ 的 Eclair 尤为热门。针对不太精通技术的用户,许多公司推出了即插即用节点。用户只需接通设备电源,即可开始使用闪电网络。
结语
自 2018 年推出主网以来,闪电网络已实现了大幅增长。目前,只有具备一定技术熟练程度的用户才会操作闪电网络节点,因此网络仍需攻克一些可用性障碍。不过,随着该网络的大力开发,准入门槛有望逐渐降低。
延伸阅读
免责声明:本文内容按“原样”提供,仅作一般资讯及教育用途,不构成任何陈述或保证。本文不构成财务、法律或其他专业建议,且无意建议购买任何特定产品或服务。您应自行向合适的专业顾问寻求建议。如本文由第三方投稿,请注意本文观点属于第三方投稿人,不一定反映币安学院的观点。欲知详情,敬请点击此处阅读免责声明全文。数字资产价格可能会波动。您的投资价值可能会下跌或上涨,且您可能无法收回投资本金。您应全权负责自己的投资决策,币安学院对您可能遭受的任何损失概不负责。本文不构成财务、法律或其他专业建议。欲知详情,敬请参阅我们的《使用条款》和《风险提示》。