8種主流zk SNARKs零知識證明構建的對比

2021-10-02 21:48:59 字數 1518 閱讀 5624

zk-snark是乙個快速發展的領域,僅在過去的兩個月裡,就宣布了數個突破性的zk-snark構建。曾經必須的可信設定現在已經是冗餘的了,這意味著可以使用任何計算。然而關於這些新的zk-snark構建的資料很難找到。在這片文章中,我將比較這些新出現的zk-snark構建,並在以後不定期更新。

像zk-snark這樣的零知識證明有很多應用:zcash利用零知識證明來保護隱私,coda和mir利用零知識證明將整個區塊鏈壓縮到只有幾k位元組,0x和matter則利用零知識證明將許多交易封裝為以太坊

上的單一證明。如果你還不了解零知識證明,可以看一下這裡的解釋。

傳統的zk-snark,例如groth16有乙個主要的缺點:依賴於乙個公共的參考字串,該字串使用一次性可信設定建立。該設定建立乙個供證明方和驗證方同時使用的參考字串。這裡面有三個主要的問題:

新的zk-snark構建解決了對可信設定的要求,這意味著像智慧型合約等任意**可以作為zk-snark執行。目前有兩個不同的方法:

設定建立乙個共用的參考字串,公開並且不會建立有毒廢料。這和zk-stark的機制類似。fractal、halo和supersonic-cg使用的就是透明設定。這種方法的缺點在於證明資料量會很大。fractal和zk-stark證明能達到250kb,這對於區塊鏈應用是不現實的。fractal團隊告訴我,他們正在解決證明資料量過大的問題。halo和supersonic的證明要小一些,

不到10kb。

這種設定建立乙個結構化參考字串,也會產生有毒廢料,不過設定不再侷限於單一電路,乙個參考字串可以用於無限的任意電路中。例如marlin、supersonic-rsa和plonk。這三種構建生成的參考字串可以公升級,以便提高安全性。如果當前的有毒廢料洩露,那麼只需要公升級設定就可以再次保障系統的安全。

如何比較新出現的zk-snark?在證明人側,為每種zk-snark構建生成乙個證明需要o(n log n)時間。區別主要在於證明的資料量大小、驗證時間以及參考字串的大小。

下面的分類基於alessandro chiesa在舊金山zksummit上的演講:

所有這些zk-snarks使用的編譯器可以分為三類:預處理、dark和傳統的snark(非通用):

作為參考,我將介紹三種已有的構建。groth16是非通用的,它依賴於一次性不可公升級的設定,sonic是乙個通用的zk-snark。

乙個大問題是:如何比較這些不同zk-snark構建的效能?不幸的是,我不知道zk-snark有任何基準測試,不過即使有的話,也不是所有的新構建都有乙個參考實現。因此下面**中的數字請不要過於較真,它們是基於**中的基準指標,或者基於發明者提供的估算。

通過檢視證明的大小、證明執行時間、驗證執行時間,有一些方面是值得注意的:

零知識證明一 zksnarks資料總結

這個零知識證明研究好久,現在也是感覺剛剛入門,這次先總結一下,zksnarks的一些資料 1 zcash官方的七篇文章,個人感覺hh和d kca講的比較清晰,r1cs和qap就不清晰了,最好自己拿起筆計算一下,可能會更快的理解 1 2 3 4 5 6 7 2 這位西二旗 比官方的更接地氣一些,如果不...

零知識證明

零知識證明的幾個例子 原創 1 a要向b證明自己擁有某個房間的鑰匙,假設該房間只能用鑰匙開啟鎖,而其他任何方法都打不開。這時有2個方法 一 a把鑰匙出示給b,b用這把鑰匙開啟該房間的鎖,從而證明a擁有該房間的正確的鑰匙。二 b確定該房間內有某一物體,a用自己擁有的鑰匙開啟該房間的門,然後把物體拿出來...

零知識證明

定義 能夠在不向驗證者提供有效資訊的情況下,使得驗證者相信某種論斷的正確性。淺顯易懂的說明 zcash 零知識證明的三條性質 1.完備性 驗證方和證明方都是誠實的,並遵循證明的每乙個步驟 2.合理性 沒人能假冒證明方,阿里巴巴和強盜的故事,存在一種可能的情況 阿里巴巴不知道咒語,但和別人串通好,強盜...