介绍

加密货币有几个独特的属性:它们不容易被黑客攻击或禁用,任何人都可以使用它们在世界各地转移资金,而无需任何中介机构。

这些功能的安全性是通过一定的妥协来保证的:由于许多节点负责加密货币网络的运行,因此其吞吐量是有限的。因此,对于旨在大规模采用的技术来说,区块链网络每秒可以处理的交易数量(TPS)相对较低。

为了克服这些限制并提高网络吞吐量,已经提出了许多可扩展性解决方案。在本文中,我们将研究比特币协议的扩展之一——闪电网络。


什么是闪电网络?

闪电网络是部署在区块链之上的网络,用于实现快速点对点 (P2P) 交易。该解决方案不仅适用于比特币:其他加密货币(例如莱特币)也可以集成它。

“部署在区块链之上”是什么意思?闪电网络是一种链下解决方案,或者说是第二层解决方案。它允许您进行转账,而无需在区块链上记录每笔交易。

闪电网络与比特币网络是分开的:它有自己的节点和软件,但仍然必须与主链通信。要进入或离开闪电网络,您需要在区块链上创建特殊交易。

您的第一笔交易会与另一个用户创建某种智能合约。我们很快就会整理出所有细节。现在,想象一个与另一个用户形成私人分类账的智能合约。在这个分类账中,您可以记录许多交易,并且只有您和您的合作伙伴可以看到它们,但由于某些特定功能,你们都无法欺骗系统。

这个迷你寄存器称为通道。假设 Alice 和 Bob 各向智能合约存入 5 BTC。他们频道上的余额是每个 5 BTC。然后,Alice 可以进入寄存器将 1 BTC 转给 Bob。 Bob 现在有 6 个 BTC,Alice 将有 4 个。然后 Bob 向 Alice 发送 2 个 BTC,将余额更新为 Alice 6 BTC,Bob 4 BTC。这种情况可能会持续一段时间。

任何时候,他们中的任何一个都可以在区块链上发布通道的当前状态。此时,通道各方的余额将分配给链中相应的各方。

闪电网络上的交易以闪电般的速度发生(其名字的意思是闪电)。由于无需等待区块确认,因此可以以互联网连接支持的最大速度进行支付。


实施闪电网络需要什么?

闪电网络(LN)是目前扩展比特币区块链最明智的方法。在如此庞大的生态系统中协调变化非常困难,因为存在硬分叉和潜在错误的风险。由于这些和其他原因,在线进行任何实验都是极其危险的。

如果你在区块链之外进行类似的实验,你可以获得更灵活的解决方案。在这种情况下,错误和故障不会影响比特币网络。第二层解决方案不会破坏该协议已运行 10 多年的安全基础。

也没有必要改变旧的做事方式。链上交易(网络内)继续对所有最终用户正常运行,但此外,还可以执行链下(网络外)交易。

使用闪电网络有几个好处。我们将看看下面的一些主要内容。


可扩展性

比特币区块每十分钟创建一次,并且可以包含一定数量的交易。区块内的空间是有限的,因此用户通过下注来推动交易。由于矿工主要对收入感兴趣,因此他们首先处理费率最高的交易。

当少数用户同时发送资金时,这不是问题。如果活动很少,即使佣金较低的交易也很可能被包含在下一个区块中。但如果很多人转账,平均佣金就会大幅增加。纵观历史,该费用曾数次突破5美元,并在2017年牛市顶峰时升至50美元以上。


Средняя комиссия за транзакцию биткоина (в USD)

平均比特币交易费用(美元)


对于几千美元的交易来说,这似乎微不足道,但对于小额转账来说,这是一个关键因素。谁愿意支付 3 美元的咖啡并支付 5 美元的转账费?

使用闪电网络,您仍然需要支付两项费用:一项用于打开通道,一项用于关闭通道。但您和您的交易对手有机会在开放渠道内完全免费地进行数千笔交易。完成所有必要的操作后,您只需将余额的最终状态发布到区块链即可。

在全球范围内,越多的用户依赖闪电网络等自主解决方案,区块空间的使用就会变得越高效。低频和高频转账可以在支付通道内进行,而区块空间将用于较大的交易和此类通道的打开/关闭。这将使该系统可供更广泛的用户群使用,并允许网络长期扩展。


小额支付

在比特币中,最小交易规模为 0.00000546 BTC——在撰写本文时,这大约是 4 美分。虽然金额很小,但您最多可以向闪电网络发送 0.00000001 BTC,即一个聪。

当谈到小额支付时,闪电网络是这种情况下最可行的选择。为常规交易支付费用使得在主链上发送小额金额变得不切实际,但在通道内,您可以完全免费地移动小块比特币。

