第十四章. 二层应用 #3 - 闪电网络

  • berry
  • 发布于 2025-02-09 22:59
  • 阅读 11

路由支付通道(闪电网络)

闪电网络(LN)是一个提议的双向支付通道的路由网络,连接端到端。这样的网络可以允许任何参与者在不信任任何中间人的情况下将支付从一个通道路由到另一个通道。LN最早由Joseph Poon和Thadeus Dryja于2015年2月描述,建立在许多其他人提出和详细阐述的支付通道概念之上。

“闪电网络”指的是一个用于路由支付通道网络的特定设计,目前至少有五个不同的开源团队实现了该设计。这些独立的实现由一组在闪电技术基础(BOLT)存储库中描述的互操作性标准协调。

基本闪电网络示例

让我们看看这是如何工作的。 在这个示例中,我们有五个参与者:Alice、Bob、Carol、Diana和Eric。这五个参与者之间已经建立了支付通道,成对连接。Alice与Bob有一个支付通道,Bob与Carol连接,Carol与Diana连接,Diana与Eric连接。为简单起见,让我们假设每个通道由每个参与者提供2比特币的资金,因此每个通道的总容量为4比特币。

图14-6显示了闪电网络中的五个参与者,通过双向支付通道相连,可以将支付从Alice发送到Eric(请参见第332页的“路由支付通道(闪电网络)”)。

<figure><img src="https://img.learnblockchain.cn/masterbitcoin3/assets/14.6.png" alt=""><figcaption><p>图 14-6. 一系列双向支付通道连接在一起形成一个闪电网络,可以将支付从Alice发送到Eric。</p></figcaption></figure>

Alice想要支付给Eric 1比特币。然而,Alice与Eric之间没有通过支付通道连接。创建支付通道需要一笔资金交易,这笔交易必须被提交到比特币区块链上。Alice不想打开一个新的支付通道并承诺更多的资金。有没有一种间接支付给Eric的方法呢?

图14-7显示了从Alice到Eric的支付通过一系列连接参与者的支付通道上的HTLC承诺的逐步过程。

<figure><img src="https://img.learnblockchain.cn/masterbitcoin3/assets/14.7.png" alt=""><figcaption><p>图 14-7. 使用LN 的支付路由步骤</p></figcaption></figure>

Alice要向Eric支付1比特币。然而,Alice与Eric之间没有通过支付通道连接。创建支付通道需要一个资金交易,这必须提交到比特币区块链上。Alice不想开启一个新的支付通道并投入更多的资金。有没有一种方法可以间接地支付给Eric呢? 图14-7展示了从Alice向Eric路由支付的逐步过程,通过连接连接参与者之间的HTLC承诺的一系列支付通道。

步骤1:Alice的LN节点跟踪着她与Bob的支付通道,并且能够发现不同通道之间的路由。此外,Alice的LN节点能够通过互联网连接到Eric的LN节点。Eric的LN节点使用随机数生成器生成一个秘密R。Eric的节点不会向任何人透露这个秘密。相反,Eric的节点计算了秘密R的哈希H,并以发票的形式将哈希传输给Alice的节点。

步骤2:现在Alice的LN节点在Alice的节点和Eric的节点之间构建了一条路由。Alice的节点使用路径查找算法找到了一个有效的路由。

然后,Alice的节点构建了一个HTLC,付给哈希H,设置了10个区块的退款超时(当前区块 + 10),金额为1.003比特币。Alice向Bob提供了这个HTLC,从她与Bob的通道余额中扣除了1.003比特币,并将其分配给了HTLC。 HTLC的含义是:“如果Bob知道这个秘密,Alice承诺将通道余额中的1.003比特币支付给Bob,如果10个区块后Alice将其回收。” Alice的余额通过与Bob的通道的承诺交易来表达,其中包含三个输出:2比特币给Bob,0.997比特币给Alice,1.003比特币被提交给了Alice的HTLC。 Alice的余额减少了HTLC提交的金额。

