作者:Faust & Abyss,極客Web3

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

摘要:自從各種跨鏈橋橫空出世以來,緊隨的各種黑客攻擊事件幾乎從未停止,2022年Axie官方跨鏈橋被盜6.2億美元一事更是震撼了世人,無數人開始思考如何解決跨鏈橋的安全與免信任,但時至今日,這個領域仍有許多懸而未決的問題。

但與公鏈賽道一樣,跨鏈橋在設計思維上同樣存在“不可能三角”,而且實質今日仍然無法打破。為了在成本與UX上具備優勢,絕大多數跨鏈橋都採用了類似多籤的見證人模型,而這種方案從落地的第一天起,就是黑客眼中的香餑餑。

慘痛的歷史經驗告訴我們,沒有添加防護措施的見證人橋遲早會出事,但這種橋在整個比特幣生態已然是家常便飯,讓人感到毛骨悚然。

本文將要介紹的Bool Network,在為跨鏈橋項目方提供動態輪換的見證人基礎上,結合隱私計算和TEE封裝密鑰,嘗試在傳統見證人橋的安全模型上進一步優化,解決跨鏈橋的去中心化問題,這或許能為比特幣跨鏈橋帶來破局的希望。

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

比特幣生態的現狀:到處都是多簽

跨鏈橋的本質,是向B鏈證明A鏈上有人發起了跨鏈請求,當事人按照規定支付了費用。要證明這件事,可以有不同的實作路徑。

輕客戶端橋往往在鏈上部署智慧合約,在鏈上Native的驗證跨鏈訊息,這種橋的安全性最高,但成本也最高昂,而且無法在比特幣鏈上實現(目前打著比特幣ZK橋旗號的項目方,只能確保BTC跨到其他鏈時走ZK橋,BTC再跨回去時無法通過ZK橋來實現)。

以BitVM為代表的樂觀橋,透過詐欺證明來確保跨鏈訊息被如實處理,但此方案落地難度極高。絕大多數比特幣跨鏈橋最終都採用了見證人的模式,在鏈下指定幾個見證人,由見證人驗證並確認所有的跨鏈訊息。

DLC.link為代表的DLC橋,雖然在預言機/見證人多簽基礎上引入支付通道的思路,最大程度限制見證人作惡的場景,但還是無法在根源上徹底抹除多籤的隱患。

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

最後我們會發現,在BitVM落地前,除了閃電網路/支付通道或RGB++這類是基於客戶端驗證或同構綁定的項目以外,其他的比特幣跨鏈橋骨子裡都是多簽。

歷史早已證明,如果不解決多簽跨鏈橋乃至於大型資管平台的去信任問題,出現資金被盜事件將只是時間問題。

對此,有些專案方讓見證人超額抵押資產,以潛在的Slash來作為懲戒條件,或是讓大機構充當見證人提供信用背書,弱化跨鏈橋的安全隱患。但歸根究底,基於見證人模式的橋,安全模型和多簽錢包基本上一致,最終都要按照閾值,例如M/N來判定其信任模型,容錯率比較有限。

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

如何設定和處理多簽,如何讓多簽盡可能去信任,如何杜絕見證人做惡或抬高外界的攻擊成本,將是比特幣二層跨鏈橋需要長期思考的議題。

有沒有辦法讓多簽參與者難以串謀作惡,並且讓駭客難以從外界盜取密鑰? Bool Network嘗試透過一套基於ZKP-RingVRF演算法和TEE的綜合方案來解決見證人橋的安全問題。

Bool網路:專為跨鏈橋等設計的隱私運算基礎設施

其實,無論是KYC或POS或POW,本質都是為了去中心化和反女巫,防止重要的管理權限集中在少數人手上。在POA和KYC之上使用多簽/MPC方案,雖然可以透過大機構的信用背書來緩解安全風險,但這種模式和中心化交易所沒有本質區別,你還是要信任這些被欽定的見證人不挪用跨鏈橋資金池裡的錢,這其實就是聯盟鏈,從根本上違反了區塊鏈的Trustless精髓。

基於POS的多簽/MPC方案比POA更去信​​任,進入門檻遠比後者低,但還是會面臨各種各樣的問題:例如節點的隱私洩漏。

假設現在有幾十個節點組成的見證人網絡,專門服務於某個跨鏈橋,由於這些節點需要頻繁的交換數據,其公鑰和IP地址或是其他的身份信息容易對外暴露,攻擊者可以針對性的建構攻擊路徑,最終往往會導致某些節點的金鑰被盜。此外,見證人也可能內部串謀,當節點數量比較少時,這種事很容易發生。

那我們該如何解決上述問題呢?你可能會本能的聯想到,要加強密鑰的保護措施,防止被外界窺探。比較可靠的方法是把金鑰封裝在TEE(可信執行環境)當中。

TEE允許節點設備在本地的安全區域內運行軟體,系統中的其他元件無法存取其數據,你可以把私密數據或程式隔離在安全的執行環境中,防止機密數據被洩露或被惡意操縱。

