区块链-闪电网络示例

目录:http://www.javashuo.com/article/p-nitsjfvy-ey.html 算法

摘自《精通比特币》网络

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

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

闪电网络的原型实施已经由几个团队发布。如今,这些实现只能在testnet上运行, 由于它们使用segwit,尚未在比特币区块主链(mainnet)上激活。设计

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

让咱们看看它是如何工做的。blog

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

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

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

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

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 比特币。付款路线中的 中间方没必要要互相信任。在他们的通道内作一个短期的资金承诺,他们能够赚 取一小笔费用,惟一的风险是,若是通道关闭或路由付款失败,退款有段短短的 延迟时间。