zk-SNARKs vs. Zk-STARKs vs. Bulletproofs:定義
在過去的幾個月裡,我對 Bulletproofs 非常熟悉。Bulletproofs 是Benedikt Bünz 等人給算術電路的零知識證明系統的名稱。它是具有特定屬性的特定協議。
在討論 Bulletproofs 時,它們通常與 zk-SNARKs 和 zk-STARKs 進行對比。例如,參見Ethereum StackExchange 上的這個問題,他們在其中討論了 Bulletproofs 的屬性,並在 zk-SNARKS 和 zk-STARKs 之間進行了比較。
zk-SNARK 是一種零知識簡潔的非互動式知識論證。根據Eli Ben-Sasson 的“可擴展、透明和後量子安全計算完整性”,zk-STARK 是“可擴展的、透明的知識論證”。
對我來說,這聽起來像是比較到此為止了:到目前為止,我查閱的論文將 SNARK 和 STARK 稱為證明系統應該具有的屬性列表,而不是證明系統的特定實例。考慮到前面提到的 Ethereum.SE 問題,zk-SNARK 和 zk-STARK 似乎都是證明系統的實際實例,因為它們列出了特定的複雜性和時間。關於特定 SNARK 和 STARK 構造的論文,例如 Ben-Sasson 論文,似乎都指的是“previous S
$$ TN $$ARK contructions”,讓我想知道 Eth.SE 的比較是否公平。 所以我的問題是:
- 什麼是 zk-SNARK:
- 一個特定的證明系統,如果是的話:哪一個?
- 一類 ZK 證明系統,如果是的話:這個類是否足夠具體到聲稱證明“總是 200 字節”?
- zk-STARK 也一樣,答案很可能相同。
- 我覺得問題 1. 將歸結為一類證明系統,這讓我想知道為什麼 Bulletproofs 不會是“零知識、簡潔的非互動式知識論證”;它們通常被認為是分開的。
- 一類。比較它們的標準參數是:證明者時間、驗證者時間、證明大小、可信設置的要求、加密假設。對於“簡潔”,標准定義要求驗證時間是亞線性的,證明是“小”的。
- 然而,STARK 是特定 zk-SNARKS 協議的名稱,有關特定屬性,請參閱 Youtube 上的任何 Eli Ben Sasson 演講。
- 我認為這是因為驗證時間是線性的。
什麼是 zk-SNARK:一個特定的證明系統,如果是:是哪一個?一類 ZK 證明系統,如果是的話:這個類是否足夠具體到聲稱證明“總是 200 字節”?
zk-SNARK(zero-knowledge succinct non-interactive argument of knowledge)是一類非互動式零知識證明系統,基本滿足以下性質:
- 簡潔證明:證明大小很短,通常只包含恆定數量的群元素。
- 零知識:證明不會向惡意驗證者透露任何有關證明者秘密(證人)的私人資訊。
- 論證知識:惡意證明者無法證明與驗證者的某些 NP 關係的虛假陳述,從而使驗證者接受它。通常被擷取的存在一個提取器,可以從證明中提取證人。
- 完整性:如果證明者和驗證者都是誠實的,驗證者將接受機率為 1 的證明。
zk-STARK 也一樣,答案很可能相同。 zk-STARKs 更強大,因為它是透明的,這意味著它不需要秘密的可信設置。而且目前的 zk-STARKs 是使用抗量子原語建構的,因此它應該是後量子安全的。
我覺得問題 1. 將歸結為一類證明系統,這讓我想知道為什麼 Bulletproofs 不會是“零知識、簡潔的非互動式知識論證”;它們通常被認為是分開的。
Bulletproofs 並不簡潔,所以它不是 zk-SNARKs