在上一篇《為什麼需要閃電網絡》中,我們探討了閃電網絡(Lightning Network)的必要性和重要性。作為構建在比特幣區塊鏈之上的 P2P 網絡,閃電網絡不僅能夠有效解決比特幣 “又慢又貴” 的難題,而且在加密支付領域有著其他解決方案無可比擬的優勢,是我們實現 P2P 經濟的基礎,也是我們憧憬的 Web5 世界的重要組成部分。
今天這篇文章,我們將繼續介紹閃電網絡,講清楚閃電網絡的運行原理和相關技術。
閃電網絡的基石:支付通道#
閃電網絡本質上是一個精心設計的支付通道系統。 以 Alice 和 Bob 之間的交易為例,他們使用閃電網絡進行結算時,會經歷以下三個關鍵階段:開啟通道、進行交易、關閉通道。
1、開啟通道:構建信任的橋梁#
所謂開啟通道,實質上是創建一個由參與雙方共同控制的多簽錢包,並向該錢包注入資金。這個錢包接收的資金總額即為這個通道的餘額。
我們假設 Alice 和 Bob 各自持有 10 萬聰 BTC。首先,他們需要將各自的 10 萬聰轉入一個由兩人共同控制的多簽錢包地址,作為建立通道的質押金。這筆交易,被稱為 “Funding Transaction(充值交易)” 或者 “Anchor Transaction(錨點交易)”,需要廣播到網絡並記錄在比特幣區塊鏈上,以表明通道的正式開啟。在這個例子中,連接 Alice 和 Bob 的支付通道實質就是一個普通的 2-of-2 多簽名錢包,裡面包含 20 萬聰的餘額(為簡化說明,我們暫不考慮開啟通道時需要支付的礦工費)。
2、開始交易:鏈下交易的藝術#
通道開啟後,參與雙方的後續交易將全部在比特幣區塊鏈之外進行,實現了高效的鏈下結算。讓我們假設 Alice 和 Bob 之間進行了以下 3 次交易:
- Alice 向 Bob 轉帳 1 萬聰,此時 Alice 擁有 9 萬聰,Bob 擁有 11 萬聰。
- Alice 繼續向 Bob 轉帳 2 萬聰,此時 Alice 擁有 7 萬聰,Bob 擁有 13 萬聰。
- Bob 向 Alice 轉帳 1 萬聰,此時 Alice 擁有 8 萬聰,Bob 擁有 12 萬聰。
從上面的例子中,我們可以看到,無論 Alice 和 Bob 之間進行多少次轉帳,他們之間的通道餘額始終保持不變,都是 20 萬聰。
每次 Alice 和 Bob 發生交易時,雙方需要更新通道中各自的餘額,並交換經過簽名的 “承諾交易(Commitment Transaction)”。這些交易本身都是有效的,可以隨時發送到比特幣網絡中,但雙方通常會將其保存而不廣播,除非他們打算關閉通道。如此一來,通道內 Alice 和 Bob 的餘額狀態,一秒內變動幾十次、幾百次都沒問題,更新的速度僅受限於雙方創建、簽名和向對方發送承諾交易的速度。
3、關閉通道:最終結算的時刻#
關閉通道可以通過兩種方式進行:一是雙方一致同意關閉,將一筆結算交易(Settlement Transaction)發送到比特幣網絡中;二是單方決定關閉,將最後一筆承諾交易(Commitment Transaction)發送到比特幣網絡中。後者的設計是為了防止某一方離線導致另一方在通道中的餘額一直被鎖定的情形。
在 Alice 和 Bob 的例子中,他們在進行了 3 笔交易後決定關閉通道。關閉後,Alice 取回 8 萬聰,Bob 取回 12 萬聰(同樣,為簡化說明,我們不考慮關閉通道時產生的礦工費)。
雙向支付通道的安全保障:從 LN-Penalty 到 eltoo 再到 Daric#
上文提到,關閉通道既可以雙方一致同意關閉,也可以是單方決定關閉。那么,在雙向支付通道中,如何防止某一方欺詐呢?比如上面的例子中,如何防止 Bob 拿著第 2 次而不是第 3 次承諾交易來關閉通道呢?如果使用第 2 次的承諾交易關閉通道,Bob 可以抵賴掉最後付給 Alice 的 1 萬聰付款,這顯然看上去很有誘惑力。
比特幣閃電網絡引入了 LN-Penalty 機制來防止某一方把一個過時的但對自己有利的狀態發送的鏈上來關閉通道。 LN-Penalty 使用 “不對稱的承諾交易” 和 “撤銷密鑰” 等複雜技術,確保如果 Bob 試圖使用過時的承諾交易關閉通道,Alice 將有權獲得通道內的全部資金 — — 20 萬聰。這種懲罰機制有效遏制了潛在的欺詐行為。
然而,LN-Penalty 也存在一些不足,除了自身的複雜性之外,還造成了存儲負擔 — — 用戶必須保存過去每一次更新通道狀態時候的資料,還有一些罕見的情形可能會導致它意外地懲罰誠實的用戶。
為了克服這些缺點,早在 2018 年,比特幣社區就提出了名為 “eltoo” 的解決方案,來消除存儲負擔和意外懲罰的風險。在這個方案中,用戶只需保存最新一筆承諾交易及其結算交易即可。然而,eltoo 方案至今還不可用,因為它的實施需要對比特幣進行軟分叉,引入一個新的簽名哈希類型 — — SIGHASH_ANYPREVOUT。
Nervos CKB 推出的閃電網絡 Fiber Network 則選擇了 2022 年提出的 Daric 方案。Daric 在 eltoo 的基礎之上,有效解決了瞭望塔(Watchtower)的成本和安全性問題。瞭望塔是運行在獨立機器和網絡上的閃電網絡節點,會監控支付通道,並在檢測到惡意行為時幫助受害方執行罰沒交易,從而保護用戶的資金。節點操作者通常會運行自己的瞭望塔,以保護自己的節點。
結語#
閃電網絡作為比特幣擴容解決方案,其核心在於巧妙設計的支付通道系統。通過開啟通道、鏈下交易和關閉通道三個階段,閃電網絡大幅提升了交易速度並降低了成本。
為確保雙向支付通道的安全,閃電網絡採用了 LN-Penalty 機制,比特幣社區還提出了 eltoo、Daric 等更優的安全機制,來有效防範潛在的欺詐行為。
這些創新使得閃電網絡在保證安全性的同時,為比特幣網絡帶來了顯著的性能提升,為實現快速、低成本的小額支付鋪平了道路。
📖 推薦閱讀