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