不少人看了@zkSync新發的動物園科普圖文大呼懵圈,把動物園比做電路circuit,把擁有特殊技能的動物視為「邏輯閘Gate ”,把動物們都開心的合照當成“證明Proof”,這樣輸入電路的數據在不透露具體內容的前提下,經過一系列複雜計算,生成一個Proof,就完成一次零知識證明過程。來,我試著硬核科普一下:
1)動物園對應的是“電路”,電路其實是一系列邏輯門約束(加、減、乘、除等公式)的聚合,相當於所有動物們能力的一次集中表現,它也是構成電腦的基本元素。因此傳入電路的「資料」一定可套進各種公式內被執行運算。
在layer2網路中,儲存的資料通常是交易雜湊值、帳戶資訊、資料餘額等。這些數據可以轉換為數學公式進行計算,但如果無法直接公式化,則需要進行其他編碼轉化,以便將原始數據轉換為可計算的公式。這一步驟是電路執行處理的基礎,確保資料能夠被有效處理和利用。
在動物園模式中,各種動物象徵著電路中的邏輯門,例如木箱代表不公開顯示的數字,被稱為「變數」;玻璃箱則代表公開顯示的數字,是「公開輸入」;而石頭則象徵著不可改變的數字,被視為「常數」。
斑馬具有比較兩個數字是否“相等”的能力,結果相等斑馬就開心;鱷魚則表示“小於”,只有右邊的數小於左邊的數,鱷魚才會開心;蜘蛛代表更複雜的多重選擇門,輸入0則回傳一定是true,輸入1則回傳是false;此外還可以讓河狸表示除法、松鼠指涉百分比;毛毛蟲代表加法等等。不同的動物代表不同的加減乘除運算公式,動物們開心或傷心代表公式運算的結構。
很多個動物不同種類的箱子組合起來就是一個電路,例如:要計算一個公式2 x 3 = Y,x代表木箱,Y代表石頭,2個木箱和毛毛蟲、斑馬等來工作,最後來驗證公式是否成立。注意,不用糾結為啥不同動物具備不同能力,這就是電路元素工作基礎原理,是計算機執行計算的基本規則。
一個複雜電路就是形形色色的動物(邏輯閘)和箱子(規則)共同建構。
3)假設剛才輸入的公式2x 3 =Y成立了,相當於斑馬毛毛蟲等動物都開心了,然後就會為該公式生成一個“Proof”,需要有一個角色能識別這個Proof是否準確才行。因此,為了確保證明的可信度,動物園管理員即電路的建構者,模擬了一個特別的動物叫做Zeek,Zeek能看出其他動物是否開心,在layer2系統中相當於Verifier。
Zeek觀察動物是否開心的過程其實就是Prover系統的驗證過程,都開心了則驗證通過,Proof證明才會真正通過上傳到主網,並最終確認。當然,動物園成千上萬的動物,產生大量證明,Zeek不可能挨個看,因此Zeek也可以觀察千千萬萬個Zeek自己的分身狀態是否開心,這個過程就叫Recursive Proof 遞歸證明。
4)拍照的過程相當於產生SNARK證明或KZG承諾的過程,而印刷的底片則相當於STARK\SNARK證明本身,動物園的遊客相當於一個個進入的Transaction交易,只有動物開心合照才會完成並產生Proof證明,最終遊客拿著照片出了動物園留底證明才能被上鍊最終確定。
一個動物園有很多動物,不可能同時都開心並按照預定規則工作,有很多邏輯門,也難免會出現掉線等情況。這樣就會出現一些,擁塞卡頓以及報錯的情況,因此會產生無效的狀態轉化,Under- Constrained,也就無法通過最終的驗證。
以上是用動物園作比喻,硬核科普zkSync電路工作原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!