zkSNARK 數學原理完整推導指南:從零知識證明到實際應用

本文從數學角度深入剖析 zkSNARK 的技術原理,從零知識證明的定義出發,逐步推導多項式承諾、橢圓曲線密碼學、QAP 轉換等核心技術,提供完整的數學推導過程與實際應用場景。

zkSNARK 數學推導完整指南

從 NP 問題到 ZK 證明

核心思想:把任意計算轉成數學方程式

計算:if (x > 0) { y = x * 2 }
電路約束:y - x * 2 = 0(當 x > 0 時)

R1CS 約束系統

每個約束形式:

⟨A, w⟩ · ⟨B, w⟩ - ⟨C, w⟩ = 0

w = 所有變數的向量

QAP 轉換

約束 → 多項式

每個約束 j → 三個多項式 Lj(x), Rj(x), Oj(x)
約束成立 ⟺ (L·R - O)(j) = 0 對所有 j

多項式承諾

KZG 承諾:

Commit(f) = f(τ)·G

驗證:

e(C, H) = e(Q, τH - zH) + e(Y, H)

信任設置

SRS(結構化參考字符串):

(g^τ, g^τ², ..., g^τ^n)

「有毒廢料」τ 必須被丟棄!

證明生成

# 簡化版 Groth16 證明生成
def prove(public_input, private_input, proving_key):
    A = sum(L_i * w_i) + δ*H
    B = sum(R_i * w_i) + ε*H
    C = sum((L_i * w_i) * (R_i * w_i) - O_i * w_i) / (τ - z) + ω*H
    return (A, B, C)

驗證

e(A, B) = e(C, G) + e(H, params)

結語

數學很複雜,但框架幫你處理細節。知道原理就够了,不需要自己實現。

COMMIT: Add zkSNARK mathematical derivation complete guide

延伸閱讀與來源

這篇文章對您有幫助嗎?

評論

發表評論

注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。

目前尚無評論,成為第一個發表評論的人吧!