zkSNARKS - 無法理解使用多項式來驗證某些條件
來自 Vitalik Buterin 的部落格文章 -關於 zk-SNARKs 如何成為可能的大致介紹
從子主題“將多項式與自身進行比較”,我理解到這裡
換句話說,任何在某個集合中等於 0 的多項式是在同一集合中等於 0 的最簡單(最低階)多項式的(多項式)倍數。
但是,我無法弄清楚他如何使用它來驗證某些條件。
這是我難以理解的部分
如果我們有一個編碼斐波那契數的多項式(所以跨越 $ F(x+2) = F(x) + F(x+1) $ 穿過 $ x = $ { $ 0, 1, …, 98 $ }),那麼我可以說服你 $ F $ 實際上通過證明多項式來滿足這個條件 $ P(x) = F(x+2) - F(x+1) - F(x) $ 在該範圍內為零,通過給您商 $ H(x) = \frac {F(x+2) - F(x+1) - F(x)}{Z(x)} $ 在哪裡 $ Z(x) = (x - 0) * (x - 1) … (x - 98) $
首先,我不明白他所說的“給你商數”是什麼意思——他到底要給驗證者什麼以及驗證者將如何驗證它?
這意味著他會給 $ H(x) $ ,以便驗證者可以計算 $ H(x)*Z(x) $ 並驗證它是否等於 $ F(x+2) = F(x) + F(x+1) $ . 作為多項式,這很明顯,因為我們所做的只是除然後乘以相同的東西( $ Z(x) $ ),回到原來的多項式。但是,如果我們在隨機點評估所有這些多項式 $ x=s $ ,那麼上述所有等式仍然成立,但現在我們只是乘以並檢查數字的相等性。這就是 SNARK 的簡潔性的來源。
所以證明者可以提供 $ H(s) $ 也 $ F(s), F(s+2), F(s+1) $ ,並且驗證者可以(預)計算 $ Z(s) $ ,然後使用等式 $ F(s+2) - F(s) - F(s+1) = H(s)*Z(s) $ 驗證一切是否匹配。這是基於以下事實,即兩個多項式的次數小於或等於 $ n $ 最多可以達成一致 $ n $ 點(由 Schwartz-Zippel 引理)。所以這是平等的機率證明。
我們需要走得更遠,因為顯然如果我們知道 $ s $ ,我們可以偽造可以驗證的值。所以我們改為評估加密值上的所有多項式 $ E(s) $ 使用同態加密。