這裡的問題是,如何保證見證人的確是在TEE中存放金鑰並產生簽名的?其實只要讓見證人出示TEE的遠端證明訊息,就可以驗證它是否跑在TEE裡,我們只需要在任意一條鏈上驗證TEE證明即可,成本幾乎可以忽略不計。

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

當然,除了TEE之外,問題還沒完。就算你引入了TEE,假如見證人的總量不多,比如說只有5個,我們還是會遇到各種問題,即便封裝在TEE中的密鑰無法被“看到”,由少數人組成的見證人委員會還是無法保障抗審查性和可用性。例如上述5個節點如果集體跑路,讓跨鏈橋陷入癱瘓,這個時候橋接資產無法順利的lock-mint或贖回,基本上等價於永久凍結。

在綜合考慮了相容性、去中心化、成本等因素後,Bool Network提出了這樣一種構想:

我們透過資產質押的方式,建構出一個Permissionless的候選見證人網絡,只要你質押足額的資產就可以加入進來;當網絡規模足夠大,比如說接入了幾百上千台設備後,我們定期從網路中隨機抽取一些節點充當跨鏈橋的見證人,以此來規避見證人「階級固化」的問題(這種想法在現在的POS以太坊身上也有體現)

那麼該如何讓抽籤演算法具備隨機性呢?傳統的POS公鏈如Algorand、Cardano透過引入VRF函數,週期性的讓VRF函數輸出偽隨機數,並透過輸出結果抽取塊人。但傳統VRF演算法往往無法保護隱私,有哪些人參與了VRF計算過程、VRF輸出的隨機數關聯著的被選中者都有誰,幾乎暴露在陽光下。

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

而跨鏈橋的動態見證人與POS公鏈動態選拔塊人要考慮的問題不同,公鏈的出塊人即便身份洩露了,往往也無傷大雅,因為攻擊者的作惡場景有限,會受到許多限制條件的約束;

而跨鏈橋見證人身分一旦洩露,駭客只要取得其密鑰,或是這些見證人內部勾結,就會讓整個橋接資產資金池徹底陷入危機。 Anyway,跨鏈橋和POS公鏈的安全模型是差了十萬八千里的,必須更重視見證人的身分保密。

我們本能的想法是,最好把見證人名單隱藏起來,而Bool Network在這方面採用了原創的環狀VRF演算法,把選中的見證人身分隱藏在全體候選人中,其整體細節比較複雜,我們將其簡化後表述如下:

1.所有的候選人在進入Bool網路前,先在以太坊或Bool自己做的一條鏈上質押資產,留下一個公鑰作為註冊資訊。這個公鑰又稱為「永久公鑰」。全體候選人的「永久公鑰」構成的集合,在鏈上公開可見。這個永久公鑰說白了就是每個人的身份資訊;

2.每過幾分鐘~半小時,Bool網路會透過VRF函數,隨機挑選出幾個見證人。不過在此之前,每個候選人要在本地生成一次性的“臨時公鑰”,同時生成ZKP,證明該“臨時公鑰”與鏈上有記錄的“永久公鑰”有關聯;換句話說,透過ZK證明自己存在於候選人名單中,但又不透露是哪一個人;

3.「臨時公鑰」的作用在於什麼?正是為了隱私權保護。如果直接從「永久公鑰」集合抽籤,公佈抽籤結果時,大家會直接知道哪些人當選,這個時候安全性會大打折扣。

如果大家都暫時提交一次性的“臨時公鑰”,再從“臨時公鑰”集合中選出幾個中籤者,你最多只知道自己中籤,因為你不知道其他中籤的臨時公鑰對應著誰。

4.這還不算完。 Bool 網路打算這麼搞:直接讓你不知道自己的「臨時公鑰」是啥。這該怎麼做呢?只要把臨時公鑰明文放在TEE裡加密成「亂碼」後再發出去就好。

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

我們可以把「臨時公鑰」的生成也放到TEE裡執行,由於TEE可以把資料和計算加以保密,你根本不知道TEE裡發生了啥。當「臨時公鑰」生成完畢後,會加密成「亂碼」再發到TEE外部,這時你根本不知道自己的「臨時公鑰」的原文是啥,只能看到一個加密後的密文(需要注意,第二段提到的,證明臨時公鑰和某個永久公鑰有關聯的ZKP,也和臨時公鑰一起被加密了)。

5.候選人要把亂碼形態的「臨時公鑰」密文,發送給指定的Relayer節點。 Relayer負責解開這些亂碼形態的密文,從中還原出全部的「暫存公鑰」原文。

這裡有個問題,就是Relayer知道每個密文的發送者是誰,只要他把每個密文解析成“臨時公鑰”,自然而然就知道了每個“臨時公鑰”對應著哪個人。所以,上述工作也要在TEE裡做,幾百人的公鑰密文進入TEE,出來後變成了公鑰原文,就像混幣器一樣,可以有效保護隱私。

