制約比特幣閃電網絡發展的五個局限


說句真話,我對閃電網絡挺有信心的,這是比特幣協議堆棧裡我最喜歡的部分,多年來我一直密切關注它。如果閃電網絡不存在了,我會繼續持有比特幣,但對比特幣的未來潛力則不會那麼樂觀了。

(注:閃電網絡的產生源於解決比特幣網絡的擁堵問題,比特幣開發團隊為此萌生了一個想法——在比特幣主鏈上建立第二層交易網絡,即閃電網絡。具體原理為:交易雙方都質押一部分資金到一個多重簽名的地址上,資金需要雙方同時出具私鑰才能提出。在閃電網絡裡,雙方的交易過程不會被記錄在鏈上,只有最終的結果即一筆交易會記錄在主鏈,這相當於只需要一次排隊,大大減少了鏈上記賬的流程和手續費。)

原理上,閃電通道其實很簡單:

兩個人將資金鎖在一個2對2的多重簽名地址中。

雙方安排一項預先簽署的交易。

為了更新余額,如果有人試圖使用舊的預簽名交易,雙方用更新後的餘額簽署新的交易並交易所“懲罰密鑰”,讓對方拿走多重簽名地址中的所有錢。

但是閃電網絡不僅僅只是雙方之間的一些直接的聯繫。這些單通道可以與其它單通道連接在一起,形成一個巨大的相互連接的支付網絡。這是一個非常靈活的系統,可以在其它無關的當事人之間進行支付。話雖如此,我看到有很多缺點和局限性,但除了開發團隊和一些技術用戶之外並沒有得到廣泛的認可或討論。

狀態管理問題

閃電通道實際上只是一組預先簽署的交易。我沒有涉及到的是允許它工作的激勵模型。交易一旦簽署,你將永遠無法收回。它將永遠存在,並且始終是有效的比特幣交易,除非你將該比特幣用於不同的交易(你不能將比特幣花費兩次;一旦交易花費了一些比特幣,任何其它嘗試對這些代幣採取行動的交易都將無效)。現在,因為閃電通道是2對2多重簽名,任何一方都不能在沒有另一方合作的情況下簽署新的交易。這意味著沒有另一方的合作,你無法使你在鏈上進行的所有其它預簽名交易無效。好比你們兩個一起開了這個通道,所以你們必須一起更新。如果任何一方可以單方面採取行動,那麼你們中的一個人就可以竊取所有資金。

每次雙方在他們的閃電通道交易所資金時,Bob向Alice發送1000個比特幣,他們生成一個新的預簽名交易,反映他們更新的餘額。如果各方都表現得友好,他們將只保留最新的預先簽署的交易,因為之前的交易將不再反映正確的餘額。如果雙方都想兌現,他們可以使用最新的預先簽署的交易,以鏈上比特幣的形式向雙方支付當前餘額。

但如果另一方不友好呢?如果Bob通過將資金發送給Alice而花掉了他的那部分資金,但現在想要使用先前的預先簽名交易將其兌現,該交易仍然顯示了其通道的所有資金?我們用“懲罰密鑰”來解決這個問題。這允許你有效地使所有之前的預簽名交易無效,而實際上不必每次都真正使它們在鏈上無效。

一旦雙方用更新余額的新交易取代了舊的預先簽名交易,他們也會交易所懲罰密鑰。該系統的設計是這樣的,如果其中一方試圖執行舊的交易,另一方的罰款密鑰是啟用的,並可用於索取通道中100%的資金。至關重要的是,預先簽名的交易有一個內置的時間鎖,所以在交易可以在比特幣區塊確認之前,另一方總有機會使用懲罰密鑰。實際上,你並沒有使現有的預簽名交易無效,你只是在鼓勵另一方不要使用它們。如果他們想偷,而你抓住了他們,你就能拿走他們所有的錢。

這引入了一種擴展動態,我認為對技術不熟悉的用戶不太了解這種動態。每次你們中的任何一個花費一個比特幣,你都會用一個新的交易替換一個預先簽署的交易。但是你仍然需要保留每筆舊交易的一些信息,以及與該特定交易相關的懲罰密鑰。以防你不得不使用它來懲罰不誠實的通道對手。沒有辦法避免這種情況,因為如果通道交易對手要嘗試關閉舊交易的通道,你需要該交易的懲罰密鑰才能停止和懲罰他們。這意味著你必須保留與他們進行的每筆交易的所有相關數據。

我相信很多讀者都在翻白眼,“這沒什麼大不了的,硬分叉很便宜。”讓我們看看這種動態可能導致的問題的所有不同方式。不過在此之前,我想提醒大家閃電網絡的一個核心假設:開通通道的想法是盡可能長時間地保持開放,以便在產生鏈上費用之前最大化從中獲得的價值。因此,理想情況下,用戶希望打開一個通道並保持很長時間的開放。

