來源:CoinDesk Research
作者: George Kaloudis
編譯:陳一晚風、Rachel
閃電網路(Lightning)是由比特幣智能合約驅動的覆蓋網路,它不是區塊鏈。比特幣作為一種純點對點版本的電子現金被引入,允許在線支付直接從一方發送到另一方,而無需通過金融機構,在早期,這樣的情況對于一小部分人來說是可以的,但是12年后面臨承載著1億體量的用戶,比特幣對于即時交易來說非常昂貴,每秒只能確認大約7筆交易。這已經限制了比特幣在不增加功能的情況下充當現金的能力。
因此,近年來比特幣敘事擺脫了“電子現金”用例,取而代之的是“價值存儲”和“數字存儲技術”用例,將其比作一種數字黃金,但這并不意味著比特幣作為點對點電子現金的夢想已經破滅。
在薩爾瓦多于2021年6月宣布將比特幣作為法定貨幣后,一個普遍的批評聲音是,這是一個壞主意,因為整個比特幣區塊鏈的交易吞吐量只允許每個薩爾瓦多人每20天進行一次比特幣交易,并且還要假設世界上沒有其他人使用它,
當然有一個解決辦法。薩爾瓦多已實施部署閃電網路,允許比特幣支付在其經濟中流通,
閃電網路是建立在比特幣區塊鏈之上的覆蓋網路或第二層,它使用用戶生成的小額支付渠道即時進行交易。2016年,Thaddeus Dryja和Joseph Poon將其作為一個想法引入,并最終在2018年作為一個開源軟體解決方案實施。
簡而言之,閃電網路允許在遠離區塊鏈(或鏈外)的地方進行多筆交易,跟蹤通道的狀態,然后在比特幣區塊鏈上以整潔的單筆交易確認,在實踐中,會減少區塊鏈的擁堵,并使每次使用的價值轉移更便宜,因為閃電網路的費用結構與比特幣不同,
本報告旨在介紹什么是閃電網路、可用于描述閃電網路當前狀況的指標、開發人員正在努力緩解的潛在攻擊向量以及閃電網路的未來,上述主題結合起來,為個人和投資者提供幫助他們了解閃電網路和閃電網路金融或“LiFi”的內容。
快速入門
下面的部分作為閃電網路重要方面的簡要概述,閃電網路是一個覆蓋的點對點網路,它與比特幣一起運行,并使用比特幣區塊鏈來保護其交易,閃電網路沒有自己的代幣。
閃電使用比特幣智能合約,即以代碼或腳本形式編寫條款和執行的自動執行數字合約,以構建其網路。為此,比特幣節點即驗證交易和維護網路的計算機,包含額外的軟體來充當閃電網路的節點,從那里,閃電節點通過執行一個2-of-2的雙邊比特幣智能合約并將比特幣提交到支付通道來打開與其他節點的通道。通道設置有效地將提交的比特幣“鏈外”或移到比特幣區塊鏈之上,使比特幣區塊鏈成為Layer 1和閃電網路Layer 2,
從此,閃電網路的規則適用于該支付渠道。支付渠道的每一方現在都可以來回發送比特幣,而無需等待比特幣區塊鏈的確認,這是Layer 1交易必須完成的。取而代之的是,當比特幣在節點之間通過通道發送時,通道就像一個滑動標尺,兩端的平衡會發生變化。當雙方選擇關閉渠道時,智能合約的規則確定每個節點的最終余額,并在比特幣區塊鏈上結算最終狀態。因此,雖然比特幣區塊鏈只會看到兩個交易:原始承諾交易和渠道關閉交易,但其間可能發生任意數量的交易,
在一個雙節點、單通道的世界里,這很難令人興奮,然而,閃電網路的技術規范還允許通過多個節點通過通道進行支付,這就是網路效應的作用所在。節點A可以向節點C發送閃電支付,即使它們沒有一起打開通道。如果節點A有一個與節點B開放的通道,而節點B有一個與節點C開放的通道,那么節點A可以通過節點B路由向節點C發送支付,節點B將得到名義上的“路由費”補償,除此之外,節點B也不必直接連接到節點C,節點之間必須有一條通道路徑,最終將節點A連接到節點C。
總結,閃電網路有兩個重要特征,首先,現在通過閃電網路發送交易很便宜,交易甚至可以以1 satoshi進行路由,即比特幣的1/100000000或約0.0005美元;其次,由于單筆閃電支付不依賴于比特幣區塊鏈的交易最終性,因此支付實際上是即時的,廉價和即時支付是許多支持者對閃電網路感到興奮的原因,
比特幣交易費。注:有時比特幣交易費用相對便宜(每筆交易不到0.05美元),但是當比特幣內存池變得擁擠時,交易費用會大幅飆升,從而使基礎層的普通交易變得不那么可行。
鏈上指標
下面部分概述了幾個指標,以確定閃電網路作為一項值得投資或關注的技術的整體增長、健康和可行性。這里有一個重要的限制需要注意。并非所有閃電網路節點都需要向整個網路宣布,當啟動一個節點或打開一個通道時,可以選擇向整個網路宣布或者保持私密,只有你所連接的人知道。因此,以下指標在最壞的情況下將代表實際值的下限。作為參考,2020年BitMEX估計有28%的閃電通道是私有的。
1、帶通道的公共閃電網路節點
如前一節所述,閃電網路是一個覆蓋網路,通過由節點維護的支付渠道進行支付。這些通道通過節點連接,支付通過通道路由,直到到達指定的端點,
建立通道的第一步是設置節點。一個可以在安裝后停止,只是作為覆蓋網路的節點,這不允許任何功能上有可用的東西,更進一步,與另一個節點建立支付渠道會更加強大。在這一點上,節點數較少的網路比節點數較多的網路連接較少,沒有一個數字“足夠好”讓個人關注,但隨著時間的推移,數字增加通常是一個好趨勢,2021年8月31日,共有15203個帶有通道的公共閃電網路節點,在隨后的三個月、六個月和十二個月期間分別增長了30.3%、63.8%和99.5%,
帶通道的公共閃電網路節點。注:隨著越來越多的閃電網路節點在彼此之間打開通道,網路變得更大,連接也可能更加緊密,
2、閃電網路容量
如之前所述,為了打開閃電網路通道,節點運營商必須承諾比特幣為其通道提供流動性,承諾到所有渠道的比特幣總量被稱為閃電網路容量。
這是一個重要的指標,但我們應該澄清的是,比特幣的總價值不應被視為單位時間內可以通過閃電傳輸的價值量的最大值。 如果有的話,它實際上是一次可以在一個方向上發送的數量的理論最大值。
為了說明這一點,讓我們舉一個簡單的例子, 想想閃電網路通道,比如帶有抵押池的雙邊信用額度, 如果我們都投入50美元來打開一個通道,那么我們的通道容量是100美元(50美元+50美元),我們每個人都有50美元的索賠。 假設我想花25美元從你那里買東西, 然后我們將通道的余額更改為我的25美元(50美元–25美元),你的75美元(50美元+25美元), 假設你想花10美元從我這里買東西, 我的通道余額將變為35美元(25美元+10美元),而你則為65美元(75美元-10美元), 這可以無限持續,直到我們決定準備關閉我們的通道并穩定下來。 在通道的生命周期中,價值吞吐量很容易超過貢獻給通道的數量。
這正是打開閃電網路通道時發生的情況, 完成比特幣交易以向閃電覆蓋網路提交價值,該交易由比特幣區塊鏈驗證,閃電支付通過通道路由,跟蹤兩端的余額,然后以編程方式關閉通道并在比特幣區塊鏈上進行驗證,區塊鏈只看到值x的兩個交易, 在實踐中,可以實現兩個以上的交易,并且可以轉移遠多于x的價值。 有了這種理解,我們應該將閃電網路容量的增加視為積極的,而減少則視為消極的。
閃電網路容量。注:致力于閃電網路的比特幣超過2300 BTC,創歷史新高, 請注意這并不代表最大交易吞吐量,
順便說一句,流經閃電網路的支付量將是一個有用的指標。不幸的是,這不是對覆蓋網路上的所有節點公開可用的數據, 有一些閃電網路節點運營商會定期提供大量數據,這可能是閃電交易需求的一個很好的代表, 我們現在沒有全網數據,但隨著網路的發展,如果大型節點運營商開始一致地報告交易量數據,我們最終可能能夠準確估計閃電網路支付的金額,
3、每個通道和每個節點容量
在上一小節的基礎上進行擴展,個人可以將網路容量更進一步,并除以通道或節點的數量。
查看這些按通道或按節點的指標可以很好地說明閃電網路的狀況。如果每個通道的平均容量超過1000 美元,這意味著與閃電網路交互的普通用戶可能能夠以最合理的價格進行日常購買;如果平均容量為約100美元或約10美元,這可能會使大多數通道在日常交易中變得不那么可行(請記住,每個通道的容量分布在兩個節點上)。
每個通道的平均閃電網路容量
比較每個節點和每個通道的容量,可以確定節點運營商的潛在活躍程度,如果每個節點的容量接近每個通道的容量,這意味著大多數節點運行少量的通道。隨著差距擴大,這意味著節點操作不止一個通道,每個節點操作更多的通道意味著一旦節點打開通道并“從零開始”,對通道容量的需求就會更高, 如果大多數節點只有一個通道,這可能意味著通道的開放主要是一種只有少數客戶使用的新奇事物,
每個節點的平均閃電網路容量
這里有一些限制, 首先,這些圖表顯示受異常值影響的平均值,如果我們查看百分位斷點,我們可以更詳細地了解“平均”節點的期望值,
每個節點的閃電網路容量
其次,由閃電網路確定的常規通道的大小有一個任意限制,即16,777,215 satoshis(有些通道被稱為“wumbo”頻道,支持無限大小的頻道,但它們不太常見)。 這種現象在2018年8月每個通道數據的第90個百分位數達到最大值16,777,215,然后合并大約9,000,000-10,000,000 satoshis。
每個通道的閃電網路容量
4、閃電網路切斷通道與節點
切斷通道是衡量網路整體連通性的一種手段, 切斷通道是連接網路不同組件的兩個節點之間的通道,該通道的移除將阻止其他節點擁有路徑,因此切斷通道也稱為橋接。
閃電網路切割通道
與其他指標一樣,閃電網路中的切斷通道沒有最佳百分比,如果百分比較低,那么理論上閃電網路的連接性比百分比較高時更好,切斷節點與切斷通道的概念相同,只是它表示連接網路的兩個部分的節點。
閃電網路切割節點
從市場來看,我們更愿意看到被切斷的通道和節點呈下降趨勢,因為這表明網路正在變得更加連接并且越來越不依賴于中心化力量, 許多用戶、開發人員和支持者都認為比特幣協議是去中心化的,并高度重視,因此這也適用于閃電網路。
也就是說,在同一組中了解閃電網路的人不一定關心潛在的閃電網路“中心輻射”結構,這是一種由商家服務運行的大型節點擁有大量通道容量的現象,而大部分網路必須相互貫穿,
個人開設的通道想要與商家服務運營的通道一樣連接的期望是不現實的。 資本必須分配給開放通道,這自然會導致閃電網路流量通過更大的通道流動,這些通道將充當樞紐。閃電網路的價值主張是,如果你不想,你無需使用中心化集線器來支付路徑,沒有什么能阻止個人與他們想與之交易的對象建立私人的、較小的通道,閃電網路仍然是未經許可的,并不需要大型中心化力量的許可才能使用,
閃電網路有選擇的能力,
漏洞:攻擊媒介與方式
當涉及閃電網路的討論時,許多報告論文和媒體內容已經嚴重兩級分化,通常被定義為兩種說法,一種則是被描述為一種可以解決比特幣所有規模問題的完美產品,而另一種則與之相反,閃電網路并不被看好,甚至希望將其技術應用于一些其他代幣中,而不是執著于閃電網路的進一步研究,
當然,現實是介于兩者之間的,投資者可以從開發者的角度來看待閃電網路,總的來說,閃電網路開發社區認為閃電網路是一項具有巨大潛力的令人興奮的技術。同時他們也明白,如果要廣泛實施閃電網路,還需要考慮閃電網路所存在的一些會被攻擊的漏洞,
攻擊媒介
在我們深入研究特定的攻擊媒介之前,我們需要對一些閃電網路術語進行定義。
閃電網路使用哈希時間鎖定合約(HTLCs),主要包含兩個基本部分來支付:哈希鎖和時間鎖,這基本上意味著,有一個哈希可以被公開以成功路由支付,這通常被稱為原相密碼,還有一個超時的概念,即任何一方在經過一定時間后都可以要求付款,
這種超時的概念被用于避免疏忽的渠道運營商出現錯誤,但它也可能被攻擊者利用,當節點發送支付時,它們通過發送HTLC來完成,還需要注意的是,攻擊者還可以利用他們對L1工作過程的了解來進行攻擊,因為比特幣節點在閃電網路的正常運行中發揮著重要作用。
1、Griefing攻擊
Griefing攻擊是通過向閃電網路發送小額支付的垃圾郵件來凍結提交給閃電網路的比特幣。閃電網路通道一次只能容納483個待定的HTLC,因此,攻擊者可以通過其他節點維護的通道將483個小額支付發送到他們控制的另一個節點,然后長時間持有HTLC以使這些通道失效。這可能導致資金被凍結長達兩周,屆時就會因為超時而取消合約,
Griefing攻擊不等同于盜竊資金,但可以用于破壞或向閃電網路運營商索要贖金,而且攻擊者也可以用很少的資金、一些腳本知識和一點運氣關閉很重要的大通道。
Griefing攻擊也可能導致由于Griefing攻擊所引發的通道強制關閉而導致資金的意外損失。當一個通道伙伴試圖在沒有得到另一個通道伙伴同意的情況下關閉一個通道時,就會發生強制關閉。通常情況下,強制關閉通道并不理想,因為資金鎖定的時間比雙方同意的渠道關閉時間長,而打開渠道的合作伙伴將會支付比平時更高的鏈上費用,
閃電網路的維護者們從來沒有去深入解決過Griefing攻擊這個問題。Joost Jager正在研究一種名為“斷路器(Circuit Breaker)”的概念,“斷路器”允許節點運營商在每個對等點的基礎上分配最大數量的運行中HTLC,從而使攻擊者不可能用最大數量的HTLC淹沒節點。 為“斷路器”必須在整個網路中實施,因此這一改變需要更廣泛的社區的支持,
2、Eclipse攻擊
Eclipse攻擊,又名時間膨脹攻擊,這其中包括對閃電網路節點的Sybil攻擊。為了實現這一點,攻擊者啟動數百個節點來聚集被攻擊者的節點,這樣被攻擊者就不會連接到任何正確的節點,這有效地阻止了被攻擊者進入實際的點對點網路,攻擊者可以指示被攻擊者看到什么,從那里,攻擊者可以關閉閃電通道,由于被攻擊者無法知道網路實際在做什么,所以攻擊者就可以借機竊取資金,
乍一看,這似乎沒什么大不了的,如果您正在運行一個完整的節點,那么很可能會因為與正確節點的連接過于廣泛,而無法受到充分的攻擊,然而,一些錢包提供商使用了許多閃電網路的“輕量級”設施,這些設施每次只從比特幣鏈接收一個區塊的數據,并不總是有區塊鏈交易歷史的副本。請注意,雖然閃電網路是獨立于比特幣的,但對區塊鏈的了解仍然至關重要,這些輕客戶端使用區塊鏈處理的后端來節省資源受限設備(主要是移動設備)上的空間,
然而真正的問題就在這里,Eclipse攻擊會利用那些使用輕量級閃電網路和比特幣設施的用戶,這可能意味著這些用戶不太成熟,但資金充足,這顯然與比特幣和支持比特幣的服務的精神和最終目標背道而馳,
大多數可以采取的措施來緩解這種攻擊媒介都來自用戶端,盡管還存在一些潛在的解決方案,例如:
1、更高的連接性和正確可到達的節點數,應鼓勵可靠的用戶向網路提供更多資源,并在比特幣網路上更有效地利用這些資源,因為閃電網路與Layer 1相關。致力于網路的正確節點越多,就越難受到攻擊。
2、對等點多樣性,通過對等點輪換實現主動拓撲改進,這將增加Sybil攻擊的成本,因此是一種有效的對策。
3、監視塔的實現,作為網路的監視器,當檢測到用戶試圖廣播不正確的通道狀態以欺騙協議的用戶時,發送“breach remedy”或“justice”交易作為懲罰。監視塔實際上是在探測閃電網路中的不良行為,
3、Pinning攻擊
Pinning攻擊利用不同的交易內存池,以及當主交易的費率太低或交易不允許費用替換(RBF)(后兩者是相關的,但概念略有不同)時,子交易無法為主交易付費(CPFP)而交易受到沖擊。
當比特幣交易啟動時,它們被聚合到一個內存池中,礦工在其中尋找要包含在塊中的交易。CPFP是指在原始交易的費用太低而無法按預期的速度執行的情況下,參考先前交易以提高有效費率以加快其添加到區塊鏈的交易,RBF指的是一種交易策略,允許將內存池中未確認的交易替換為相同的交易,但收取更高的費用。CPFP和RBF的不同之處在于,CPFP交易始終可以嘗試,而RBF交易只能在原始交易選擇RBF時發生,
考慮到這些概念,成熟的攻擊者可以利用比特幣和閃電協議的優勢對待處理的閃電交易進行鎖定攻擊,Pinning有多種形式,如下所示:
1、攻擊者與目標受害者建立了兩個通道。
2、攻擊者通過這些通道從攻擊者A向攻擊者B發送交易,
3、當攻擊者B收到HTLC時,它們不響應并等待時間超時,這迫使受害者發布包含“HTLCtimeout 交易”的承諾交易,以便在受害者和攻擊者B之間索取HTLC B中包含的資金,
4、然后,攻擊者廣播一個交易,在受害者和攻擊者B之間聲明HTLC B,并在禁用RBF的情況下故意以較低的費用泄露哈希鎖密碼,費用被故意設置為較低,因為在攻擊者A能夠提取HTLC A之前交易必須不確認,否則,攻擊者的HTLC B被成功挖掘,使受害者能夠看到它和必要的原像,從而使他們能夠從HTLC A提取資金,從而停止攻擊。如果攻擊者的交易在受害者的HTLC超時交易之前進入礦工的內存池,受害者將無法收回資金,HTLC B值將從受害者流向攻擊者B,受害者可以嘗試使用RBF增加其HTLC超時交易的費用,但他們無法替換攻擊者的交易,因為它禁用了RBF,受害者被“固定”在適當的位置,無法做任何事情,因為他們在自己的內存池中看到HTLCtimeout交易,但它沒有被挖掘。
5、同時,從攻擊者A到受害者的HTLC A時間鎖定到期,攻擊者A可以為自己申請HTLC A,當攻擊者的交易被挖掘時,受害者將在下游支付HTLC,但在上游沒有收到相應的金額。
下圖提供了Pinning攻擊基本原理的摘要和概要:
資料來源:Bastien Teinturier
更深入地說,對于HTLC,所有礦工在他們的內存池中都有一個“成功”交易,該交易顯示了聲明HTLC的原像,而網路的其余部分有一個超時交易,攻擊者確保原像交易具有足夠低的費率,可以保存在內存池中(通常礦工將在具有較高費率的塊中包含交易),以便上游通道能夠聲明超時的HTLC,
如果前面的攻擊聽起來過于復雜,那是因為它確實如此。好消息是Pinning攻擊非常難以實現,這需要對比特幣區塊鏈和閃電網路有深入了解的人。無論多么困難,這仍然是很有可能的,開發人員正在通過一些更新來緩解這種攻擊,
首先,錨定輸出使此攻擊更加困難,錨定輸出是閃電網路承諾交易中的特殊輸出,旨在允許對事務進行緩沖。錨定輸出本身并沒有停止鎖定,但它們確實使鎖定變得更加困難。這些已經為閃電提出了一段時間,現在已經在閃電網路上使用了。
第二,有一種稱為“包中繼”的東西,當與錨點輸出相結合時,就會使Pinning攻擊成為過去,“包中繼”是一項正在提議的功能,它允許節點發送和接收相關交易的包裹,這些交易將根據整個包的費率而不是每個單獨交易的費率被接受或拒絕,這打擊了攻擊者完成Pinning攻擊的主要機制。
4、Flood&Loot攻擊
Flood和Loot攻擊利用閃電網路使用時間鎖路徑支付這一交易,要執行Flood和Loot攻擊,攻擊者需要兩個節點:源節點和目標節點,通過源節點,攻擊者打開一個與受害者的通道,從而通過目標節點打開其他通道。然后,攻擊者通過受害者向目標節點發送盡可能多的付款或HTLC,攻擊者在付款到達目標節點時接受付款,并將原像發送回源節點進行驗證。
此時,攻擊者的源節點停止應答。這意味著受害者必須等到HTLC超時后才能關閉比特幣鏈上的通道。但是,如果攻擊者同時關閉所有通道,比特幣鏈將變得擁擠,節點希望同時關閉其通道。超時后,攻擊者可以使用RBF聲明任何已經過期的HTLC。
這是一次破壞性的攻擊,因為它會導致資金損失。開發人員有幾種方法來降低Flood和Loot攻擊攻擊的發生率,在概述這些攻擊之前,避免這些攻擊的最簡單的方法,尤其是作為個人,就是僅使用你知道和信任的節點打開閃電網路通道,
降低攻擊率方法:
1、如果一個節點有許多其他方無法解決的待定傳入HTLC,則該節點很可能受到攻擊。在這種情況下,應盡早關閉該通道,以避免資金流失,支持更復雜的動態關閉規則策略,該策略根據該通道可能產生的潛在損失調整“承諾廣播增量”,即HTLC到期之前節點開始單方面關閉通道的時間。
2、考慮一種機制,該機制將根據節點操作員響應對等行為而設置的基于信譽的分數,改變可通過節點連接到的通道發送的HTLC數量,節點信譽越高,通過它發送的HTLC數量就越多,
3、錨點輸出長期以來一直被認為是Flood和Loot攻擊的緩解技術,現在它們依靠閃電網路生存,也會使得這些攻擊變得更加困難。
戰略規劃與未來展望
閃電網路前景廣闊,但仍有許多工作要做,還有很長的路要走,對此,在閃電網路未來發展道路上的一些規劃以及展望中,閃電網路開發人員提出了關于閃電網路未來發展規劃的六大要點。
1、閃電網路的開發應該有條不紊、謹慎地進行,以保持一致的正常運行時間,所以開發人員還不能在真正資金危及的開源網路上打破常規的加速行動;
2、網路及其設施(提供擬議程式規范的實際軟體)必須始終遵守閃電網路的技術規范,不能“不符合規范”。 如果其中一個流行的設施,例如Lightning Labs的lnd、ACINQ的eclair或 Blockstream的clightning,為了追求它們認為更優越的東西而偏離規范,那不僅會對閃電網路造成損害,而且還會對創建我們現在擁有的金融支付系統造成損害;
3、閃電網路還處于萌芽階段,還需要更多的用戶來測試網路,因為一旦現實生活中的激勵措施產生,那么在測試環境中所產生的工作想法可能就行不通了;
4、有些人和組織將尋求“游戲化”網路以獲取經濟利益,這類似于困擾以太坊的MEV機器人,隨著更多價值附加到閃電網路,這可能會成為一個潛在的問題;
5、隨著網路的發展,我們所知道的理論問題可能會成為真正的問題,閃電網路白皮書中直接引用的一個例子是強制刪除過期垃圾郵件;
6、閃電網路最終可能不會大規模運行,因為當有數十億個支付通道時,對比特幣鏈及其內存池的依賴是當前設計中的閃電網路可能無法擴展到數十億用戶的原因。