小额支付适用于各种用例。一些人认为它们可以成为基于签名的模型的可行替代品,在该模型中,用户每次使用特定服务时都会支付少量费用。


保密

闪电网络的第二个优势是用户隐私的高度保护。各方无需在线发布有关其渠道的信息。区块链仅提供特定交易打开通道的信息,但详细信息仍然未知。如果成员将他们的频道设为私有,那么只有他们才会知道其中正在发生什么交易。

如果Alice与Bob有通道,Bob与Carol有通道,则Alice和Carol可以通过Bob向对方发送资金。如果 Dan 与 Carol 有联系,Alice 也可以将资金转移给他。您可以将其视为一个不断扩大、广泛的互连支付渠道网络。通过这种设置,您无法确定在通道关闭后 Alice 将资金发送给了谁。


怎么运行的?

因此,上面我们已经粗略地了解了闪电网络如何依赖节点之间的通道。现在让我们从内部看一下系统是如何工作的。


多重签名地址

多重签名地址涉及使用多个私钥来完成转账。创建时,会指示可以花费资金并签署交易所需的私钥数量。例如,1 of 5 方案意味着五个密钥可以创建有效的签名,但只需要一个即可完成传输。方案 2 of 3 将意味着在三个可能的密钥中,需要两个进行翻译。

为了创建闪电通道,参与者将资金锁定在二取二的方案中,只有两个私钥可以创建签名,并且需要两个私钥来转移代币。让我们用爱丽丝和鲍勃的例子来看看这个。他们预计在未来几个月内进行大量转账,因此他们正在闪电网络上创建一个通道。

首先,他们两人都将 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 刚刚创建了为多重签名地址提供资金的交易。他们计划在不久的将来使用这个地址,但到目前为止这些交易尚未在区块链上发布。首先你还需要做一件事。


Три монеты Боба и три монеты Алисы

鲍勃的三枚硬币和爱丽丝的三枚硬币


请记住,从多重签名钱包中提取硬币的唯一方法是双方共同签署交易,这意味着她需要鲍勃的批准才能将爱丽丝的所有六个硬币发送到外部地址。在这种情况下,她必须创建一个交易(六个比特币到特定地址)并添加她自己的签名。

Alice可以立即尝试广播该交易,但由于Bob没有签名,该交易将无效。 Alice 必须向他提供待处理的交易,一旦他签署,交易就变得有效。

然而,在这种情况下,目前还没有一个程序强制参与者诚实行事。正如我们之前提到的,如果您的交易对手拒绝合作,您的资金实际上就会被困。让我们继续讨论防止这种情况发生的机制。为此,有几个驱动元件可以解决这个问题。

为了避免这种不利的情况,双方都必须想出一个秘密,我们称它们为:A和Bs。如果爱丽丝和鲍勃透露了它们,它们将是坏秘密,所以他们暂时保守秘密。然后,该对生成相应秘密的哈希值:h(As) 和 h(Bs)。因此,他们不是共享秘密,而是交换哈希值。


Алиса и Боб обмениваются хешами своих секретов.

爱丽丝和鲍勃交换他们的秘密的哈希值。


在将转账发送到多重签名地址之前,Alice 和 Bob 需要就某些交易义务达成一致。如果有人决定挪用资金,这可以保证安全。

如果您考虑像我们之前提到的迷你分类账这样的渠道,交易承诺就是您对分类账所做的更新。每次创建一对新的交易义务时,您都在重新平衡两个参与者之间的资金。

Alice 将有两个输出:她补充的第一个地址,以及她绑定到新多重签名地址的另一个输出。她签署了第二个地址并将其交给鲍勃。


Транзакция Алисы с двумя выводами: один с депозитом на ее собственный адрес, а другой с депозитом на новый адрес с мультиподписью. Однако для последнего все еще нужна подпись Боба, чтобы сделать операцию действительной.

Alice 的交易有两个输出:一是存入她自己的地址,一是存入新的多重签名地址。然而,后者仍然需要 Bob 的签名才能使交易有效。


Bob 也做了同样的事情:一个地址是他的个人地址,另一个是多重签名。他在上面签名并把它交给了爱丽丝。


У нас есть две незавершенные транзакции, которые очень похожи.

我们有两笔非常相似的待处理交易。


Alice可以为Bob的交易添加签名,从而批准它。应该指出的是,这些资金是从多重签名 2 of 2 计划中支出的,该计划尚未获得资助。这就像试图兑现一张余额为零的支票一样。因此,这些部分签名的交易只能在多重签名启动后才能使用。

