ZK 支持下的輕節點
Last updated
Last updated
MAP Protocol 中的輕節點爲MAP中繼鏈和所有鏈接區塊鏈上的智能合約,雖然鏈上智能合約很好地保留了透明度和去中心化,但其燃氣費的消耗是不可忽略的。隨着 ZK 技術的發展,MAP Protocol 的基礎——輕節點的構建和跨鏈證明驗證可以被進一步優化。輕節點狀態轉換的正確性對 MAP Protocol 至關重要,因爲它決定了跨鏈信息的加密證明的有效性。
跨鏈消息的合法性驗證包含兩個主要的驗證 1)驗證區塊頭是否合法; 2)驗證給定的 Merkle 證明是否合法。 根據當前零知識證明的工程經驗,由於 MPT 樹的高度可變等因素影響,運用 zkSNARK 技術爲 MPT 樹的 Merkle Proof 生成合法性證明會存在工程複雜度高和運維開銷大的問題。
但是對於目前主流的 PoS+BFT 類型的區塊鏈,運用零知識證明技術可以優化區塊頭合法性這一步的校驗。
不採用零知識證明技術時,輕客戶端內部需要存儲當前驗證者集合所有的公鑰以及各自的權重,當驗證一個區塊的合法性時,需要訪問全部的驗證者集合公鑰,並對參與區塊簽名的驗證者的公鑰進行聚合(MAP 中繼鏈採用了聚合的 BLS 簽名)。而採用零知識證明時,可以將上述過程通過算術電路進行表達,並生成相應的零知識證明。
在這種設計下,輕客戶端內部無需存儲當前所有驗證者集合的公鑰和權重,而僅存儲當前驗證者集合公鑰和權重的承諾值(編碼後的所有驗證者的工業和權重的雜湊值),前述的計算聚合公鑰以及驗證聚合 BLS 簽名合法性的操作均通過算術電路表達,並利用 Groth16 協議計算零知識證明。
也就是在這種方式下,zkSNARK 實際上是證明了當前區塊頭在輕客戶端內部存儲的承諾值所對應的驗證者集合下,是一個合法的區塊頭。也就是輕客戶端關於區塊頭合法性的校驗,從訪問所有的公鑰以及權重、計算聚合公鑰、驗證簽名合法性這一系列操作,簡化成了驗證一個常量大小的 zkSNARK 證明的合法性 。