來源:位元組元CKB
在上一篇《閃電網路是如何運作的(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/