讓我們以移動用戶為例:比特幣錢包並不是人們手機上唯一存儲的東西。人們會用手機拍照、下載音樂、視頻、應用程序和遊戲等。我相信你們大多數人都很熟悉因為空間不夠而不得不從存儲庫中刪除一堆東西的情況。只要你在交易,你的閃電錢包必須存儲的數據就會一直增長(直到你關閉你的通道)。最終,這將與你想要存儲在手機上的其它東西發生衝突,在那之後,最終會達到你手機的存儲上限。記住,必須保留100%的數據,否則你的閃電通道要保持開放可能不安全。

現在讓我們考慮路由節點。這個名字說明了一切。這些節點被設置為閃電網絡的高速公路,積極通過精心管理的通道進行大量地支付。同樣的基本邏輯,儘管在這種情況下,很有可能有人為了運行他們的閃電節點而購買了設備。但是當然,路由節點會更頻繁地更新通道餘額,因此如果它是一個成功的路由節點,其增長率將遠遠超過移動錢包的增長率。請注意,你必須存儲的關鍵任務數據越多,冗餘存儲的成本就越高,這樣設備故障就不會導致虧損。

最後,我認為這種動態確實會導致一些問題的出現,即瞭望塔(watchtower)。大多數人將無法24小時全天候在線以確保他們的同道對手不會試圖欺騙他們。這就是瞭望塔的用武之地,他們會為你看守東西。但是為了做到這一點,他們需要存儲你所做的所有相同數據,以便在他們作弊時能夠懲罰你的交易對手。瞭望塔還沒有開發或部署,但從長遠來看,它們是人們安全使用閃電網絡的絕對關鍵基礎設施。

瞭望塔可以通過三種方式工作。首先,一個無私的瞭望塔,為你盯著鏈上情況而得不到任何回報。其次,只有在你的交易對手作弊並且他們必須對其進行懲罰時才能獲得報酬的瞭望塔。最後,一個靠存儲數據和觀察鏈上情況而獲得報酬的瞭望塔。考慮到每個用戶的數據將永遠持續增長,直到通道關閉,你看到了問題了嗎?在第二個和第三個模型中,通道打開的時間越長,用戶的費用將開始增加以支付瞭望塔的數據存儲成本。這將是用戶必須支付的一種隱藏費用,可能會增長到瘋狂的水平。

對於那些仍然認為這根本不是一個實質性的規模問題的懷疑論者,在一個閃電網絡僅僅用於適度的日常交易的世界裡,比如咖啡和晚餐,那我同意你說的不實質性。但在這個世界中,閃電網絡的主要用例是通過整個互動實時完成的微交易和流媒體支付,例如每分鐘甚至每秒鐘向廣播者發送流支付,在這種情況下我認為不實質性是不成立的。

值得慶幸的是,這個問題將通過提議的比特幣協議升級解決,稱為ANYPREVOUT和基於eltoo的閃電通道,這將允許單個固定大小的數據塊完成與懲罰密匙目前相同的抑制機制。但是直到該功能進入比特幣,當前的閃電通道都存在這個擴展問題。

HTLC(哈希時間鎖定合約)問題

接下來的兩個主要問題圍繞著HTLC(哈希時間鎖定合約)。這些是添加到預先簽名交易中的新輸出,表示“如果你知道一個秘密,你可以要求付款,否則發送方可以在等待一段時間後收回它。”它們使用哈希鎖和時間鎖。這就是支付如何通過閃電網絡在多個跳間可靠地轉發,最後的接收者要么公佈秘密,每個通過他們的通道轉發付款的人可以索賠他們的欠款,要么接收者不公佈秘密,在等待一段時間後,每個人都得到退款。

這種結構對擴展有兩種影響:

1) 一個通道可以在任何時間轉發多少個HTLC。

2) HTLC的最小值,因為如果轉發中斷,它們最終必須在費用上經濟地在鏈上解決。

一個閃電通道一次只能轉發如此多的HTLC,因為每個HTLC都必須由最近的預簽名交易中的實際輸出表示。這不是信用系統,我們不會在比特幣或閃電網絡中進行再質押。你只能轉發最終由你的通道具有可證明聲明的特定鏈上輸出支持的索賠。並且因為比特幣交易本身有最大大小限制,所以交易可以擁有的HTLC數量也有限制。如果一筆交易有更多的HTLC,那麼它就不是有效的比特幣交易,因此會使通道處於一種奇怪的狀態,在這種狀態下,每個有效的預簽名交易(在達到483限制之前構建的交易)都將允許其他人竊取你的錢,並且當前的任何預簽名交易(在483限制之後構建的交易)都不能用於誠實地關閉通道。除非找到此問題的解決方案,否則它會顯示一次可能通過一個閃電節點的HTLC數量上限,這最終會導致整個閃電網絡在任何給定條件下可以轉發多少HTLC的上限不均勻。

