跨鏈協議陷安全風波時,聽 Dragonfly 詳述跨鏈「橋」設計思路

安全跨鏈橋的希望寄託在去中心化、無需許可的「橋」上。

撰文:Celia Wan,Dragonfly Capital 初級合夥人
編譯:Perry Wang

8 月 10 日,又有一個跨鏈互操作性協議遭遇了黑客攻擊。

這次有點不同,因爲它是加密歷史上最大的黑客攻擊,並被 主流媒體 爭相報道。而黑客與以太坊社區之間的玩笑更給本次事件抹上了一層傳奇的色彩,其中一名社區成員因爲向黑客提供了有關如何躲避執法的 建議,以及與黑客進行了一次問答而收到 13.37 ETH,黑客透露他計劃歸還被盜的資金。

在這些喧囂背後,是 Poly Network 遭黑客攻擊事件,以及其他四個橋接器遭黑客攻擊事件揭示了跨鏈互操作性解決方案當前不盡如人意的狀態:

如今,許多互操作性解決方案使用起來並不安全,甚至無法使用。現在是很多「橋」被臨時拼湊起來以滿足項目的直接需求。但最終,它們或被更好的產品所取代,或演變成去中心化的解決方案或受信任的第三方。

要理解爲什麼會變成這樣,我們需要了解如何使跨鏈交互成爲可能,以及一些可能導致關鍵安全和用戶體驗缺陷的主要設計方案。

我們先從 Poly Network 被黑事件開始談起。

到底發生了什麼?

實際上,Poly Network 被利用的漏洞,部分原因在於其受信任的中繼器(用他們的話來說,「keeper」)設置,部分是由於 Poly Network 在跨鏈發送信息時未能正確驗證交易。

Poly Network 上的跨鏈交易由一組受信任的 keeper 促成,他們在源區塊鏈上對區塊簽名。然後他們的簽名在目標鏈上由「守門人」智能合約進行驗證,然後執行交易。同一個智能合約還控制着一個 keeper 目錄,並且可以在驗證簽名時對其進行修改。

黑客首先在 Ontology 鏈上調用了一個(無效的)函數,該函數產生了一個與簽名哈希值碰撞的函數簽名,而在正確簽名時變更 keeper 目錄的函數將會產生。這一函數被「守門人」智能合約批准,因爲它是 Ontology 上的有效交易(儘管碰撞函數本身不存在)。黑客隨後通過「守門人」智能合約的任意交易執行服務調用這一函數更改以太坊目錄中的 keeper。合約被欺騙,相信了相應交易確實在 Ontology 上被調用並得到簽名,因爲黑客之前調用的碰撞函數產生了相同的函數簽名。合約然後執行變更 keeper 功能,使得黑客能夠將所有 keeper 更改爲他控制的地址,隨後將該網絡洗劫一空。

Poly Network 跨鏈設計的直接缺陷似乎是:它不應該將「看門人」智能合約設置爲 keeper 目錄的控制器,但這種橋接設計更根本的問題是:用戶的資產完全委託給 keeper,無需額外檢查交易的有效性。

這裏要注意,「看門人」合約並不驗證鏈上的交易,而是盲目地相信 keeper 的簽名,作爲交易在源鏈上發生的證據。這意味着任何成功模仿 keeper 的人,都可以欺騙合約執行他們想要的任何交易。雪上加霜的是,keeper 人數較少,其對網絡的訪問記錄存放在最終被攻陷的目錄中。

綜合以上兩點,我們可以看出 Poly Network 的安全性完全依賴於兩個假設:1) keeper 會誠實行事; 2) 沒有人可以冒充 keeper。

而在第二個假設中,黑客發現了漏洞。

爲了確保「橋」的安全,「橋」的去中心化程度應該有多高?「橋」開發者在其設計中做出的哪些假設會導致這些差異?我們先從通常如何構建跨鏈「橋」的基礎知識開始談起。

要了解對此次黑客事件更深入的分析,推薦 Mudit Gupta 和 BlockSec 團隊的文章。

「橋」應該自問自答的五個問題

最廣泛採用的「橋」設計是久經考驗的真正「鎖幣-鑄造-銷燬」方法。

它的基本工作原理是:一個「橋」在鏈 A 上指定一個地址,供用戶存入其資產。然後,該「橋」在 B 鏈上鑄造打包版的代幣,並將它們發送到用戶選擇的帳戶。用戶要提現,需要將打包代幣發送回 B 鏈上的一個地址,供「橋」收集和銷燬。然後「橋」將鏈 A 鎖定的代幣釋放給用戶。

在這種架構下,可以對資產映射「橋」根據其安全假設進行進一步歸類,在中心化程度光譜圖上逐一定位。

  • 誰保管存入的資產?
  • 信息如何從鏈 A 傳遞到鏈 B?
  • 「橋」如何驗證轉發的信息是真實的?
  • 如何激勵人們傳遞信息?
  • 誰能觸發鑄造和銷燬?