新的多重签名地址(具有 3 BTC 输出)具有一些特定的属性。让我们看一下 Alice 签名并提交给 Bob 的待处理交易。如果满足以下条件,则可以强制执行多重签名推断:

  1. 双方共同签署。

  2. 鲍勃在一段时间后自行翻译(由于时间锁定)。

  3. 如果爱丽丝发现鲍勃的秘密,她就可以花掉余额:废话。

对于交易,Bob 要求 Alice 实现以下操作:

  1. 双方共同签署。

  2. 一段时间后,Alice 自行进行转账。

  3. 如果鲍勃发现爱丽丝的秘密:A,他就可以花掉余额。

请记住,双方都不知道对方的秘密,因此第 3 点尚不可能。还应该注意的是,如果您签署交易,您的交易对手可以立即花掉这笔钱,因为提款没有特殊条件。您可以等到时间到了自己花掉资金,也可以配合对方同时提取。

因此,现在您可以在 2 of 2 方案中使用多重签名将交易发布到原始地址。因此,这是安全的,因为如果您的交易对手离开通道,您可以收到您的资金。

交易确认后,通道开始处理交易。第一对交易向我们展示了迷你账本的当前状态。在此阶段,付款将按顺序分配:3 BTC 给 Bob,3 BTC 给 Alice。

当爱丽丝想要向鲍勃进行新的转账时,双方将需要创建两个新交易来替换第一组交易。惯例保持不变:交易只签署了一半。然而,爱丽丝和鲍勃将不得不放弃他们的旧秘密并为下一轮交易交换新的哈希值。


Например, если Алиса хочет заплатить Бобу 1 BTC. Две новые транзакции зачисляют 2 BTC Алисе и 4 BTC Бобу. Таким образом, баланс обновится.

如果 Alice 想向 Bob 支付 1 BTC,则两笔新交易将分别向 Alice 和 Bob 贷记 2 和 4 BTC。这样余额就更新了。


双方可以随时签署并转让最新交易给对方以进行结算,即将最终信息记录在区块链中。这样做的一方必须等待时间锁定到期,而另一方可以在收到资金时立即花费资金。值得注意的是,如果鲍勃签署交易并将其广播给爱丽丝,她就有机会在没有任何附加条件的情况下退出。

双方可以一起关闭通道(执行合作关闭)——这是将资金返回网络的最简单、最快的方式。但即使其中一方停止响应请求或拒绝合作,另一方也可以在时间锁定到期后返还资金。



您想知道如何开始使用加密货币吗?在币安上购买比特币!



防止闪电网络上的欺诈

您可能已经识别出可能的攻击媒介。如果 Bob 的余额现在是 1 BTC,什么会阻止他选择拥有更多币的旧交易?他已经收到了Alice的签名,他需要做的就是添加他的签名并将交易发送到区块链,对吧?

阻止他采取此类行动的是失去完全平衡的风险。假设他决定这样做并发送了他的旧交易,这给了 Alice 一枚硬币,并向前面提到的多重签名地址发送了 5 枚硬币。

爱丽丝立即收到一枚硬币。反过来,Bob 必须等到时间锁定到期才能花费多重签名地址的余额。如果您还记得上面提到的另一个条件,那么您可能会猜测它会允许 Alice 立即花费相同的余额。她需要一个她当时没有的秘密。自从第二轮交易创建以来,她就有了这个机会,因为鲍勃给了她这个秘密。

当鲍勃等待时间锁到期而无法做任何事情时,爱丽丝可以转移这些资金。这种基于制裁的机制假设参与者不太可能想要尝试作弊,原因很简单,在这种情况下,另一方可以立即访问他们的共享代币。


付款路线

我们之前谈到过这个话题:渠道可以互相联系。否则,闪电网络对于各种支付就不会那么有用。您不会在咖啡馆频道锁定 500 美元来获得接下来几个月的每日承诺,对吗?

但你不必这样做。如果爱丽丝与鲍勃打开了一个通道,并且他与卡罗尔也建立了一个通道,那么鲍勃就可以使用他们之间的连接发送付款。这种机制在多个“跳跃”中起作用,这意味着爱丽丝可以快速地将资金转移给存在类似路径的任何人。


В этом случае Алиса может воспользоваться несколькими путями для взаимодействия с Фрэнком. Как правило, она будет выбирать наиболее простой.

在这种情况下,爱丽丝可以采取多条路线到达弗兰克。实际上,这条路径总是最短的。


中介机构可能会因其在路由中的作用而收取少量费用(可选)。由于闪电网络是一个相对较新的概念,费用市场尚未成熟。许多人期望根据提供商的流动性收取费用。

在底层链上,您的费用取决于您的交易在区块中的排名。交易金额并不重要:从 1 美元到 10,000,000 美元的转账佣金是相同的。相比之下,闪电网络没有区块空间这样的东西。