鏈上動態也將HTLC的價值考慮在內。如果一個HTLC只轉發10個比特幣,但添加HTLC輸出將花費100個比特幣的鏈上費用,如果有必要,你真的能在鏈上強制執行嗎?答案是否定的。因為在鏈上執行它實際上會損失你的錢,沒有經濟動機去執行它,而且在高收費的環境中,確實沒有一個合理的點來首先創建HTLC。從長期來看,費用很可能會持續上漲,因此這將影響HTLC通過閃電網絡合理路由的價值。

這個問題確實存在一個解決方案,但它有自己的權衡和缺點:即打包支付。這個想法不是一次性使用一連串HTLC路由支付,而是將其分解為多個不使用HTLC的單獨支付。這使你可以一遍又一遍地將一小部分付款推送給預期的接收者,直到完成為止。但是因為沒有HTLC,你的任何小額付款數據包都可能被完全扯掉。如果有任何一條支付失敗,你可以停止使用當前的路線並尋找另一條路。問題是,如果部分支付失敗,你不知道路由鏈上應該找誰負責。因此,你必須從頭開始重建一條新路線,不要信任先前路線中的任何人。

支付延遲

每次閃電支付通過網絡傳輸時,所有涉及的節點都必須簽署從路由開始到結束的其通道的更新兩次。一旦使用HTLC設置支付,並再次當HTLC被清除和結算。這就引入了一種“最弱環節”的動態,即支付實際清除的速度。如果你是閃電的頻繁用戶,你可能會注意到這一點;有時錢包需要幾秒鐘(或者差的情況下需要幾秒鐘)才能真正通過並更新余額。我唯一熟悉的高清錢包(light wallet)是Breez,根據我的經驗,它可能需要5-20秒的時間,在點擊發送後才能真正完成。

目前,這只不過是一個輕微的用戶體驗小問題,與不得不尷尬地站在收銀機前等待信用卡購買獲得授權沒有什麼不同。但是回想一下上面提到的分組支付的建議,以解決金額太小而無法使用HTLC的問題。作為一個非常小的、不斷增長的網絡,使用HTLC推動非小額支付金額,這種延遲是一個明顯的問題。現在想像一下,如果不是單個HTLC的兩輪簽名,而是有數百輪簽名來將相同的支付分成單個微支付大小的金額。

就用戶體驗而言,這是一個更大的問題,同時也是路由節點的擴展瓶頸。加密貨幣簽名操作非常快速和便宜,但在一個同時構建閃電以促進各種小額支付和流支付用例以及更傳統的大額支付的世界中,也必須分解成小額支付大小的比特幣,這也成為路由節點的一大瓶頸。從長遠來看,這種動態很可能會扼殺在廉價硬件(例如Raspberry Pi或其它單板計算機)上運行有利潤(甚至足夠可靠以被廣泛使用)的路由節點的想法。

通道數量的可行性

HTLC並不是閃電網絡中受到鏈上費用的波動或穩定上漲的嚴重影響的唯一東西。閃電通道本身也成為了這種動態的受害者。假設你想打開一個容量為10美元的BTC的閃電通道,但這筆交易的區塊鏈費用將為1美元。該通道一開始就要收取10%的費用。然而,如果你資助一個通道為100美元,你的實際收費只有1%。這為試圖直接與閃電網絡互動的人們創造了一個非常真實的市場層。如果開通一個通道的有效收費過高,他們就不會開通該通道了。

對這種動態的唯一真正的權衡或解決方案是時間。如果你只有10美元而不是100美元,並且不想支付10%的費用,那麼你就會以較低的費用提交你的通道開放交易。你繼續等待。等待時間將取決於實時比特幣收費市場和內存礦池(mempool)的積壓情況(比特幣礦工從內存礦池中選擇費用最高的交易,直到他們的候選區塊裝滿)。在好的情況下,等待可能只會多花幾個小時。在糟糕的情況下,你可能不得不等幾天或幾週。在極端交易需求的時候,內存礦池甚至可以清除費用最低的交易,以確保你的通道永遠不會打開。根據目前閃電通道的工作方式,這個等待遊戲真的是解決這個問題的唯一解決方案。