中心化「橋」

中心化「橋」可以被視爲最不安全的一類「橋」,但如果「橋」運營商有良好的聲譽,它們可能是可以接受的。

一個很好的例證就是幣安「橋」,幣安公司作爲 幣安智能鏈(BSC)、幣安鏈和其他區塊鏈之間的中間商,從一條鏈接收用戶資產,然後在 BSC 或幣安鏈放出打包代幣。 用戶還可以通過其幣安交易所賬戶直接將資產提現至 BSC 或幣安鏈。

很難相信幣安會故意欺騙其用戶。畢竟如果他們這麼做將聲名狼藉,甚至失去交易所的用戶。不過,這並不是說這座「橋」沒有償付能力問題。

通常,通過檢查源鏈上「橋」的地址的總餘額,是否與目標鏈上所流通的打包代幣總數相等,來驗證「橋」是否完全具有償付能力是輕而易舉的事情。但是在幣安的設計中,執行審計很困難,因爲無法確認用戶在幣安交易所內實際購買和提取了多少代幣。

換句話說,幣安發行的打包代幣的數量可以多過它目前在儲備中持有的代幣,而社區無法對其進行驗證。爲了解決這個問題,幣安在以太坊上鎖定了一些資產作爲「儲備金證明」。

去中心化「橋」

「橋」通常引入一組驗證人來放棄中心化控制。簡單說,擴大驗證人集可以解決上述五個問題,如下所示:

  • 驗證人共同託管用戶所存入資產
  • 驗證人共同監控鏈 A 和 B 上的活動,並在兩者之間傳遞信息
  • 驗證人就 A 鏈和 B 鏈的最終狀態達成共識
  • 驗證人質押代幣參與中繼,當信息轉發不正確時,其質押的資產會被削減
  • 驗證人共同控制打包代幣的鑄造和銷燬

更仔細地觀察,我們可以看到去中心化「橋」之間的最大區別在於:如何激勵驗證人以及如何確保信息準確性。換句話說,區別在於中繼網絡是否是無需許可的,以及中繼者如何達成共識。

一個具有一定程度中心化的「橋」會有一組白名單中繼者,他們通過多重簽名共同控制打包代幣的鑄造和銷燬。由於這些驗證人通常是 經過 KYC 審覈的,或在現實生活中彼此認識,因此他們之間是相互信任的。相應地,他們中的任何一個都可以將信息從 A 鏈傳遞到 B 鏈。目前只有 Terra Shuttle (Terra)、Chainswap (Solana)和 Chainsafe (Avalanche)等少數項目採用了這種設計,並且大多數有計劃進一步實現「橋」的去中心化。

其他「橋」建立在權益證明(PoS) 網絡上,其中允許任何人成爲驗證人。這些 PoS 網絡可以是現有的網絡,也可以是專門爲跨鏈通信而打造的新網絡。

例如,Matic PoS 「橋」、deBridge 和 Anyswap 都利用了現有的 PoS 區塊鏈——分別是 Matic、Chainlink 和 Fusion。而第二種例子中,Axelar 正在從頭開始構建這樣的中繼網絡。

在 PoS 共識環境中,驗證人被激勵運行節點以換取瓜分交易費用。他們必須傳達正確的信息,否則其質押的資產將被削減。

最後,雖然大多數基於 PoS 的「橋」依賴某種共識機制來準確地傳遞信息,但也有一些「橋」具有完全無需信任的中繼者。在這種情況下,仍然需要中繼者將信息從一條鏈傳遞到另一條鏈,但「橋」並不依賴他們來保證信息的準確性。

相反,這些「橋」創建鏈上輕客戶端來驗證中繼信息,並相應地調用 「鑄幣 / 銷燬 / 解鎖」功能。 例如,NEAR 的彩虹橋一個是用 Rust 語言執行的以太坊輕型客戶端(作爲一個 NEAR 合約),另外採用一個 Solidity 語言執行的 NEAR 輕型客戶端(作爲一個以太坊合約)。這是最昂貴的跨鏈「橋」形式,因爲它需要完整的 SPV 驗證。但正因爲如此,其無需信任程度是最高的。下一節將詳細介紹這一點。

代幣經濟學問題

儘管乍一看,「橋」的建設聽起來像是一個技術問題,但它在很大程度上也是一個經濟問題。

幾乎不可能在不破壞其代幣經濟學的情況下將資產改造爲多鏈結構,而且多數資產的代幣經濟學最初並不是爲多鏈世界設計的。在單鏈上擁有代幣的項目需要決定是要增加其代幣總供應量,還是在擴展到另一條鏈時進行某種資產映射。

