Zero-Knowledge-Proofs

zkSNARKs:為單變數操作數多項式進行設置

  • February 24, 2022

我正在閱讀 Maksym Petkus 所寫的 zkSnarks 解釋 - http://www.petkus.info/papers/WhyAndHowZkSnarkWorks.pdf

我的問題是關於第 4.6.1 節

設置

  • 構造相應的操作數多項式 $ l(x) $ 具有相應的係數
  • 隨機抽樣 $ \alpha $ 和 $ s $
  • 設置加密的證明密鑰 $ l(s) $ 它是“轉移”對: $ (g^{l(s)}, g^{{\alpha}l(s)}) $
  • 設置驗證密鑰: $ (g^{\alpha}) $

**1)**我將採取上述設置的第一步。

構造相應的操作數多項式 $ l(x) $ 具有相應的係數

我們仍然在文本的那部分 $ l(x) $ 是 $ a $ . 我們還沒有達到 4.6.2,他們探索了 3 中的情況 $ l(x) $ , 2 是 $ a $ 第三個是 $ d $ .

所以如果我用相同的 a 創建 3 個點,它看起來像這樣

$ a * x = r1 $

$ a * y = r2 $

$ a * z = r2 $

用實際數字,可以

$ 2 * 2 = 4 $

$ 2 * 3 = 6 $

$ 2 * 4 = 8 $

所以 3 $ l $ 點是 $ [(1, 2), (2, 2), (3,2)] $

如果我對這 3 個點進行拉格朗日插值,它會給我 $ l(x) = 2 $ .

如果相反,我使用 $ a = 1 $ , 然後 $ l(x) $ 從 langrange 獲得的將永遠是 $ l(x) = 1 $ ,即拉格朗日將永遠給我 $ l(x) = a $

所以我無法理解如何到達 $ l $ 看起來像 4.6.1 中的多項式 $ a=1 $ & 這 $ l $ 多項式是 $ x^2 - 3x + 3 $ . 我不是說 $ x^2 - 3x + 3 $ 不適合這種情況- $ l = 1 $ 在 $ x \in {1,2} $ - 它確實適合這種情況,但我永遠不會得到 $ l $ 看起來像拉格朗日的多項式 - 我總是會得到 $ l(x) = a $ .

**2)**接下來是設置的第三步 - 即

設置加密的證明密鑰 $ l(s) $ 它是“轉移”對: $ (g^{l(s)}, g^{{\alpha}l(s)}) $

到目前為止,在我們所有的協議中,我們一直使用 $ l(x) $ 作為中間步驟 - 即證明者從不計算 $ E(l(x=s)) $ & 將其交給驗證者。他總是用 $ l(x) $ 建構 $ h(x) $ - 是的 $ h(x) = \frac {l(x) * r(x) - o(x)}{t(x)} $

所以我對這裡的這個設置步驟有點困惑?證明者現在是否正在處理中間材料的加密( $ l(x) $ ) 來驗證而不是 $ E(h) $ ? - 驗證者只需要 $ E(h) $ & $ E(p) $ &他通過檢查來驗證證明 $ E(p) = E(h)^t $ - 所以我不清楚如何提供 $ (g^{l(s)}, g^{{\alpha}l(s)}) $ 適合達到這最後一步嗎?

對於多項式構造,而不是使用拉格朗日,首先考慮一個在給定點處為 0 的非平凡多項式,例如 $ x=1 $ , $ x=2 $ 和 $ x=3 $ . 自然的選擇是 $ (x-1)(x-2)(x-3)=x^3-6x^2+11x-6 $ . 我們將其轉換為多項式,通過添加 1 在三個點處計算為 1,即 $ x^3-6x^2+11x-5 $ . 然後我們可以乘以得到任何值 $ a $ . 我們當然可以簡單地添加 $ a $ 到我們原來的多項式。

至於資訊的傳遞,需要在 4.4 節中描述的操作證明中驗證多個事實,因此需要多個值。正如我們在 4.4 節中看到的,必須進行四次檢查,並且除了值之外,還必須提供這些檢查的總共七個輸入 $ g $ 和 $ g^\alpha $ .

引用自:https://crypto.stackexchange.com/questions/98761