步骤3:Bob现在有了一项承诺,如果他能在接下来的10个区块内获得秘密R,他就可以获得Alice锁定的1.003比特币。有了这个承诺,Bob的节点在他与Carol的支付通道上构建了一个HTLC。Bob的HTLC承诺了1.002比特币给哈希H,持续9个区块,卡罗尔可以在其中拥有秘密R的情况下赎回。 Bob知道,如果Carol能够声明他的HTLC,她必须提供R。如果Bob在9个区块内获得R,他可以用它来获取Alice向他的HTLC。如果Carol无法获取他的HTLC并且他无法获取Alice的HTLC,一切将恢复到之前的通道余额,没有人会损失。 Bob和Carol之间的通道余额现在是:2给Carol,0.998给Bob,1.002由Bob提交给了HTLC。

步骤4:现在,Carol有了一项承诺,如果她在接下来的九个区块内获得秘密R,她就可以获得Bob锁定的1.002比特币。现在,她可以在她与Diana的通道上进行HTLC承诺。她对哈希H承诺了1.001比特币,持续8个区块,Diana可以在其中拥有秘密R的情况下赎回。从Carol的角度来看,如果这样做可以获得0.001比特币,并且如果失败,她不会损失任何东西。她向Diana的HTLC只有在R被揭示后才有效,此时她可以从Bob那里获得HTLC。Carol和Diana之间的通道余额现在是:2给Diana,0.999给Carol,1.001由Carol提交给了HTLC。

步骤5:最后,Diana可以向Eric提供一个HTLC,承诺1比特币给哈希H,持续7个区块。Diana和Eric之间的通道余额现在是:2给Eric,1给Diana,1由Diana提交给了HTLC。

在这一步的路由中,Eric知道秘密R。因此,他可以要求Diana提供的HTLC。他将R发送给Diana并领取了1比特币,将其添加到他的通道余额中。

现在,Eric和Diana之间的通道余额是:1给Diana,3给Eric。 现在,Diana知道了秘密R。因此,她现在可以要求Carol提供的HTLC。Diana将R发送给Carol,并将1.001比特币添加到她的通道余额中。现在,Carol和Diana之间的通道余额是:0.999给Carol,3.001给Diana。 Diana参与了此支付路由,获得了0.001的收益。

通过路由返回,秘密R使每个参与者都能够要求未完成的HTLC。 Carol从Bob那里要求了1.002,将他们的通道余额设置为:0.998给Bob,3.002给Carol。最后,Bob从Alice那里要求了HTLC。 他们的通道余额更新为:0.997给Alice,3.003给Bob。

Alice向Eric支付了1比特币,而不需要向Eric开启一个支付通道。支付路由中的任何中间方都不必互相信任。通过在通道中短暂承诺他们的资金,他们能够赚取一小笔费用,唯一的风险是如果通道关闭或路由支付失败,会有一小段时间的退款延迟。

闪电网络传输和路径查找

\ 闪电网络节点之间的所有通信都是点对点加密的。此外,节点具有用作标识符和相互验证的长期公钥。

当节点希望向另一个节点发送付款时,首先必须通过连接具有足够容量的付款通道来构建网络路径。节点会广播路由信息,包括它们打开的通道、每个通道的容量以及它们收取的路由费用。路由信息可以通过各种方式共享,随着LN技术的发展,不同的路径查找协议也应运而生。当前实现的路径发现使用P2P模型,其中节点以“泛洪”模式将通道公告传播给它们的对等节点,类似于比特币传播交易的方式。

在我们之前的例子中,Alice的节点使用这些路径发现机制之一找到连接她的节点和Eric的节点的一个或多个路径。一旦Alice的节点构建了一条路径,她将通过将一系列加密的和嵌套的指令传播到相邻的每个支付通道来初始化该路径。

重要的是,此路径仅为Alice的节点所知。付款路由中的所有其他参与者只看到相邻的节点。从Carol的角度来看,这看起来像是Bob向Diana支付的付款。Carol不知道Bob实际上是在转发Alice的付款,她也不知道Diana将要向Eric转发一笔付款。

这是LN的一个关键特性,因为它确保了付款的隐私,并且使得很难对其进行监视、审查或黑名单。但是,Alice如何建立这个付款路径而不向中间节点透露任何信息呢?