相反,它使用本地和远程余额的概念。本地余额是可以“推送”到通道另一端的金额,远程余额是对方可以推送给您的金额。

让我们看另一个例子。让我们探索以下路径之一:爱丽丝 <> 卡罗尔 <> 弗兰克。


Балансы пользователей до и после перевода 0,3 BTC от Алисы к Фрэнку.

将 0.3 BTC 从 Alice 转移到 Frank 之前和之后的用户余额。


Alice <> Carol 和 Carol <> Frank 的总吞吐量为 1 BTC。 Alice 的本地余额为 0.7 BTC。如果他们现在决定在区块链上结算,她将收到 0.7 BTC,卡罗尔将收到她的远程余额(即 0.3 BTC)。

如果 Alice 想发送 0.3 BTC 给 Frank,她就发送 0.3 BTC 给 Carol。然后 Carol 从她的本地余额中提取 0.3 BTC 到 Frank 的通道中。结果,Carol 的余额保持不变:Alice 为 +0.3 BTC,Frank 为 -0.3 BTC,不包括所有第三方交易。

卡罗尔充当弗兰克的联络人并没有什么损失,但她确实让自己变得不那么灵活。你看,她现在可以在 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 聪。因此,按照卡罗尔的条件进行交易的本地余额越多,她的头寸就越有利可图。

我们之前提到过,没有实际的佣金要求。有些人可能不担心流动性减少,而另一些人可能会开放渠道只是为了收取费用。


闪电网络的缺点

如果闪电网络能够解决所有比特币可扩展性问题,那就太好了。不幸的是,这个概念有其缺点,可能会阻止这种情况的发生。


使用方便

对于新手来说,比特币并不是最直观的系统:首次引入时,地址、费用和其他一切都可能会令人困惑,但钱包可以让您摆脱如此复杂的事情,并提供类似于现有支付系统的功能:为您的智能手机下载钱包,添加它给它硬币,你就可以开始工作了。

目前这对于闪电网络来说是不可能的。目前的用例非常有限,尤其是在智能手机应用程序方面。原因是闪电节点需要访问比特币节点才能正常运行。

安装客户端后,用户还需要开始开通通道,然后才能进行支付。这可能非常耗时,并且由于涉及许多术语(包括传入/传出带宽),对于新手来说可能会很困难。

然而,技术正在不断改进,降低了进入壁垒,并且变得更容易被用户使用。


流动性

闪电网络的主要问题之一是您的财务选择有限。您的支出不能超过通道中锁定的金额。如果所有资金都分配到远程余额,您很可能必须关闭通道。或者,您可以等待有人向您付款,但这远非理想的解决方案。

路径还可能受到链路总容量的限制。使用前面的示例考虑这一点:Alice <> Carol <> Frank。如果 Alice 和 Carol 的通道有 5 BTC,但 Carol 和 Frank 的通道只有 1 BTC,Alice 将无法通过他们发送超过 1 BTC。然而,即使在这种情况下,在频道“卡罗尔<>弗兰克”中,平衡也必须转移到卡罗尔这边。这一缺点会严重限制闪电网络通道的吞吐量,从而影响可用性。


集中枢纽

由于上一节提到的问题,有人担心该网络会鼓励大型“枢纽”的发展。这表明具有充足流动性的密切相关实体的出现,任何大额支付都将通过其中一些实体进行。

显然,这种情况并不有利。这将削弱系统,因为此类提供商进入离线模式将导致系统要素之间的关系受到严重破坏。由于交易经过多个点,审查风险也增加。


闪电网络发展现阶段

截至2020年4月,闪电网络发展相当成功。该网络拥有 12,000 多个在线节点、30,000 多个活跃通道以及流通中的 920 多个 BTC。


Карта расположения актуальных нод в сети Lightning Network. Источник: explorer.acinq.co

闪电网络中当前节点位置的地图。资料来源:explorer.acinq.co


运行节点有多种不同的实现方式 - 其中最流行的是 Blockstream 的 c-lightning、Lightning Labs 的 Lightning Network Daemon 和 ACINQ 的 Eclair。不想深入研究技术方面的用户可以使用即插即用节点。他们所需要做的就是打开设备并在闪电网络上自由工作。


概括

自 2018 年主网推出以来,闪电网络已经显着扩展,尽管人们普遍认为它仍处于测试阶段。

在这个发展阶段,在易用性上存在一些限制,例如:操作闪电节点需要一定的技术能力,但随着开发的进展,进入门槛预计会降低。

如果上述所有问题都能得到解决,闪电网络可能成为比特币生态系统不可或缺的一部分,从而大大提高可扩展性和交易速度。