基本闪电网络示例
Last updated
Last updated
让我们看看这是如何工作的。 在这个示例中,我们有五个参与者:Alice、Bob、Carol、Diana和Eric。这五个参与者之间已经建立了支付通道,成对连接。Alice与Bob有一个支付通道,Bob与Carol连接,Carol与Diana连接,Diana与Eric连接。为简单起见,让我们假设每个通道由每个参与者提供2比特币的资金,因此每个通道的总容量为4比特币。
图14-6显示了闪电网络中的五个参与者,通过双向支付通道相连,可以将支付从Alice发送到Eric(请参见第332页的“路由支付通道(闪电网络)”)。
Alice想要支付给Eric 1比特币。然而,Alice与Eric之间没有通过支付通道连接。创建支付通道需要一笔资金交易,这笔交易必须被提交到比特币区块链上。Alice不想打开一个新的支付通道并承诺更多的资金。有没有一种间接支付给Eric的方法呢?
图14-7显示了从Alice到Eric的支付通过一系列连接参与者的支付通道上的HTLC承诺的逐步过程。
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开启一个支付通道。支付路由中的任何中间方都不必互相信任。通过在通道中短暂承诺他们的资金,他们能够赚取一小笔费用,唯一的风险是如果通道关闭或路由支付失败,会有一小段时间的退款延迟。