zk-SNARK代表了簡潔化的非交互式零知識證明,而zk-STARK代表了簡潔化的全透明零知識證明。 Zk-SNARK已經在基於區塊鏈的支付系統上如Zcash,JP Morgan Chase項目中使用,並作為一種客戶端到服務器的安全驗證方式。但是,雖然zk-SNARKs已經很成熟並被很廣泛的使用,但zk-STARK現在也被吹捧為該協議的新版本和改進版本,旨在解決zk-SNARKs先前的許多缺點。
阿里巴巴的洞穴寓言
讓我們想像有一個環形洞穴,它有一個入口和一個將兩條路分開的魔法門。為了打開魔法門,人們需要低聲說出正確的秘密。因此,考慮到Alice(黃色)想要向Bob(藍色)證明她知道密碼是什麼,但同時也要對密碼保密。為此,Bob同意在外面等待,同時Alice進入洞穴並從兩條路徑中選擇一條走到盡頭。在該案例中,她決定通過路徑1。
過了一會兒,鮑勃走到入口處,喊出他希望愛麗絲從哪一邊出現(在該案例中應該是路徑2)。
如果Alice確實知道這個密碼,她將可以正確地按照Bob所要求的路徑中走出來。
這個過程可以重複多次,以確認Alice不是通過運氣才選擇正確的路徑。
阿里巴巴的洞穴寓言說明了零知識證明的概念,它是zk-SNARK和zk-STARK協議的一部分。零知識證明可用於證明擁有某些知識並且不會洩露任何有關它的信息。
zk-SNARKs
零知識證明允許一個人向另一個人證明其所陳述的是真實的,且不會洩露超出陳述有效性的任何信息。有關各方通常被稱為證明者和驗證者,他們所持有的秘密被稱為證據。這些功能的主要目的是讓雙方之間盡可能少的進行數據交換。換句話說,人們可以使用零知識證明來證明他們是知曉某些知識但不會洩露有關知識本身的任何信息。
在SNARK首字母縮略詞中,首字母“succinct”意味著這些該證明較簡單,可以快速驗證。 “非交互式”意味著證明者和驗證者之間幾乎沒有交互。較早版本的零知識證明協議通常要求證明者和驗證者進行通信,因此被認為是“交互式”零知識證明。但在“非交互式”結構中,證明者和驗證者只需交換相關證明。
目前,zk-SNARK證明依賴於證明者和驗證者之間的初始化可信設置,這意味著需要一組公共參數來構建零知識證明,從而構建私有交易。這些參數幾乎就像遊戲規則,它們通過編程寫到協議中,並且是證明交易有效的必要因素之一。然而,這會產生潛在的集中化問題,因為參數通常由非常小的群體制定。
最後一個首字母是“Knowledge”,這意味著證明者無法在沒有實際知識(或證人)支持其陳述的情況下構建證據。
zk-STARKs
zk-STARKs是作為zk-SNARK協議的替代版本而創建的,被認為是該技術的更快和更便捷的實現方式。但更重要的是,zk-STARK不需要進行初始化可信設置(因此,字母“T”代表了透明性)。
Zk-STARK能夠提供更便捷和更快速實現的主要原因之一是因為證明者和驗證者之間的通信量相對於計算的任何增量是保持不變的。相反,在zk-SNARK中,所需的計算越多,各方須來回發送消息的次數就越多。因此,zk-SNARK的整體數據量大小遠大於zk-STARK證明中的數據量。