這是由比特幣領域自學成才的教育家和麵向技術的比特幣播客主持人Shinobi 撰寫的一篇觀點社論。
BOLT 12 是Blockstream 的Rusty Russel 提出的一項提案,旨在優化通過閃電網絡進行支付的方式,並最終成為BOLT 11 的繼任者。儘管為了組成BOLT 將許多不同的功能打包在一起,但本文主要關注關於其中之一的權衡和問題。首先,我將在這裡快速總結BOLT 提案的一些關鍵特性:
BOLT:(閃電技術的基礎;比特幣改進提案的閃電等價物 [BIP] 規格)
*盲路:這用於付款發票和洋蔥消息。它預先定義並加密了支付或洋蔥消息電路中的最後幾跳,因此發送者不知道他們在哪裡發送某些東西,同時仍然允許它到達預期的接收者。
* Schnorr 簽名:這允許在所有不同的地方使用簽名來協調閃電支付或與節點通信,以在未來利用Schnorr 多重簽名。
* 付款人證明:節點現在在請求發票時創建一個特殊密鑰,允許他們通過簽名證明他們已經付款。這也保證了在退款的情況下,只有真正的付款人才能要求退款。
* 發票默克爾樹:發票現在被編碼為提交給每個單獨字段的默克爾樹。這樣,如果您需要證明您已付款或收到發票,您可以有選擇地選擇要顯示的部分,而不必向某人展示整個發票。
所有這些東西共同構成了一個“閃電報價”。這允許您發布一個帶有信息的靜態二維碼,以通過洋蔥消息對節點進行ping 操作,並通過閃電網絡本身接收特定付款的閃電發票。目前,BOLT 11 發票僅適用於為其生成的單筆付款,雖然keysend 付款允許在沒有發票的情況下進行付款,但它們不允許您在接收節點簽署的發票中接收付款的詳細信息,並且保留這些以供將來記錄。 BOLT 12 實現了兩者的所有好處:允許單個靜態數據促進向接收節點付款,同時仍接收包含每個單獨付款詳細信息的發票。作為一個快速的旁注,這還可以快速輕鬆地協調流式支付、訂閱支付等,如果發送方不批准交易,接收方不會收取費用,同時保持簡化的用戶體驗。
通過使用盲路徑,它還極大地改善了閃電網絡最大的隱私缺陷之一:收款人在收款過程中向發件人發送了許多私人細節,例如與其關聯的鏈上UTXO。通道以及它們在閃電網絡圖中的位置(即,它們連接到哪個節點並通過哪個節點接收付款)。盲路既用於接收付款,也用於接收洋蔥消息ping 以將發票發送回發件人。
BOLT 12 是許多活動部件聚集在一起,以促進這種在閃電網絡中協調支付的新方式。對該提案的最大批評之一是包含通用洋蔥消息,以及擔心它會打開新的拒絕服務(DoS) 攻擊媒介。我認為這裡的邏輯是完全不正確的,我將解釋為什麼。
閃電協議最大的DoS 問題(和隱私問題)之一是探測。由於比特幣協議中交易大小的限制,每個通道可以在任何給定時間打開483 個HTLC(哈希時間鎖定合約),代表未決付款。這是為了確保通道關閉交易可以真正在鏈上結算,並且不會因為太大而被內存池拒絕。探測是通過渠道發送垃圾郵件的行為,這些渠道被故意設計為失敗,以便收集有關資金如何在閃電渠道中平衡的信息。這會佔用帶寬、可用於處理真實支付的空間,並且會浪費網絡上的資源,並洩露可用於對支付進行去匿名化的信息。
探測交易的問題是,它們可以用來傳遞任意消息,而無需為它們支付任何費用。您可以通過設計為永遠不會成功並包含接收方的任意數據的網絡路由支付,然後簡單地讓支付失敗。這濫用了閃電網絡中的支付協議來免費傳輸任意信息,目前沒有辦法阻止人們這樣做。您將無法知道您正在路由的付款是真實的還是只是濫用您的節點來傳遞數據; 當付款失敗時,您無法知道它是自然失敗還是從一開始就設計失敗。這實際上是Sphinxchat 的工作方式,除了顯然他們發送付款並且不會免費濫用網絡。
最終,閃電協議的這種使用使HTLC 插槽形式的稀缺吞吐量飽和,這些插槽可用於“真實”經濟支付(在報價中是真實的,因為顯然,誰來判斷什麼是“真實”經濟活動)傳遞任意數據,並且目前可以以一種實際上沒有人為此付費的方式被濫用。這是閃電網絡上存在的非常真實且已經存在的DoS 風險。
對於探測問題及其造成的DoS 問題,有一些建議的解決方案,其中主要是在實際成功通過之前支付費用的想法。這是一個頗具爭議的提議,因為這意味著無論是否成功完成,發件人都將最終支付費用。所有為此提出的解決方案的性質超出了本文的範圍,但重點是提出了解決方案,但目前都沒有實施。關鍵點:它們沒有實施。
所以,對我來說,一般洋蔥消息為閃電網絡“打開了一個新的DoS 攻擊向量”的論點是完全錯誤的和錯誤的論點。這種攻擊媒介現在已經存在。事實上,它甚至比一般的洋蔥消息更糟糕,因為它浪費了路由支付所需的稀缺資源——HTLC 插槽。一般洋蔥消息不會。
洋蔥消息是一項可以關閉的功能,因此您的節點可以完全選擇不轉發它們,也可以限制速率。我的意思是你的節點可以很容易地設置它每秒只傳遞“x”個消息,或每秒“y”個數據量,或任何其他任意時間線,並拒絕轉發任何超過這些限制的內容。通過這種方式,您的節點可以輕鬆管理它允許通過一般消息消耗的資源量。
換句話說,BOLT 12 沒有開啟任何新的DoS 攻擊向量; 它只需要一個影響網絡處理支付能力的現有網絡,並將其移動到不影響支付中繼或消耗任何HTLC 插槽的地方。它還可以在不進一步限制支付流程的情況下減輕資源消耗。可能發生的最糟糕的事情是網絡上的大規模垃圾郵件事件- 飽和的洋蔥消息容量會降低使用BOLT 12 優惠或通過網絡獲取發票的能力。
這不會影響支付中繼; 這不會妨礙接收和支付BOLT 11 發票的能力; 這僅僅意味著只要網絡被洋蔥消息發送垃圾郵件,使用BOLT 12 獲取發票的嘗試就會失敗。還請記住,不想處理帶寬使用量略有增加的單個節點可以選擇退出並且不中繼洋蔥消息。它現在運行的一切都將繼續工作,並且現有的DoS 攻擊向量將具有一種安全閥,希望傳遞任意消息的人可以以不浪費HTLC 插槽或阻礙付款處理的方式這樣做,任何想要退出新功能的人都可以這樣做。
簡而言之,我認為反對BOLT 12 的“DoS 矢量”論點是無稽之談。如果人們想就所有工作的複雜性、實施它所需的開發時間或提案的其他方面提出論據,我認為這些都是有效的論據。然而,反對洋蔥消息和新的DoS 載體的論點站不住腳。
這是Shinobi 的客座帖子。所表達的意見完全是他們自己的,不一定反映BTC Inc 或 比特幣雜誌.