LN实现了一种基于名为Sphinx的方案的洋葱路由协议。此路由协议确保付款发送方可以构建和传输一条通过LN的路径,以便:

  • 中间节点可以验证和解密它们的路由信息的一部分,并找到下一个跳点。
  • 除了前一个和下一个跳点之外,它们无法了解路径中的任何其他节点。
  • 它们无法确定付款路径的长度或自己在该路径中的位置。
  • 路径的每个部分都以一种方式加密,以使网络级攻击者无法将路径的不同部分的数据包相互关联。
  • 与互联网上的洋葱路由匿名协议Tor不同,没有“出口节点”可以被监视。付款不需要传输到比特币区块链上;节点只需要更新通道余额。

使用这种洋葱路由协议,Alice将路径的每个元素都包装在一层加密中,从最后开始,逐层向后处理。她使用Eric的公钥对一条消息进行加密,以将消息发送给Eric。然后,将此消息包装在一个加密的消息中,发送给Diana,同时将Eric标识为下一个接收者。对Diana的消息再次被包装在一个加密的消息中,发送给Carol,同时将Diana标识为下一个接收者。对Carol的消息被加密到Bob的公钥。因此,Alice构建了这个加密的多层“洋葱”消息。她将其发送给Bob,后者只能解密并解开外层。在内部,Bob发现了一条地址给Carol的消息,他可以转发给Carol,但自己无法解读。随着路径的传递,消息被转发、解密、转发,以此类推,一直到Eric。每个参与者只知道前一个和下一个节点在每一跳中。

路径的每个元素包含有关必须传递给下一跳的HTLC、发送的金额、要包括的费用以及HTLC的CLTV锁定时间(以区块为单位)到期的信息。随着路由信息的传播,节点将HTLC承诺转发到下一个跳点。

这时,你可能会想知道节点如何不知道路径的长度和自己在该路径中的位置。毕竟,他们收到一条消息并将其转发给下一个跳点。这条消息不是变得更短了吗,以便他们可以推断出路径的大小和自己的位置?为了防止这种情况发生,数据包的大小是固定的,并填充了随机数据。每个节点只能看到下一个跳点和一个固定长度的加密消息以转发。只有最终的接收者看到没有下一个跳点。对于其他人来说,似乎总是还有更多的跳点要走。

闪电网络的好处

闪电网络是一种第二层的路由技术。它可以应用于支持一些基本功能的任何区块链,如多重签名交易、时间锁和基本智能合约

闪电网络建立在比特币网络之上,为比特币增加了显著的容量、隐私、细粒度和速度,同时不损害无需中介进行无信任操作的原则:

隐私

闪电网络支付要比比特币区块链上的支付更加私密,因为它们不是公开的。虽然路由中的参与者可以看到沿着它们的通道传播的支付,但他们不知道发件人或收件人。

可替换性

闪电网络使对比特币进行监视和黑名单的难度大大增加,增强了货币的可替代性。

速度

使用闪电网络的比特币交易在毫秒内结算,而不是像使用HTLCs在交易提交到区块之前需要数分钟甚至数小时的时间。

细粒度

闪电网络可以实现至少与比特币的“尘埃”限制一样小的支付,甚至可能更小。

容量

闪电网络通过几个数量级增加了比特币系统的容量。可以通过闪电网络路由的每秒支付数量的上限仅取决于每个节点的容量和速度。

无信任操作

闪电网络使用各个节点之间作为对等方的比特币交易。因此,闪电网络保留了比特币系统的原则,同时显著扩展了其运行参数。

我们仅仅探讨了使用比特币区块链作为信任平台构建的一些新兴应用。这些应用将比特币的范围扩展到了支付之外。

现在你已经读到了本书的末尾,你会如何运用你所获得的知识呢?数百万甚至数十亿人知道“比特币”这个名字,但只有很少一部分人像你现在这样对比特币的工作原理了解得很多。这种知识是宝贵的。更宝贵的是像你这样对比特币充满兴趣,愿意花时间阅读几百页内容的人。

如果你还没有开始行动,请考虑以某种方式为比特币做出贡献。你可以运行一个全节点来验证你收到的比特币支付,构建可以让其他人更轻松使用比特币的应用程序,或者帮助教育其他人了解比特币及其潜力。你甚至可以采取罕见的步骤,为开源比特币基础设施软件做出贡献,比如比特币核心,与一小部分非常聪明的人一起精心构建工具,尽管没有人会为此付费,但可能有数十亿人会依赖这些工具。

无论你的比特币之旅是什么样子,我们都感谢你将《精通比特币》纳入其中。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论