在上一篇《閃電網絡是如何工作的 (1)》中,我們探討了閃電網絡(Lightning Network)的運行原理和雙向支付通道的安全保障相關技術。今天這篇文章,我們將繼續介紹閃電網絡,講清楚將雙向支付通道擴展成閃電網絡的相關原理和技術。
將雙向支付通道擴展成閃電網絡:多跳路由技術#
我們同樣使用 Alice 和 Bob 建立通道作為基本背景,但這個世界上除了 Alice 和 Bob,其他人也想接入閃電網絡該怎麼辦?有什麼辦法可以把所有人都接入網絡並保證可以向網絡中的任一個人發起支付?
為了解決這一問題,我們需要將雙向支付通道擴展成閃電網絡, 並使用多跳路由技術。“路由(routing)” 的字面意思是 “尋找路徑”,在閃電網絡中,就是要找出由通道前後連接而成的、給特定對象支付的路徑。
以 Alice 向 David 支付 2000 聰為例,假設他們之間沒有建立支付通道,不過 Alice 和 Bob 之間、Bob 和 Carol 之間、 Carol 和 David 之間都已經建立了支付通道。在這種情況下,Alice 可以先把錢轉給 Bob ,再由 Bob 轉給 Carol,最後 Carol 轉給 David,這樣看起來就實現了從 Alice 到 David 間的支付通道,其中 Bob 和 Carol 充當了網絡中的路由節點。如果 Alice 和 Eva 之間、Eva 和 David 之間也建立了支付通道,那麼 Alice 也可以選擇先把錢轉給 Eva,再由 Eva 轉給 David。
從路徑上來看,顯然 Alice 通過 Eva 轉錢給 David 是路徑最短的選擇,但在實際操作過程中,看起來最短的路徑並不總是最佳選擇,因為還需要考慮其他因素,比如通道的容量、路由節點的收費標準、路由節點是否在線,等等。
目前,主流的比特幣閃電網絡實現(客戶端),如 Lightning Labs 開發的 LND 和 Blockstream 開發的 CLN(Core Lightning),在路由算法上都使用了 Dijkstra 算法的某個變種,Nervos CKB 推出的閃電網絡 Fiber Network 同樣會使用 Dijkstra 算法來尋找最優路由路徑。
保障路由安全:從 HTLC 到 PTLC#
在上面 Alice 要給 David 付款的例子中,我們如何保證中間的路由節點不會耍賴,不會惡意扣留資金呢?傳統金融系統通常依賴大型知名金融中介機構的信用擔保,但閃電網絡是一個 P2P 網絡,並沒有這樣一個獨立於交易者的第三方去提供信用擔保,我們需要一種不同的機制來保障交易安全。這就是 HTLC(哈希時間鎖合約) 的作用所在。
HTLC 由兩部分組成:哈希驗證和過期驗證。 讓我們以 Alice 要給 David 支付 2000 聰,選擇 Bob 和 Carol 充當網絡中的路由節點為例,理解 HTLC 的工作原理:
- 首先,David 要生成一個秘密值 R,任何詞語、任何數字都可以充當這個秘密值,然後計算出其哈希值 H 並把它發給 Alice。這個哈希值 H 會放在交易輸出的鎖定腳本中,只有知道 H 所對應的秘密值 R 的人才能使用這個輸出,而 R 在閃電網絡中被稱為 “原像(preimage)”。如果秘密值 R 沒有及時地公開,這筆支付就用不了了,發送者會收回所有的資金。
- 然後,Alice 使用收到的哈希值 H 創建一個 HTLC,時間鎖設置成未來 5 個區塊,輸出的數額是 2020 聰,其中 20 聰是給路由節點 Bob 的手續費。用大白話來表述就是,Alice 會給 Bob 支付 2020 聰,只要他能在 5 個區塊內提供秘密值 R,否則這些錢會返回給 Alice。
- Bob 在自己和 Carol 的通道中,使用跟 Alice 所提供的同樣的哈希值 H 創建一個 HTLC,時間鎖設置成未來 4 個區塊,輸出的數額是 2010 聰,其中 10 聰是給路由節點 Carol 的手續費。用大白話來表述就是,Bob 會給 Carol 支付 2010 聰,只要他能在 4 個區塊內提供秘密值 R,否則這些錢會返回給 Bob。
- Carol 在自己和 David 的通道中,使用同樣的哈希值 H 創建一個 HTLC,時間鎖設置成未來 3 個區塊,輸出的數額是 2000 聰。用大白話來表述就是,Carol 會給 David 支付 2000 聰,只要他能在 3 個區塊內提供秘密值 R,否則這些錢會返回給 Carol。
- David 用秘密值 R 解鎖 Carol 設置的 HTLC,拿走 2000 聰。
- David 拿走資金之後,Carol 也會知道這個秘密值 R,他用 R 解鎖 Bob 設置的 HTLC 並拿走 2010 聰。
- Carol 拿走資金之後,Bob 也得到了秘密值 R,他用 R 解鎖 Alice 設置的 HTLC 並拿走 2020 聰。
通過這種機制,Alice 成功向 David 支付了 2000 聰,而無需直接建立支付通道。整個過程中,各方無需相互信任, 路由節點也獲得了應得的手續費。即使支付在某個環節中斷,由於時間鎖定機制的存在,各方都不會遭受損失,資金會在鎖定時間過後自動返回。
然而,HTLC 也存在一個潛在的隱私問題: 整條路徑使用的都是同一個秘密值(原像)。如果某個實體控制了支付路徑上的多個節點,就可能通過比對不同節點的輸入和輸出,推斷出完整的交易信息,甚至猜測出付款方和收款方,這就削弱了閃電網絡通過洋蔥路由實現的隱私保護。
為了解決這個問題,比特幣社區提出了 PTLC(點時間鎖合約)。在 PTLC 方案中,路徑中的每一跳都使用不同的秘密值,這樣一來,通過洋蔥路由實現的隱私性就得到了保護。Nervos CKB 推出的閃電網絡 Fiber Network 計劃在未來引入 PTLC,進一步增強閃電網絡的隱私保護能力。
結語#
隨著技術的不斷進步,閃電網絡還在持續優化和改進。從 LN-Penalty 到 eltoo 再到 Daric,從 HTLC 到 PTLC,我們看到了閃電網絡在安全性、隱私保護等方面的不斷提升。未來,隨著更多創新技術的應用和生態系統的完善,閃電網絡有望成為推動加密貨幣普及的關鍵基礎設施,為實現真正的 P2P 經濟貢獻力量。
參考資料:
- https://www.btcstudy.org/2021/09/15/lightning-network-in-depth-part-1-payment-channels/
- https://www.btcstudy.org/2021/09/15/lightning-network-in-depth-part-2-htlc-and-payment-routing/
- https://www.btcstudy.org/2022/01/27/breaking-down-the-bitcoin-lightning-network-eltoo/
- https://www.btcstudy.org/2024/02/07/lightning-network-technology-improvement-and-users-experience-part-2/
- https://www.btcstudy.org/2024/02/23/lightning-network-technology-improvement-and-users-experience-part-3/
- https://www.btcstudy.org/2022/08/19/what-are-ptlc/