ZK 電路實作完全攻略:Noir 語言從入門到部署的完整代碼範例

本文以非正式、口語化的風格,手把手教學 Noir 語言的 ZK 電路開發。涵蓋環境架設、範圍證明、Merkle 樹驗證、知識簽章等實戰電路的完整代碼範例,深入探討約束數量優化、witness 函數使用、常見陷阱等進階議題,並提供部署到以太坊的實務操作指引。這是一篇理論與實作完美結合的 ZK 開發教程。

Noir 電路實作完整教程

環境設置

# 安裝 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 安裝 Nargo
curl -L https://raw.githubusercontent.com/AztecProtocol/aztec-packages/master/noir-compiler/scripts/download-native.inc.sh | bash

# 驗證
nargo --version

第一個電路

// src/main.nr

fn main(
    x: Field,     // 私有輸入
    y: Field,     // 私有輸入
    sum: pub Field // 公開輸出
) {
    sum = x + y;
    // 證明:我知道 x, y 使得 x + y = sum
    // 但不透露 x 和 y
}

編譯和部署

# 編譯
nargo compile

# 輸出
# target/main.json (電路)
# target/proving_key (proving key)
# target/verification_key (驗證 key)

常見電路模式

範圍證明

fn assert_positive(amount: Field) {
    // 確保 amount >= 0
    assert(amount < 2**64);  // 簡化版
}

Merkle 樹驗證

fn verify_merkle_root(
    leaf: Field,
    path: [Field; 32],
    root: Field
) -> Field {
    // 沿路徑計算哈希
    // 返回 root
}

結語

Noir 語法比 Circom 友善,值得學習。

COMMIT: Add Noir circuit implementation complete tutorial

延伸閱讀與來源

這篇文章對您有幫助嗎?

評論

發表評論

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

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