閃電網絡有資金風險?一文解讀其原理與處理方法
南枳
2023-10-22 07:24
本文约1509字,阅读全文需要约6分钟
替代循環攻擊:重要但不致命。

原創- Odaily

作者- 南枳

引言

10 月20 日,Bitcoin Core 核心開發者/dev/fd0 在X 平台宣布,將停止參與閃電網絡及其實施的開發,包括協調處理協議級安全問題

/dev/fd0 表示,每個比特幣節點都有自己的記憶體池。交易由對等節點轉發。如果閃電網路節點用於開啟通道並接受HTLC 轉發,那麼很容易受到替換循環攻擊(Replacement Cycling Attacks)。

該開發者所指的「替換循環攻擊」是什麼,其具體實現途徑如何,Odaily將於本文揭示。

閃電網路

比特幣網路的TPS 僅約為7 ,且手續費高昂,為解決小額支付的需求,閃電網絡應運而生。

閃電網絡(Lightning Network)是一種針對比特幣和其他加密貨幣的第二層擴展解決方案,旨在解決加密貨幣網絡的可擴展性和交易速度問題。

其實現原理可簡化為:

  1. 交易雙方A 與B 建立了一個「交易通道」(實際上是多簽錢包)

  2. A 與B 分別在裡面充滿A1 和B1 (此步上鍊)

  3. A 與B 在鏈下發生任意筆交易,A 淨轉出額X(例如A 向B 轉帳100 次1 元,B 向A 轉出99 次1 元,最終A 淨流出1 元)

  4. 將A1-X 與B1+X 的交易更新上鍊

透過上述流程,無論A、B 在鏈下進行多少次交易,都只要支付兩筆上鍊費用,並節省了大量的時間。

哈希時間鎖合約(HTLC)

以上介紹的形式限於A 和B 之間有直接的交易通道,為跨通道支付而出現了中繼節點,中繼節點中轉兩者交易,以便跨通道進行支付,而中繼節點可以收取小費。

但這面臨一個問題:需要確保每個通道內每個參與者都是誠實守信的,通過多通道連接是安全的。

因而出現了HTLC(Hash Time-Lock Contract、哈希時間鎖合約),一筆帶有HTLC 的支付事務可簡化為:

  1. A 準備一個暗號R,併計算其哈希值 H

  2. A 設定一個時限 T

  3. A 向B 發送一筆帶有HTLC 的支付事務,僅當符合以下兩個條件時交易才會最終成立

    • B 回答出暗號R(經H 驗證)

    • B 回答的時間在T 之內(例如10 個區塊內給出答案)

  4. 若B 不知道暗號,或回答超時,則資金退還給 A

正常交易流程

通過上述的HTLC,一筆涉及中繼節點的支付流程如下:

  1. 最終的接收者C 向發送資金者A 提供暗號

  2. A 以雜湊值H 發起HTLC 支付(請注意,此時資金並未到B 手中

  3. B 接收到支付訊息,向C 以雜湊值H 發起HTLC 支付

  4. C 為了接收資金,回答暗號,收到資金。 B 此時也知道了暗號

  5. B 用暗號取得A 發起的支付,收到資金,交易完成

涉及三者的流程如上,中間也可以多加入幾個中繼節點,而支付模式仍保持不變,透過鍊式發送支付到最終接收者,然後再反向傳播暗號至初始的中繼節點,最終完成交易。

而中繼節點如果遲遲沒有收到暗號 R(下家不做解答,時限由中繼節點自行判斷),則中繼節點可以選擇關閉通道,若成功上鍊,則B 發起的支付將“失效”,沒有資金損失。

循環替代攻擊

回到HTLC 的基本原理中,除了回答暗號外,中繼節點還需要達成另一條件“中繼節點回答的時間在T 之內”,而惡意攻擊者即是瞄準了該點進行攻擊:

  1. A 和C 惡意串通,受害者為中繼節點B(B 要求下家3 個區塊內回答)

  2. A 向B 發起支付(假設此時區塊高度為1000),要求在區塊1020 前回答

  3. B 向C 發起支付(區塊高度1005)

  4. 區塊高度1008 時,B 見到C 還不回答,決定關閉頻道,將在區塊1009 生效

  5. C 發起高Gas 的交易①(區塊1008),使B 發起的交易無法進入內存池

  6. C 發起高Gas 的交易②(區塊1009),B 仍無法進入記憶體池

  7. C 無限循環操作,直到區塊1020 ,給出暗號R,提取資金

B 儘管取得了暗號,但已沒有時間回答A 發起的支付,資金退回給A,而向C 的支付又已經成立,最終「循環替代攻擊」實現。此外,A、C 也可以透過串通,循環攻擊B 的關閉交易而實現雙花。

結語

儘管存在上述攻擊途徑,但並不意味著攻擊者就可以為所欲為,任意盜取閃電網絡中的資金,原文中作者也提出了五種處理辦法,如本地內存池和事務中繼流量監控、礦工內存池監控等。

前途是光明的,道路是曲折的,今年比特幣網絡上也誕生出了Ordinals、BRC-20、Taproot Asset 等一系列新事物,問題雖存在,但持續的發展終將能解決問題。

參考資料

  1. https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/022032.html

  2. https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf


南枳
作者文库