高有效費率還有另一個含義:對於不想支付高有效費率的低價值通道來說,用來保證某人可以懲罰舊的預先簽名交易的時間鎖(timelock)必須要長得多。時間鎖的全部意義在於,你可以有效地跳過隊列,並擊敗你的通道合作夥伴來申請資金。但是,如果你不願意或不能為你的聲明支付可能很高的費用以快速執行,那麼你需要將緩慢的低費用交易的額外等待時間編碼到你的預簽名交易中。隨著時間的推移,這可能會導致低價值通道在鏈上打開和關閉的等待時間更長,並需要更長的時間鎖定時間,以確保這些低價值通道所有者在惡意通道的情況下不會因盜竊而損失金錢。

取決於Tor網絡

即使是非技術用戶也應該知道閃電網絡的主要缺點之一:你必須在線才能使用它,因為發送和接收是一個交互過程。這意味著對等方需要IP地址才能相互通信。必須將你的IP地址公開給你的頻道對等方是一個很大的隱私問題,如果互聯網服務提供商(ISP)想要窺探彼此通信的IP地址,則還可能還要面臨審查問題。

Tor幾乎是目前解決這個問題的首選解決方案。問題是Tor本身自己就有很多問題。它依賴於一個由志願者運營的完全基於信任的聲譽權威機構。這些“目錄服務器”由項目成員運行,Tor節點可以在這裡找到網絡上的所有其它節點來構建Tor電路。這些實體的可信度是允許你通過Tor節點的基礎,這些節點並不知道你的信息在網絡中的整個路徑。

Tor還受到許多攻擊漏洞的影響。分佈式拒絕服務(DDoS) 攻擊在Tor中比在更廣泛的互聯網上更難處理。有一些專業服務可以處理常規互聯網上的大量流量高峰。也可以拒絕來自未屏蔽互聯網上的惡意端點的流量。但在Tor網絡中,根據設計,你不知道流量來自哪裡,因此DDoS攻擊更難處理。這實際上是一個系統性問題,Tor開發人員目前正在考慮集成匿名代幣或工作量證明(如哈希現金hashcash)以應對這些攻擊向量。由於網絡如此容易受到這些類型的攻擊,因此對在Tor上運行的閃電節點的可靠性提出了質疑。

Tor與閃電網絡交互的最根本的弱點甚至比網絡中斷或必須信任Tor目錄當局的風險更大。 Tor連接是很容易識別的,所以你的互聯網服務提供商或政府可以完全阻斷連接Tor的能力。顯然,在世界上大多數地方,這種情況不會發生,但很容易發生。可悲的是,最有可能發生這種情況的地方是那些最需要保護個人隱私的威權國家。伊朗也曾試圖封鎖Tor網絡,但被Tor網絡開發商成功否決。在過去十年左右的時間裡,俄羅斯和法國都出於不同的原因提出了封鎖Tor網絡的話題:俄羅斯和法國針對的是兒童色情,以應對恐怖襲擊。

更多的技術讀者可能會知道Tor上的橋接節點(bridge nodes)。這些有點像特殊的Tor節點,它們不像普通節點那樣公開宣傳自己,允許無法直接訪問Tor的用戶通過這些橋節點進行連接。但是橋接節點也不能倖免於受到攻擊、識別和屏蔽。最終,如果國家或互聯網服務提供商想要對Tor網絡施加壓力,它就會變成一個貓和老鼠遊戲,會變成進一步降低Tor的可靠性,作為一種私下快速無縫比特幣支付的方式。

總結

閃電網絡對於比特幣協議堆棧來說是一個真正驚人的進步飛躍。它是對區塊鏈結算機制的可伸縮性擴展,它創造了區塊鏈的指數吞吐量收益,而不是僅僅依賴區塊鏈本身來處理交易。但就像區塊鏈本身一樣,它也有其局限性。這不是一顆靈丹妙藥,也不是解決每個問題的辦法,也不是沒有自己的缺點,但沒關係。

在閃電網絡在主網上上線之前,比特幣已經存在了9年,存在各種開放式或未解決的存在問題和擴展問題。但它仍然存在,仍在被使用。比特幣並不僅僅因為問題是開放式的或未解決就消失。開放式問題意味著我們沒有對自己撒謊。這意味著比特幣開發者正在承認事物的現實缺點並尋找解決方案。這不是心理戰術或攻擊,這是一件好事。這就是事物變得更強大和進化的方式,承認其當前的局限性並尋找超越它們的方法。

本文來自bitcoinmagazine,原文作者:Shinobi,由Odaily星球日報譯者Katie 辜編譯。

這是Shinobi的客座文章。所表達的完全是個人的觀點。

資訊來源:由0x資訊採集自互聯網。版權歸“來源: 星球日報”所有,未經許可,不得轉載

Total
0
Shares
Related Posts