摘自《精通比特币》

闪电网络是一种端到端连接的双向支付通道的可路由网络。这样的网络可以允许任何参与者穿过一个通道路由到另一个通道进行支付,而不需要信任任何中间人。 闪电网络由JosephPoon和ThadeusDryja 于2015年2月首次描述,其基础是许多其他人提出和阐述的支付通道概念。

“闪电网络”是指路由支付通道网络的具体设计,现已由至少五个不同的开源团队实施。这些的独立实施是由“闪电技术基础”(BOLT)论文中描述的一组互通性标准进行协作。

闪电网络的原型实施已经由几个团队发布。现在,这些实现只能在testnet上运行, 因为它们使用segwit,还没有在比特币区块主链(mainnet)上激活。

闪电网络是实现可路由支付通道的一种可能方式。还有其他几种旨在实现类似目标的设计,如Teechan和Tumblebit。

让我们看看它是如何工作的。

在这个例子中,我们有五个参与者:Alice,Bob,Carol,Diana,andEric。这五名参与者已经彼此之间开设了支付通道。Alice 和 Bob 有支付通道。Bob 连接 Carol,Carol 连接到 Diana,Diana 连接 Eric。为了简单起见,我们假设每个通道每个参与者都 注资 2 个比特币资金,每个通道的总容量为4个比特币。

下图显示一系列通过双向支付的通道连接在一起形成闪电网络以支持一笔 从 Alice 到 Eric 的付款展示了闪电网络中五名参与者,通过双向支付通道连接, 可从Alice付款到Eric(路由支付通道(闪电网络))。

区块链-闪电网络示例-LMLPHP

Alice 想要支付给 Eric1 个比特币。 不过,Alice 并未通过支付通道连接到 Eric。 创建支付通道需要资金交易,而这笔交易必须首先提交给比特币区块链。 Alice 不想打开一个新的支付通道并支出更多的手续费。 有没有办法间接 支付 Eric?

下图显示了通过在连接各方参与者的支付通道上通过一系列 HTLC 承诺将付款从 Alice 路由到 Eric 的逐步过程。

区块链-闪电网络示例-LMLPHP

Alice 正在运行闪电网络(LN)节点,该节点正在跟踪其向Bob的付费通道,并且能够发现支付通道之间的路由。Alice 的 LN 节点还具有通过互联网连接到 Eric 的 LN 节点的能力。 Eric 的 LN 节点使用随机数生成器创建一个秘密 R。Eric 的节点 没有向任何人泄漏这个秘密。相反,Eric 的节点计算秘密R对应的哈希 H,并将此哈希发送到 Alice 的节点。

现在 Alice 的 LN 节点构建了 Alice 的 LN 节点和 Eric 的 LN 节点之间的路由。所使用的路由算法将在后面进行更详细的解释,但现在我们假设 Alice 节点可以找到一个高效的路由。

然后,Alice 的节点构造一个 HTLC,支付到哈希 H,具有 10 个区块时间的退款超时(当前块+10),数量为 1.003 比特币。 额外的0.003将用于补偿参与此支付路由的中间节点。 Alice将此HTLC提供给Bob, 从和 Bob 之间的通道余额中扣除 1.003 比特币,并将其提交给 HTLC。 该HTLC具有以下含义:“如果 Bob 知道秘密,Alice 将其通道余额的 1.003 支付给 Bob,或者 如果超过10个区块时间后,则退还入 Alice 的余额”。 Alice和Bob之间的通道余 额现在由承诺交易表示,其中有三个输出:Bob 的 2 比特币余额,Alice 的 0.997 比特币余额,Alice 的 HTLC 中承诺的 1.003 比特币。承诺在 HTLC 中的金额从 Alice 的余额中被减去。

Bob 现在有一个承诺,如果他能够在接下来的 10 个区块生产时间内获得秘密 R, 他可以获取 Alice 锁定的 1.003。手上有了这一承诺,Bob 的节点在和 Carol 的支付通道上构建了一个 HTLC。Bob 的 HTLC 提交 1.002 比特币到哈希 H 共 9 个区块时 间,这个 HTLC 中如果 Carol 有秘密 R 她可以兑换。Bob 知道,如果 Carol 要获取他的 HTLC,她必须出示秘密 R。如果 Bob 在 9 个区块的时间内有 R,他可以用它来获取 Alice 的 HTLC 给自己。通过承诺自己的通道余额 9 个区块的时间,他也赚了 0.001 比特币。如果 Carol 无法获取他的 HTLC,并且他也无法获取 Alice 的 HTLC,那么一切都将恢复到以前的通道余额,没有人会亏损。 Bob 和 Carol 之间的通道余额现在是:2 比特币给 Carol,0.998 给 Bob,1.002 由 Bob 承诺给 HTLC。

Carol 现在有一个承诺,如果她在接下来的 9 个区块时间内获得 R,她可以获取 Bob 的锁定 1.002 比特币。现在她可以在她与 Diana 的通道上构建 HTLC 承诺。她提交 了一个 1.001 比特币的 HTLC 到哈希 H,共计 8 个区块时间,如果 Diana 有秘密 R , 她就可以兑换。从 Carol 的角度来看,如果能够实现,她 就可以获得的 0.001 比特币,否则也没有失去任何东西。她提交给 Diana 的 HTLC, 只有在 R 被泄漏的情况下才可行,到那时候她可以从 Bob 那里索取 HTLC。Carol 和 Diana 之间的通道余额现在是:2 给 Diana,0.999 给 Carol,1.001 由 Carol 承诺 给 HTLC。

最后,Diana 可以提供给 Eric 一个 HTLC,承诺 1 比特币,7 个区块时间,到哈希 H 。Diana 与 Eric 之间的通道余额现在是:2 给 Eric,1 给 Diana,1 由 Diana 承诺给 HTLC。

然而,在这条路上,Eric 拥有秘密 R,他可以获取 Diana 提供的 HTLC。他将 R 发 送给 Diana,并获取 1 个比特币,添加到他的通道余额中。 通道平衡现在是: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。

在没有向 Eric 打开通道的情况下,Alice 已经支付了 Eric1 比特币。付款路线中的 中间方不必要互相信任。在他们的通道内做一个短时间的资金承诺,他们可以赚 取一小笔费用,唯一的风险是,如果通道关闭或路由付款失败,退款有段短短的 延迟时间。

06-27 15:24