例如,如果 Uniswap 原本是在以太坊上發行 UNI,UNI 如果也要在 Polygon 上流通,需要 Uniswap 社區同意在 Polygon 網絡上鑄造更多 UNI。然後可以通過兩種方式將新鑄造的 Polygon UNI 納入 Uniswap 的代幣經濟學:可以鎖定等量的以太坊 UNI,以維持固定供應量,或者社區可以決定實際增加總供應量,將新鑄造的 Polygon UNI 授予 Polygon Uniswap 用戶。

在實踐中,大多數項目,例如 SUSHI 和 1INCH,傾向於採用第一種方法。最突出的例外是 USDT,它採用了第二種方法:雖然 USDT 最初是在 Omni 上推出的,但它目前由其發行機構 Tether 在包括以太坊、波場和 Solana 在內的多個鏈上鑄造,沒有單一的鏈作爲結算場所。經濟方面的考量也會影響「橋」如何處理這些資產。

更多問題,以及部分謹慎的答案

儘管當前市場上存在大量「橋」,但可以肯定地說,我們仍然還沒有令人滿意的「橋」解決方案。 一方面,大多數「橋」仍然不是通用的解決方案——每個鏈都建立了自己的定製橋接,彼此的穩定性和 API 大不相同。此外,由於大多數「橋」使用鎖幣-鑄幣-銷燬模式,流動性非常碎片化,混亂的命名模式會導致對每個代幣實際代表的意義存在混亂的理解。最後也許最重要的是,正如最近的黑客攻擊所顯示的那樣,其中一些「橋」根本不夠安全,無法讓用戶將其資金託付給它們。

從用戶的角度來看,仍然沒有包羅萬象的跨鏈協議。最接近的解決方案是 Anyswap,它目前支持 BSC、以太坊、Matic、xDAI、Avalanche 等。即便如此,用戶仍然會遇到諸如等待時間長、存在最低轉賬金額以及有時會有提款限制等問題。

流動性碎片化仍然是跨鏈轉移的一個嚴重問題。歸根結底,「橋」只有在流動時才能成功。以比特幣(BTC) 爲例,WBTC 已經建立了相對於其他競品的巨大優勢,並已成爲以太坊上默認的打包 BTC。依靠中心化「橋」的代幣在市場上佔據主導地位,佔總市值的 70% 以上。 其他資產很可能也會發生同樣的演變——那些行動迅速並率先交付有效打包代幣的項目將在搶佔市場方面佔據優勢,即使後來者可能有更好的設計。

WBTC 的壟斷地位 (來源: DeBank)

其中的制勝法則似乎是在儘可能多的主流鏈上積累儘可能多的流動性。相比之下,「橋」是否具有技術上最合理的設計顯得次要,因爲多數外行用戶不太關心底層架構,而只是簡單地快速、廉價地移動他們的資產來完成自己的目的。

話雖如此,「橋」設計差異的更多技術含義目前尚未得到充分探索,其中最突出的是安全性。

2020 年見證了非以太坊 L1 公鏈和側鏈的興起,以及對跨鏈資產轉移的需求激增。例如,僅 Matic PoS 「橋」就能夠積累 超過 30 億美元 的資產,鎖倉價值創下歷史最高水平。更不用說,目前市場上已經出現了 20 多種跨鏈「橋」。

在很大程度上,這種跨鏈流量的激增讓許多項目措手不及。因此很多人不得不建造自己的臨時「橋」來滿足目前的需求。但是這些「橋」安全嗎?

一些「寄生」在現有區塊鏈上或建立在受信任中繼網絡上的現有「橋」,或多或少是臨時性解決方案,無法滿足長期的用戶需求。這些「橋」的用戶通常受到以下事實因素的約束:沒有其他「橋」可以連接到他們想要將資產移動到的特定鏈(以 Poly Network 事件爲例)。因此他們被迫相信這些「橋」背後的 keeper 或中繼者會誠實行事,而實際上對這個組織知之甚少。

如果運營這座「橋」的公司是知名企業且享有盛譽,那麼一個完全中心化的橋可能會解決這個問題。然而如上所述,這類操作的不透明性引發了對償付能力的新擔憂。

我們最後的希望似乎寄託在去中心化、無需許可的「橋」上。它們會成爲互操作性競賽的贏家嗎?很難說,原因很簡單,它們的建造難度很高。一個比較有效且具有最大流動性的平庸跨鏈協議最終成爲生態系統標準?這並非全無可能。不管最終結果如何,追求更安全的「橋」始終是我們的目標,因爲整個生態系統都將從安全性和良好的設計中受益。

我們將在同名文章的第二部分更詳細地討論一些「橋」的設計,以及它們在連接不同共識機制區塊鏈時面臨的技術挑戰。

感謝 Rahul Bishnoi、Haseeb Qureshi、Xin Yan 和 Karim Helmy 的深刻見解和反饋。



coinpionex