闪电网络

閃電網路 (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 比特幣。

## 參考文獻

## 外部連結

* lightning.network （頁面存檔備份，存於網際網路檔案館）
* dci.mit.edu/lightning-network/ （頁面存檔備份，存於網際網路檔案館）
* lists.linuxfoundation.org/pipermail/lightning-dev/ （頁面存檔備份，存於網際網路檔案館） on the Linux Foundation servers