6.Relayer得到了原始的「臨時公鑰」後,把它們統一歸集,提交給鏈上的VRF函數從中抽取中籤者,也就是從這些「臨時公鑰」中挑出幾個中籤人,組成下一屆的跨鏈橋見證人委員會。

這樣一來整體的邏輯其實就清晰了:我們定期的從見證人臨時公鑰集合中隨機挑選幾個,充當跨鏈橋的臨時見證人,這個設計被命名為DHC(動態隱藏委員會)。

因為每個節點都運行TEE,MPC/TSS的私鑰片段,還有見證人運行的核心程式、所有的計算過程,都隱藏在TEE環境內,每個人都不知道具體的計算內容包括什麼,就連被選中的人自己都不知道被選中,這樣可以從根本上防止串謀或外部攻破。

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

Bool Network跨鏈訊息的生命週期

在介紹完了Bool隱藏見證人身分和金鑰的大致思路後,讓我們來梳理下Bool Network的工作流程。我們假設左邊是源鏈右邊是目標鏈,上面的整個圖構成了資產從源鏈到目標鏈的全流程生命週期,由此我們從資料流轉的角度剖析一下Bool Network跨鏈的4個過程:

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

首先,提款人在源鏈發起提款動作後,訊息被Realyer發送到Messaging Layer層;訊息在到達Messaging Layer層後,由動態委員會對訊息進行驗證,確定訊息在來源鏈中確實存在且有效,然後進行簽名。

或許有人要問,既然前面提到,每個人都不知道自己有沒有被選到見證人委員會裡,怎麼才能把消息傳遞給指定的人並讓他們簽名呢?其實這很好解決,既然不知道有誰是選中的見證人,那我們乾脆就全網廣播,把待處理的跨鏈訊息傳遞給每一個人。

一開始我們曾提到,每個人的臨時公鑰都是在本地TEE裡產生和封裝的,在TEE外部看不到臨時公鑰。要驗證自己的臨時公鑰是否被選中,這部分邏輯直接部署在TEE內,只要把待處理的跨鏈訊息輸入TEE,TEE內部的程式就會確定是否要對訊息進行簽章確認。

解讀Bool Network:真正的去中心化比特幣跨鏈橋?

在TEE內對跨鏈訊息簽名後,還不能直接把數位簽名發出去,因為如果你把簽名直接往外發,大家會發現你對跨鏈訊息附加了簽名,猜到你是選中的見證人之一。所以,要想辦法讓外界不知道你是否對跨鏈訊息簽名了,最好的辦法就是對簽名資訊本身加密,就和前面提到對臨時公鑰加密的思路類似。

總結就是: Bool Network會透過P2P傳播,把待簽名的跨鏈訊息傳遞給所有人,選中的見證人在TEE內對訊息進行驗證和簽名,然後把加密後的密文廣播出去,其他人收到了密文後,再放進TEE內解密,重複上述流程,直到所有被選中的見證人都簽名完畢,最後被Relayer解密成TSS簽名的原始格式,完成跨鏈訊息的確認和簽名流程。

核心在於,幾乎所有的活動都在TEE內進行,從外部看根本不知道發生了什麼。每個節點都不知道見證人有誰,不知道自己是不是選中的見證人,從根本上防止了串通作惡,並大幅增加了外部攻擊的成本。

要攻擊基於Bool Network的跨鏈橋,你需要確定動態委員會裡的見證人都有誰,但你根本就不知道它們是誰,這時你只有攻擊整個Bool網路才行。像ZetaChain等單純基於POS和MPC的跨鏈橋基礎設施,其見證人身分全部暴露,假設閾值門限是100/200,你最少只需要攻擊網路中一半的節點。

但換到Bool身上後,因為有了隱私保護,理論上你必須攻擊所有的節點才行。再加上Bool所有節點都運行TEE,此時的攻擊難度會再度上升。

而且,Bool Network本質還是見證人橋,見證人橋只需要在目標鏈上提交一個簽名,就可以完成跨鏈處理流程,成本最低。由於沒有像Polkadot那樣多餘的中繼鏈設計,避免了二階驗證的冗餘,Bool的跨鏈速度可以很快。這種跨鏈模式同時兼備了資產跨鍊和訊息跨鏈的需求,有著較好的兼容性。

如何評價Bool的產品設計想法?

這裡我們拋出兩個觀點,首先資產跨鍊是ToC的產品,其次跨鏈橋是競爭大於合作的。從長期看,因為跨鏈協議的壁壘較高,需求較為同質化,跨鏈橋相關的資金集中度會越來越高,這是因為跨鏈協議有著較為強大的護城河壁壘,包括規模效應和轉換成本。

Bool身為比跨鏈橋更底層的專用基礎設施,實際上比上層的跨鏈​​橋專案方的商業前景更廣闊,它甚至還可以承擔預言機的功能,而不僅僅把場景局限在跨鏈消息驗證,理論上還進入全鏈oracle的賽道,真正的構建去中心化oracle並提供隱私計算服務。