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