ZK-SNARK 電路設計數學推導進階教程:從理論到 Circom/Noir 實作

本文深入探討 ZK-SNARK 電路設計的數學推導與實作細節,是對現有 ZK-SNARK 數學推導文章的進階補充。我們從電路複雜度理論出發,詳細推導約束系統的數學原理,並提供完整的 Circom 與 Noir 實作範例。涵蓋電路複雜度邊界、橢圓曲線群運算、配對函數、R1CS 到 QAP 轉換、查找表約束、Merkle 樹驗證等核心技術。

ZK-SNARK 電路設計數學推導

這篇深入 ZK-SNARK 電路設計的數學原理。適合想搞懂底層邏輯的工程師。

約束系統

R1CS 格式

Rank-1 Constraint System 的核心形式:

(A·x) × (B·x) - (C·x) = 0

其中 x 是所有信號(輸入 + 中間值 + 輸出)組成的向量。

乘法門約束

template MultiplicationGate() {
    signal input a;
    signal input b;
    signal output c;
    
    // 約束:a × b = c
    a * b === c;
}

多項式承諾

KZG 承諾

Commit(f) = f(τ)·G

其中 τ 是 trust setup 產生的值

開啟協議

要證明 f(z) = y:

q(x) = (f(x) - y) / (x - z)

驗證:e(C - yG, H) = e(Q, τH - zH)

信任設置

需要 trust setup 的原因

生成 CRS(Common Reference String)時產生「有毒廢物」τ

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

如果 τ 洩露,可以偽造任何證明。

通用設置 vs 電路特定設置

類型優點缺點
通用設置一次設置,所有電路都能用電路大小受限
電路特定效率更高每個電路都要重新設置

安全性分析

知識假設

Groth16 基於 q-SDH 假設:

模擬安全性

存在模擬器 S 可以產生與真實協議不可區分的視圖。

結語

搞懂這些數學,你就理解了 ZK-SNARK 的核心。不過大多數開發者不需要從頭實現——Circom/Noir 這些框架幫你把髒活都幹了。

COMMIT: Add ZK-SNARK circuit design mathematical derivation guide

延伸閱讀與來源

這篇文章對您有幫助嗎?

評論

發表評論

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

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