Bool Network:跨鏈橋中的六邊形戰士
作者:MiddleX,LayerBase Labs 顧問
隨著多鏈格局的發展,跨鏈橋已成為 Web3 領域的重要基礎設施,無論公鏈格局如何演變,此消彼長,跨鏈始終是不變的剛需。對於 Dapp 項目方而言,他們需要將自身業務範圍盡可能擴展到更多鏈上,從單鏈 Dapp 發展為全鏈 Dapp;對於公鏈項目方而言,大家都有動力去橋接比特幣和以太坊,為自己的生態導入資產和流量;對於加密用戶而言,也希望讓自己的加密資產能以去中心化的方式遊走於不同的鏈上,而不再依賴於中心化交易所。
然而,跨鏈橋作為鏈間"運鈔車",卻屢遭"搶劫"。過去兩年,主流跨鏈橋項目幾乎無一例外的被黑客光顧。在各類型加密安全事故中,跨鏈橋事故以將近 20 億美元的損失金額高居榜首。解決跨鏈橋安全問題,為這輛目前"敞篷"著的"運鈔車"加裝護甲迫在眉睫。
如何破局?
總體來看,跨鏈橋的安全事故分類兩類:一類是合約代碼漏洞導致,比如缺乏代幣合約地址驗證,導致攻擊者偽造的假幣存入事件沒有被過濾,再比如缺乏訪問控制,導致驗證者集名單被篡改;另一類是驗證節點串謀,盜取私鑰,進而盜取跨鏈橋鎖倉資金,亦或鑄造假幣向 LP 搶劫。
前者的主要原因是跨鏈橋代碼庫尚未成熟,這類問題隨著行業經驗的積累會慢慢減少。後者的主要原因則是跨鏈橋在設計層面的固有缺陷。
跨鏈橋本質上解決的是一條鏈如何知道另一條鏈上的事件的問題。這個問題分為兩個方面,一是傳遞,二是驗證。在跨鏈橋中,任何人都可以傳遞跨鏈事件,關鍵是目標鏈如何驗證該事件在源鏈上真實發生。
根據驗證機制的不同,跨鏈橋被分為原生驗證(Natively Verified)、本地驗證(Locally Verified)、外部驗證(Externally Verified)三種類型。
原生驗證是指目標鏈的全體驗證人對源鏈的事件進行共識驗證,一般是通過在目標鏈上部署源鏈的輕客戶端實現的。該輕客戶端不斷保存和更新源鏈的區塊頭,進而對源鏈的事件執行 SPV 驗證。
本地驗證是指交易對手對交易直接進行驗證,也稱點對點驗證。典型的範式是基於哈希時間鎖的原子交換。由於交易雙方的經濟利益是對抗的,因此不存在合謀的可能性。
外部驗證是指引入一組外部的見證者來負責驗證跨鏈消息,外部的見證者集對跨鏈事件進行共識簽名,目標鏈驗證該簽名後即認為該事件可信。
原生驗證成本較高,主要體現在兩點,一是鏈上驗證成本高,鏈上運行輕客戶端,並對事件執行 SPV 驗證都會消耗大量的 Gas,二是兼容新鏈的開發成本高,每兼容一條新鏈,就需要開發至少一對輕客戶端。隨著 ZK 敘事的崛起,目前市面上有通過 ZK 技術改進原生驗證的方案,可以有效緩解上述成本,但無論如何優化,鏈上至少還是需要驗證一個 ZK 證明,開銷大約為 500 k Gwei,與外部驗證僅需驗證一個簽名(21 k Gwei)不可同日而語。因此原生驗證在跨鏈橋的價格競爭中無法占據優勢,且無法實現真正意義上的"全鏈"。
本地驗證曾經被 Celer、Connext 等知名項目採用,但這些項目無一例外,已改弦更張,不再使用本地驗證。原因是本地驗證的交易體驗極差,無論如何優化,始終需要用戶至少操作兩次(發起交易、解鎖哈希鎖),如果交易對手中途離線,或故意不成交,還會導致用戶的資金被卡住。除此之外,本地驗證僅適用於資產跨鏈,無法擴展至任意消息跨鏈。
外部驗證實現成本較低,跨鏈開銷低,可以輕鬆適配多鏈,且支持任意消息跨鏈,目前它是大多數跨鏈橋項目採用的方案。但外部跨鏈橋由於引入新的信任假設,而帶來潛在的串謀風險。外部驗證型跨鏈橋大多採用 MPC (安全多方計算) 技術,對私鑰進行分片,讓每個外部驗證節點掌握一個分片。
相比普通的 MutiSig(多簽) 技術,MPC 技術具有普適性更強(對鏈採用的簽名方案沒有要求)、驗證成本更低(鏈上僅需驗證一個單獨的簽名)、方便移交簽名權限(僅需刷新分片,無需變更地址)等優勢,但這並不改變外部驗證的中心化實質,不能杜絕串謀。
那麼究竟使用什麼樣的跨鏈方案,能在不犧牲跨鏈橋性能、可擴展性、通用性的前提之下,消弭串謀風險,改善跨鏈橋的安全性呢?
BOOL Network 的方案
BOOL Network 是由 LayerBase Labs 推出的跨鏈橋產品。LayerBase Labs 在跨鏈領域研究了近 4 年時間,期間推出了一些最小可行性產品,但由於這些產品不夠完善,始終未推廣至大範圍使用。近期,LayerBase Labs 推出了基於 動態隱藏委員會(DHC) 的跨鏈橋:BOOL Network,這一方案被認為足夠完美,因此準備在公眾面前亮相。
BOOL Network 的跨鏈方案在 MPC 技術的基礎上融合了 ZK 技術和 TEE 技術,將外部驗證者集改造為一個不可知、不自知的動態隱藏委員會,實現了高度的抗串謀屬性,進而實現了高度的安全性。
我們用一個例子來說明什麼是"動態隱藏會員會"。
假設你是一名將軍,統領 1000 名士兵,奉命守衛 50 個糧倉,你將如何安排你的士兵呢?
假設所有糧倉都是同等重要的,那麼將 1000 名士兵分成 50 個 20 人小隊,每個小隊分別負責駐守一個糧倉便是最好的安排。
但分兵把守帶來一個隱患,如果某一個小隊超過半數的士兵串謀,那麼對應的糧倉就可能失守,也就是說如果一個小隊中有 11 名士兵串謀,就可能背叛你,搶奪糧倉。
這是你不能容忍的,為了阻止這種串謀,保證糧倉的安全,你可以採取這樣的辦法:
動態:每天對所有士兵進行重新分組,重新劃分小隊,這樣每個士兵所守衛的糧倉和他的隊友都將不固定;
隱藏:蒙上士兵的眼睛,讓他們不知道自己守衛的是哪個糧倉,也不知道自己的隊友是誰。
這樣下來,叛變的士兵將不知道和誰去串謀。即便有事先約定好的叛變者,他們也無法控制、無法得知叛變者是否在同一小隊。
假設要保證串謀大概率成功,叛變者必須串謀你整個1000人隊伍當中的大多數才可以。這無疑難如登天。通過"動態"和"隱藏"的方式,你讓每一個小隊的可靠性都達到了整個隊伍的水平。
這正是 BOOL Network 採用的方案。
TEE ------ 為每個士兵蒙上眼睛
BOOL Network 要求網絡中的節點必須使用 TEE 設備參與跨鏈事件的驗證。BOOL Network 是完全開放準入的,任何擁有 TEE 設備的主體都可以通過質押 $BOOL 成為驗證節點。
TEE 全稱為可信執行環境(Trusted Execute Environment),它是給定設備上運行的與主操作系統隔離的計算環境,就像一塊飛地(Enclave),這種隔離是通過硬件強制實現的。在 TEE 中運行程序的過程是隱蔽的,外界不可感知,也不可干預。這會讓黑客攻擊無從下手。
TEE 可以運行具有高安全性的應用程序,例如生物特徵認證,安全支付管理等。在我們日常生活中,TEE 並不陌生,手機上的指紋驗證就是在 TEE 中運行的。這樣可以保證其他手機應用在使用指紋驗證結果的同時無法獲取指紋信息。
在跨鏈事件的驗證過程中,外部驗證節點需要進行共識簽名,這時,私鑰不得不暴露在網絡中,極易成為黑客攻擊的目標。2022 年 3 月 Axie Infinity 官方橋 Ronin Bridge 遭遇的攻擊和 2022 年 6 月份 Harmony 公鏈官方橋 Horizen Bridge 遭遇的攻擊,正是橋節點私鑰被黑客獲取導致的。將 TEE 用於保管私鑰分片,執行共識簽名,將大大提升安全性,避免私鑰被黑客獲取。在此基礎上,BOOL Network 要求 TEE 節點之間的所有通訊也完全加密,這樣一來,黑客也無法從節點之間的通訊內容中截獲任何信息。
Ring VRF ------ 讓士兵隨機輪崗
BOOL Network 被設計為一個創建跨鏈橋的工具,支持任意第三方在其上創建跨鏈橋,當某第三方在 BOOL Network 上創建跨鏈橋時,需要先創建 DHC(動態隱藏會員會),假設該第三方希望自己創建的跨鏈橋支持 10 條鏈,那麼就需要創建 10 個 DHC,每條鏈對應一個 DHC ,所有向該鏈發送的跨鏈消息都由該 DHC 負責驗證。
每有一個第三方通過 BOOL Network 創建跨鏈橋,就會產生若干個 DHC,隨著 BOOL Network 上創建的跨鏈橋不斷增加,可能會有成千上萬個 DHC。第三方可以設置 DHC的簽名閾值,常見的簽名閾值有 5-of-9、13-of-19、15-of-21。
需要注意的是,每個 DHC 中的成員並不是固定的,而且是不斷輪換的,每個 Epoch 會洗牌一次。 基於 ZK 技術,BOOL Network 開發了 Ring VRF 協議,可以完全隨機的為每一個 DHC 分配成員。
Ring VRF 會為 DHC 成員生成一個 ZK proof,這個 ZK proof 代表了成員的臨時身份,DHC 成員都是用臨時身份去相互識別和相互通信,從而合作完成某項工作(比方說進行 MPC 門限簽名);這樣做保證了 DHC 成員無論對外,還是彼此之間,都是匿名的。
同一個 Epoch 內,不同的 DHC 中的 TEE 節點可能會重疊,也可能有部分 TEE 節點沒有進入任何一個 DHC 而被閒置,這些情況都是被允許的,但 RIng VRF 在概率層面,會賦予每個 TEE 節點完全均等的機會。
總之,通過 動態隱藏委會員 機制,BOOL Network 構建了一個牢不可破的黑箱。如果一個 TEE 節點處於工作狀態,任何人(包括節點運營者本人、其他節點、外部攻擊者)都無從知道該節點的運行狀態,該節點在哪一個DHC?與哪些其他節點在同一個DHC?進行了哪些共識通訊?簽名了哪些消息?都無從知曉。這就是前文所述的"不可知"、"不自知"。在這樣的前提下,只要 BOOL Network 網絡自身是安全的,那麼每一個動態隱藏會員就是安全的。若要保證攻擊大概率成功,攻擊者必須掌握 BOOL Network 中的大多數節點。但由於運行在 TEE 中的程序是不可篡改的,攻擊者只能做到讓網絡宕機,無法盜取網絡中的資產。
如何評估一個跨鏈方案
儘管安全性是跨鏈橋最迫切要解決的問題,但安全性卻不是評價跨鏈橋的唯一標準。如果為了解決一個問題,創造了一個新的問題,那就不是在真正解決問題。
LayerBase Labs 很早就研究過各種基於輕客戶端的擴容方案,包括 ZK Client 的方案。ZK Client 的基本原理是通過 ZK 技術給輕客戶端擴容,把區塊頭的驗證和對源鏈事件的 SPV 驗證放到鏈下,生成一個 ZK 證明提交到鏈上,鏈上僅需驗證該 ZK 證明即可等效於驗證區塊頭和源鏈事件,這種方案雖然足夠安全,但其鏈上的 Gas 消耗依舊高昂,其次,鏈下的 ZK 電路和鏈上的輕客戶端在工程實現上都比較複雜,這可能導致更容易出現代碼層面的漏洞,從而影響跨鏈橋的安全性。
此外,為了避免每一條鏈都必須部署其他所有鏈的輕客戶端,這種方案往往不得不引入一個中繼鏈(見下圖),而中繼鏈的存在將使得原本一步可以完成的跨鏈消息傳遞過程不得不拆分成兩步,導致跨鏈消息傳遞的 Latency (延遲) 增加。
現在業內鼓吹 ZK Client 技術的人很多,甚至聲稱 ZK Client 是跨鏈橋的終極解。我們想說的是,技術不是用來作秀,更不是用來趕時髦的,而是用來真正解決問題的,ZK Client 製造的問題遠比它解決的問題更多。
我們也研究了 LayerZero 的所謂的 Ultral Light Client 方案,LayerZero 將輕客戶端放到鏈下預言機裡運行,從而解決鏈上 Gas 開銷的問題,但你把驗證的職責從目標鏈的驗證人手裡移交給了鏈下預言機,那就不再是原生驗證,而是外部驗證,對鏈下預言機是有安全假設的。至於 LayerZero Labs 的聲稱的:" Relayer 和預言機相互獨立"的安全前提,在現實中根本不存在,L2BEAT Labs 的攻擊實驗已經證實了這一點。
我們也注意到了 Nomad 、Celer 所採用的樂觀驗證方案,通過在外部驗證的基礎上,增加一個挑戰者的角色,可以成功的將 m-of-n 的安全性提升至 1-of-n,這種方案雖然構思精巧,但代價是 30 min 左右的延遲,這個延遲會導致該方案的適用範圍受限。
我們還發現 Avalanche Bridge 的設計很酷,它採用 TEE 節點作為外部驗證者來驗證跨鏈事件,並通過極簡的合約設計實現了高效和廉價的跨鏈體驗。但我們也看到,Avalanche Bridge 儘管可以安全的保管私鑰,防範外部攻擊者,卻無法防範禍起蕭牆,也就是內部 TEE 節點之間的串謀攻擊。
最終,我們提出了當前的 BOOL Network 的動態隱藏委員會的方案,從安全角度講,可以做到防止外部黑客攻擊的同時,防止內部串謀,從性能和體驗方面,BOOL Network 的跨鏈體驗沒有在外部驗證的基礎上做任何犧牲,與外部驗證橋保持同一水平。
評估一個跨鏈橋,我們認為應該在不可能三角的基礎上,擴充為六個方面進行綜合評估,分別是成本(Cost)、速度(Speed)、安全性(Security)、可用性(Liveness)、通用性(Generality)、可擴展性(Scalability)。
成本:跨鏈的成本主要在於鏈上的 Gas 成本,BOOL Network 的一次跨鏈消息驗證的費用實際上只有一個單次簽名的驗證,和外部驗證橋在同一水平;
速度:這裡我們只評估跨鏈橋本身的 Latency,不考慮鏈本身的最終性問題。在這點上,由於沒有多餘的鏈上與鏈下計算,也沒有中繼鏈的設計(中繼鏈會導致冗餘的二階驗證),BOOL Network 的跨鏈速度也可以達到極限水平;
安全性:我們已經充分探討了,BOOL Network 可以做到外防攻擊、內防串謀。
可用性:簡單來說就是別宕機。BOOL Nework 會讓每個 DHC 在創建時配備一個或多個備份 DHC,以防止某個 DHC 內超過半數 TEE 節點離線時導致的可用性問題。
通用性:不僅要支持資產跨鏈,也要支持任意消息跨鏈,這點 BOOL Network 也滿足。
可擴展性:能否快速支持新鏈。BOOL Network 僅需部署一組簡單的合約即可支持一條新鏈(1人月的開發工時即可完成),現在我們已完成了對全部主流區塊鏈的支持。此外,BOOL Network 不受鏈圖靈完備性的限制,可以在不增加新的信任假設的前提下,支持 BTC 等非圖靈完備的鏈。
可以說,BOOL network 是跨鏈橋中的六邊形戰士。
值得一提的是,BOOL Network 的技術方案論文已經被密碼學領域的頂級期刊 IEEE TIFS 收錄(鏈接),這代表著密碼學界對 BOOL Network 技術方案的認可。
未來發展方向
BOOL Network 目前提供的是一個安全的跨鏈橋搭建平台,任何第三方都可以基於 Bool Network 創建全鏈應用。BOOL Network 將成為全鏈應用最堅實的底層支撐。
我們換個視角看,BOOL Network 本質上是搭建了一個去中心化的簽名機,該簽名機不止可以用於驗證鏈上的消息,也可以用於驗證鏈下的消息,這意味著 BOOL Network 會成為一個安全可靠的全鏈預言機。此外,BOOL Network 搭建的去中心化 TEE 網絡,未來還可提供隱私計算服務。