撰文:Bryan Pellegrino,LayerZero Labs 聯合創始人兼CEO
編譯:aididiaojp.eth,Foresight News
昨天推特上出現了有很多對LayerZero 的討論,其中也包括很多誤解,所以我將從第一性原理開始介紹LayerZero,它是什麼?如何工作?開發人員如何保證它的安全性?
LayerZero 是什麼?
LayerZero 是一種可用於消息傳遞的互操作性協議,允許任何包含有效負載的跨鏈合約調用。
它是如何工作的?
開發人員在多個鏈上部署合約,我們統稱這些為鏈A 和鏈B。交易在鏈A 上提交,包含結果的消息可以被傳遞給鏈B 上的合約。合約與LayerZero 端點交互,然後應用程序選擇的預言機和中繼器檢索相應的區塊頭和tx 證明。他們等待A 鏈上指定數量的區塊確認後,獨立地將各自的信息傳送到鏈B。在鏈B 上,這些信息將通過驗證者或證明庫進行驗證,然後在鏈B 上傳送消息合約。
一個簡單示例是用戶可以在Stargate 上橋接,使用SushiXSwap 進行交換,或者跨鏈交易NFT 資產。
基礎設施提供商有什麼保證?
這裡有四個真正的組件:中繼器、預言機、驗證者\證明庫、區塊確認
應用程序可以完全控制這些組件中的每一個,以下是詳細介紹:
中繼器——中繼器是完全開放且無需許可的。應用程序可以選擇任何現有的中繼器,中繼器可以是中繼器網絡,也可以是簡單的單個簽名者。
預言機——預言機也是完全開放和無需許可的。應用程序可以選擇任何現有的預言機,預言機可以是預言機網絡,也可以是單個簽名者。
證明庫——驗證庫在一個只能追加的註冊表中發布,也可以發布新庫,但現有庫永遠無法修改,並且是完全不可撤銷的不可變驗證庫。應用程序可以選擇任何現有的庫(它們都有公共審計)來執行其驗證。隨著新的證明機制的發明、零知識證明等領域的進步以及圍繞Gas 和採用率的優化協議的出現,註冊表能夠允許無限的靈活性。
區塊確認- 區塊確認是在消息可以傳遞到目標鏈之前必須在當前源鏈上完成的區塊數。這個數字在共識機制和具有概率最終性的系統中差異很大,是應用程序控制給定塊的最終確定性的方式,很像中心化交易所在接受來自給定鏈的存款之前所做的事情。
如果應用程序配置這些參數,它將如下所示
如果應用程序未配置參數,則它會使用「默認」設置,這樣就會有一定的適應性和功能性限制。
在場景A 中,當應用程序設置了 [ULN v2、Relayer A、Oracle Z、Block Confs X 和 Proof Lib V1] 的配置時,任何其他系統都無法修改這些參數。此時,中繼器A 將與預言機Z 一起使用,所有消息將在等待X 個區塊後通過ULN v2 和Proof Lib v1 進行驗證。
在場景B 中,當應用程序使用默認設置時,這意味著他們將參數的選擇權交給了LayerZero 多重簽名。 LayerZero 多重簽名唯一能做的就是添加新庫和更改默認值。
那麼,讓我們討論一下目前存在的現狀。
今天大多數互操作系統都是這樣工作的:
Wormhole、Nomad 等互操作系統都以類似的方式工作。所有控件都位於 [系统] 中,並且可以由控制這些系統的管理員進行升級(Wormhole 需要驗證器的13/19 多重簽名)。這存在一定的風險,導致Wormhole 和Nomad 出現多個安全問題。使用LayerZero 的默認值與這些系統相同,應用程序將參數控制權委託給一組外部管理密鑰,系統依賴於秘鑰管理者不會作惡。
不同之處在於,這些系統中,應用程序都沒有任何控制權,並且永遠無法阻止 [系统] 強制對它們進行升級並更改底層消息傳遞或協議的信任假設。
LayerZero 為每個應用程序提供了一種方法來明確選擇一組永遠無法修改的安全參數。我們認為關鍵基礎設施應該是不可變的、開源的,並且始終由用戶應用程序所擁有。