跳到主要內容

6. 閃電網路架構

在本書的第一部分,我們介紹了閃電網路的主要概念,並透過一個完整的範例來路由付款以及設定我們可以用來進一步探索的工具。在本書的第二部分,我們將更詳細地從技術層面探索閃電網路,剖析每個構建模組。

在本節中,我們將更詳細地概述閃電網路的組成部分,並提供一個「整體視角」來引導你閱讀接下來的章節。

6.1. 閃電網路協定套件

閃電網路由一組運行在網際網路之上的複雜協定集合組成。我們可以將這些協定大致分為五個不同的層次,形成一個_協定堆疊_,其中每一層都建構在下一層之上並使用其協定。同時,每個協定層都抽象化了底層,並「隱藏」了一些複雜性。

閃電網路協定套件 所示的架構圖提供了這些層次及其組成協定的概覽。

mtln 0601
Figure 22. 閃電網路協定套件

閃電網路的五個層次,從下到上分別是:

網路連線層

包含直接與網際網路核心協定(TCP/IP)、覆蓋協定(Tor v2/v3)和網際網路服務(DNS)互動的協定。此層還包含保護閃電網路 訊息 的加密傳輸協定。

訊息層

此層包含節點用於協商功能、格式化訊息和編碼訊息欄位的協定。

點對點(P2P)層

此層是閃電網路節點之間通訊的主要協定層,包含節點之間交換的所有不同訊息。

路由層

此層包含用於在節點之間端對端且原子性地路由付款的協定。此層包含閃電網路的核心功能:路由付款。

支付層

網路的最高層,向應用程式呈現可靠的支付介面。

6.2. 閃電網路詳解

在接下來的 10 章中,我們將剖析協定套件,並詳細檢視閃電網路的每個組成部分。

我們花了相當多的時間試圖決定呈現這些細節的最佳順序。這不是一個容易的選擇,因為不同組件之間有太多相互依賴性:當你開始解釋一個組件時,你會發現它牽涉到相當多其他組件。我們最終選擇了一條更曲折的路徑,而不是自上而下或自下而上的方法,從閃電網路獨有的最基本構建模組——支付通道開始,然後從那裡向外擴展。但由於這條路徑並不明顯,我們將使用 閃電網路協定套件 所示的閃電網路協定套件作為地圖。在每一章中,我們將聚焦於一個或多個相關組件,你會看到它們在協定套件中被突顯出來。就像地圖上的標記說「你在這裡!」

以下是我們將涵蓋的內容:

#payment_channels

在本章中,我們將深入研究支付通道的運作方式,比本書前面部分看到的更加深入。我們將查看資金交易和承諾交易的結構和比特幣腳本,以及節點用於協商協定每個步驟的過程。

#routing

接下來,我們將把多個支付通道組成一個網路,並將付款從一端路由到另一端。在這個過程中,我們將深入研究雜湊時間鎖定合約(HTLC)智慧合約以及我們用來構建它的比特幣腳本。

#channel_operation

將簡單支付通道和使用 HTLC 的路由付款的概念結合起來,我們現在將看看 HTLC 如何成為每個通道承諾交易的一部分。我們還將研究從承諾中添加、結算、失敗和移除 HTLC 的協定。

#onion_routing

接下來,我們將研究 HTLC 資訊如何在洋蔥路由協定內跨網路傳播。我們將研究分層加密和解密的機制,這賦予了閃電網路一些隱私特性。

#gossip

在本章中,我們將研究閃電網路節點如何找到彼此,以及如何了解已發布的通道,以構建可用於在網路中尋找路徑的通道圖。

>#path_finding

接下來,我們將看到每個節點如何使用來自八卦協定的資訊來構建整個網路的「地圖」,用於尋找從一點到另一點的路徑來路由付款。我們還將研究路徑尋找的令人興奮的創新,例如多部分付款。

#wire_protocol

閃電網路的基礎是節點用來交換關於網路和通道訊息的點對點協定。在本章中,我們將研究這些訊息是如何構建的,以及使用功能位元和類型-長度-值(TLV)編碼構建到訊息中的擴展能力。

#encrypted_message_transport

移動到網路的較低層部分,我們將研究確保節點之間所有通訊的保密性和完整性的底層加密傳輸系統。

#invoices

閃電網路的一個關鍵部分是付款請求,也稱為閃電網路發票。在本章中,我們將剖析發票的結構和編碼。

讓我們開始深入探索吧!


1. 維基百科 賽局理論條目 提供了更多資訊。
2. Joseph Poon and Thaddeus Dryja. "The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments." DRAFT Version 0.5.9.2. January 14, 2016. https://lightning.network/lightning-network-paper.pdf.
1. Andreas M. Antonopoulos, Mastering Bitcoin, 2nd Edition, Chapter 1 (O’Reilly)
2. ACINQ:Eclair Mobile 閃電網路錢包的開發者。
3. 通常不建議為多筆付款重複使用同一個比特幣地址,因為所有比特幣交易都是公開的。 經過的好奇者可能會掃描 Alice 的 QR 碼,並在比特幣區塊鏈上看到 Alice 已經收到了多少小費到這個地址。 幸運的是,閃電網路為此提供了更私密的解決方案,將在本書後面討論!
4. Eclair 錢包不提供自動計算必要費用並將最大資金分配給通道的選項,所以 Alice 必須自己計算。
1. 雖然原始閃電網路白皮書描述了由兩個通道夥伴注資的通道,但截至 2020 年的當前規範假設只有一個夥伴向通道承諾資金。截至 2021 年 5 月,雙重注資閃電網路通道在 c-lightning 閃電網路實現中處於實驗階段。
2. George Danezis and Ian Goldberg, "Sphinx: A Compact and Provably Secure Mix Format," in IEEE Symposium on Security and Privacy (New York: IEEE, 2009), 269–282.
3. 「洋蔥」一詞最初由 Tor 專案使用。此外,Tor 網路也被稱為洋蔥網路,該專案使用洋蔥作為其標誌。Tor 服務在網際網路上使用的頂級域名是 onion