闪电网络

闪电网络 (LN) 是位于比特币之上的“第 2 层”支付协定。

旨在实现参与节点之间的快速交易,并已被提议作为比特币可扩展性问题的解决方案。

该方案有点对点系统,可通过双向支付渠道网络对加密货币进行小额支付,而无需委托保管资金。

闪电网络的正常使用包括通过向相关基础区块链(第 1 层)提交资金交易来打开支付通道,然后进行任意数量的闪电网络交易,更新通道资金的暂定分配,而不将这些交易广播到区块链,可选地随后通过广播结算交易的最终版本来关闭支付渠道以分配渠道的资金。

要结算付款,必须关闭通道。为了启动这一过程,一个节点向网络广播最新的结算交易。接下来的事件可以大致以两种方式来考虑,一种是双方确认分配并立即结算资金的合作关闭,另一种是不合作关闭。不合作的关闭可能是合法的,例如,如果一个节点不再是网络的一部分或欺诈性的一个节点广播过时的、不正确的分布。

在不合作的关闭中,资金不会立即结算,但存在一个争议期,在此期间节点可能会质疑广播分发。

如果第二个节点广播更新的分发,则资金将完全转移给他们。这种惩罚性行为被称为违约补救交易,它可以防止节点试图通过广播过期交易来欺骗网络。

历史

Joseph Poon 和 Thaddeus Dryja 于 2015 年 2 月发布了闪电网络白皮书的草稿。

闪电网络得到了移动支付创业家 Jack Dorsey 的认可。

2017 年莱特币的第一笔闪电交易

2017 年 5 月 10 日,Blockstream 的 Christian Decker 在非测试网络上进行了第一次完整、安全的闪电支付,以及莱特币上的第一次闪电支付,发送了在区块链上通常不可能或经济的微观支付,完全结算在几分之一秒。

2019 比特币闪电火炬

2019 年 1 月 19 日,化名 Twitter 用户 hodlonaut 开始对闪电网络进行类似游戏的促销测试,向受信任的收件人发送 100,000 satoshis(0.001 比特币),每个收件人添加 10,000 satoshis(当时为 0.34 美元)发送给下一个受信任的收件人。 “闪电火炬”的支付惠及知名人士,包括 Twitter 首席执行官 Jack Dorsey、莱特币创造者 Charlie Lee、Lightning Labs 首席执行官 Elizabeth Stark 和 Binance 首席执行官“CZ”赵长鹏等。

在达到之前硬编码的 4,390,000 satoshis 限制之前,闪电火炬被传递了 292 次。闪电火炬的最后一笔款项于 2019 年 4 月 13 日作为捐赠 4,290,000 聪(当时为 217.78 美元)捐赠给委内瑞拉比特币的非营利组织,该非营利组织在委内瑞拉推广比特币。

2021 年在萨尔瓦多采用

2021 年 6 月,萨尔瓦多立法议会投票通过立法,使比特币在萨尔瓦多成为法定货币。

该决定基于 El Zonte 的比特币海滩生态系统的成功,该生态系统使用了基于 LN 的钱包。

政府推出了一个使用闪电网络协议的钱包,同时让公民可以自由使用其他比特币闪电钱包。

设计

Andreas Antonopoulos 将闪电网络称为第二层路由网络。

支付通道允许参与者相互转移资金,而无需在区块链上公开他们的所有交易。

这是通过惩罚不合作的参与者来完成的。打开通道时,参与者必须提交一个金额(在区块链上的资金交易中)。

CheckSequenceVerify 和 CheckLockTimeVerify 等基于时间的脚本扩展使惩罚成为可能。

如果我们假设比特币区块链上有一个庞大的通道网络,并且所有比特币用户都通过在比特币区块链上打开至少一个通道来参与这个图表,那么就有可能在这个网络内创建近乎无限量的交易。过早在比特币区块链上广播的唯一交易是与不合作的渠道交易对手。

CheckSequenceVerify (CSV) 比特币改进提案详细说明了如何使用 CSV 实杂凑时间锁定合约并在闪电网络中使用: BIP 0112 (页面存档备份,存于互联网档案馆).

好处

与链上交易相比,使用闪电网络有几个声称的未来好处:

原子交换(Atomic Swap):原子交换由 Tier Nolan 于 2013 年在 BitcoinTalk 论坛上首次引入。Nolan 通过使用跨不同类型区块链的简单加密货币交易概述了跨链加密货币交换的基本原则。快进到 2017 年 9 月,当 Litecoin 创始人 Charlie Lee 在 Twitter 上宣布成功执行 Litecoin 和比特币之间的原子交换时,原子交换引起了整个加密货币社区的关注。

粒度(Granularity):根据 Andreas Antonopoulos 的说法,闪电网络的一些实现允许小于比特币基础层上的最小单位 satoshi 的支付。

支付给闪电网络中间节点的路由费用通常以毫秒或 msat 计价。

隐私(Privacy):个人闪电网络支付的细节不会公开记录在区块链上。

闪电网络支付可以通过许多连续的通道进行路由,每个节点运营商都可以通过他们的通道看到支付,但如果不相邻,他们将无法看到这些资金的来源或目的地。

速度(Speed):闪电网络交易的结算时间不到一分钟,可以以毫秒为单位。

相比之下,比特币区块链的确认时间平均每十分钟发生一次。

交易吞吐量(Transaction throughput):协议下每秒可以发生的支付量没有基本限制。交易量仅受每个节点的容量和速度限制。

限制

闪电网络由两个节点之间的双向支付通道组成,结合起来创建智能合约。如果任何一方放弃通道,通道将关闭并在区块链上结算。

由于闪电网络的争议机制的性质,要求所有用户不断地观察区块炼是否有欺诈行为,因此发展了“瞭望塔(Watchtower)”的概念,可以将信任外包给瞭望塔节点以监控欺诈行为。

路由

如果交易双方之间没有开通双向支付通道,则必须通过网络进行支付。这是使用类似于 Tor 的洋葱路由技术完成的,要求付款的发送者和接收者有足够的共同点来找到付款路径。

实际上,一条简单的路线如下所示:

Bob 想向 Alice 支付 1 BTC,但 Bob 和 Alice 没有相互开放的通道。

Bob 确实有一个与 Carol 开放的频道,而 Alice 也有一个与 Carol 开放的频道为了进行支付,Bob 向 Carol 发送 1 BTC,然后 Carol 向 Alice 发送 1 BTC 关于路由的原始白皮书建议“最终,通过优化,网络将看起来很像第 1 层 ISP”。

实作

BOLT(闪电技术基础)规范于 2016 年底起草。

做了几个实作:

Lightning Labs 在 Go 中的 lnd 实现

Blockstream 在 C 中的核心闪电实现

ACINQ 在 Scala 中的 eclair 实现

其他语言(例如 Rust 和 F#)的其他社群专案(例如“rust-lightning”和“DotNetLightning”)。

Stakenet 基于闪电网络的去中心化交易所(称为 Stakenet DEX)

MIT Digital Currency Initiative 在 Golang 中使用自己的非 BOLT 相容协定的非商业实作

使用案例

Bitfinex 和 Kraken 等加密货币交易所使用它来实现存款和取款。

Laszlo Hanyecz 因 2010 年为两个披萨支付 10,000 比特币而在加密货币社区声名鹊起,他在 2018 年使用闪电网络又购买了两个披萨并支付了 0.00649 比特币。

推荐阅读

DAG 有向无环图(Directed Acyclic Graph)

java 实现有向图(Direct Graph)

参考资料

智能合约