零知識證明(Zero-knowledge proofs )是允許一方向另一方透露信息知識而不透露信息本身的機制。 ZK 證明也稱為有效性證明,最初用於隱藏以隱私為中心的區塊鏈中的交易細節。

但ZK 證明還有另一個令人興奮的用例:擴展通用區塊鏈。通過有效性證明,區塊鏈節點可以在不存儲詳細信息或重放計算的情況下驗證交易。這減少了確認時間並提高了網絡吞吐量。

由於其可擴展性優勢,ZK 證明已成為區塊鏈擴展項目的核心基礎設施,尤其是零知識匯總 zero-knowledge rollups )。 ZK-SNARKs和ZK-STARKs是零知識證明的主要類型。作為一個全幣種區塊鏈瀏覽器,Tokenview同樣支持了Horizen Zcash等注重隱私的ZK-SNARKs類型的公鏈。本期文章就來一起學習一下什麼是ZK-SNARKs?

什麼是ZK-SNARKs?

ZK-SNARKs 是一種在不暴露底層數據的情況下生成零知識證明來驗證信息真實性的協議。首字母縮略詞全稱為: Zero-Knowledge Succinct Non-Interactive Argument of Knowledge

ZK-SNARKs 協議涉及兩方:證明者(Alice) 和驗證者(Bob)。證明者(Alice)是提出聲明的一方,而驗證者(Bob)是負責驗證聲明的一方。

聲明中引用的信息稱為見證( witness 秘密( secret 。證明者(Alice)使用ZK-SNARK 機制產生證明,以向驗證者(Bob)表明聲明是真實的,而無需透露參考信息。

一個涉及ZK-SNARKs 的假想示例是驗證用戶身份。個人可以在不透露個人信息(例如護照或社會安全號碼)的情況下證明聲明(“我是中國公民”)。

ZK-SNARKs具有以下特性:

1. 零知識( Zero-knowledge :這意味著驗證者除了知道聲明的有效性或虛假之外,一無所知。

2 .簡潔( Succinct :證明足夠小,驗證者可以在短時間內完成驗證。

3. 非交互式( Non-interactive :SNARKs 是非交互式的,因為證明者和驗證者不需要交換超出提交的初始證明之外的信息。早期的零知識證明系統需要證明者和驗證者交換多條消息來驗證陳述。

4. 論證( Argument :SNARK 是一個滿足嚴格要求的“計算合理”的陳述,因此很難作弊(即生成虛假證明)。

5. 知識:基於SNARK 的證明不能通過訪問底層信息或見證來創建。

什麼是 零知識證明:ZK-SNARKs? |Tokenview

資料來源: Altoros

區塊鏈中的ZK-SNARKs

分佈式計算系統和公鏈一樣,需要解決所謂的“計算完整性問題”。計算完整性(CI: Computational integrity ) 是指從特定計算中得到的輸出的正確性。

在公鏈中,計算完整性是指在網絡上執行的交易的正確性。大多數區塊鏈通過讓其他計算機(節點)重新運行每個交易來實現它。

然而,這種方法是有問題的。強制每個節點重放每個交易會減慢網絡速度並限制可擴展性。節點還必須存儲交易數據(否則它們無法重放計算),導致區塊鏈大小呈指數增長。

但是,如果節點可以在不重放計算的情況下檢查計算的有效性呢?這將提高網絡吞吐量並消除節點存儲多餘交易數據的需要。

使用ZK-SNARK 生成的有效性證明可以在不洩露輸入( inputs )的情況下證明交易的有效性。這就是為什麼Zcash 和Monero 等注重隱私的加密貨幣使用SNARK 來混淆交易信息。

SNARK 還可以證明鏈下執行的計算的正確性,而無需節點重放計算的每一步。這就是ZK-SNARK 可用於擴展區塊鏈的地方。使用SNARKs驗證鏈下計算是一個複雜的過程,首先要將計算編碼為數學表達式。該數學陳述構成了有效性證明的基礎。

驗證者然後對證明執行操作以檢查其正確性。如果證明通過所有檢查,則基礎計算被認為是有效的。這就是SNARKs簡潔的原因——有效性證明的大小比它驗證的計算小很多倍。

什麼是 零知識證明:ZK-SNARKs? |Tokenview

來源:Finematics

ZK-SNARKs 和ZK rollups

匯總(rollup)是以太坊的第2 層擴展解決方案,可通過鏈下執行提高L1區塊鏈的吞吐量。匯總處理L2 鏈上的交易,將多個鏈下交易聚合成區塊,並提交給L1 鏈。通過將計算從基礎層移開,匯總可以減少網絡擁塞並擴展交易。

然而,L1 鏈需要知道鏈下執行的交易是否有效(即計算完整性問題)。否則,惡意行為者可以劫持匯總並向主鏈提交不良交易。

一種類型的匯總(零知識匯總)使用ZK-SNARKs 向L1 鏈證明鏈下交易的真實性。任何人都可以驗證SNARK 證明,這確保了L1 鏈的交易有效性。

大多數使用ZK-SNARKs 的ZK rollups 都遵循相同的結構:

1. L2 鏈上的用戶簽署交易並將其提交給驗證者。

2. 驗證者將交易壓縮成一個區塊,並生成相應的有效性證明(SNARK)。這提供了新狀態由添加有效交易產生的加密保證。

3. L1 鏈上的智能合約對有效性證明進行操作。此操作的結果確定批量交易是否經過驗證並發佈到主鏈。

什麼是 零知識證明:ZK-SNARKs? |Tokenview

資料來源:Simon Brown

ZK-SNARKs 有什麼好處?

使用ZK-SNARKs 有三個主要好處:高吞吐量、有效性證明尺寸小和安全性。

1. 高吞吐量

ZK-SNARKs 通過縮小以太坊基礎層的計算來擴展吞吐量。使用ZK-SNARKs,匯總可以將TPS 率提高到數千。

ZK-SNARK 通常比它驗證的交易數據小很多倍。這減少了基礎區塊鏈的擁塞,並實現了更便宜的gas費和更快的交易。

2. 證明尺寸小

SNARK 證明的小尺寸使其易於在主鏈上進行驗證。在以太坊上,這意味著驗證鏈下交易的gas費更低,從而降低了終端用戶的匯總成本。

3. 安全

ZK 匯總被認為比其他擴展項目更安全,主要是因為ZK-SNARK 中使用了領先的加密安全機制。

ZK-SNARK 證明在計算上是可靠的,因此很難欺騙驗證者。 ZK-SNARKs 的非交互性也意味著任何人都可以去信任地驗證證明。

ZK-SNARK 的缺點是什麼?

使用ZK-SNARKs 有三個主要缺點:它需要一個可信的設置,它們容易受到量子計算攻擊,並且它們依賴於特殊的硬件。

1. 可信設置 Trusted setup

設置ZK-SNARK 協議需要創建一個通用公共參考字符串(CRS: Common Reference String )。 CRS也被描述為公共參數,它支持證明者和驗證者之間的安全通信。

如果惡意行為者獲得了公共參數的知識,他們可能會生成虛假的有效性證明。一些項目試圖通過涉及不同個體的多方計算(MPC: multi-party computation )來生成公共參數來解決這個問題。然而,這種方法要求用戶信任涉及到各方的完整性。這有很大的問題,因為區塊鏈的目的是減少對信任機構的需求。

2. 易受量子計算攻擊

ZK-SNARK 使用橢圓曲線密碼體制(ECC: Elliptic Curve Cryptography ) 來加密用於生成有效性證明的信息。 ECC 目前相對安全,但量子計算的進步可能會打破其安全模型。

3.對特殊硬件的依賴

使用ZK-SNARKs 生成有效性證明是一個計算密集型過程,這意味著證明者必須使用專門的硬件。因為很少有人能買到這些機器,所以很多人認為ZK-SNARK 證明過程是高度中心化的。

哪些項目使用ZK-SNARKs?

使用ZK-SNARKs 的五個著名項目是ZKSync、Loopring、Aztec、Polygon Hermez 和ZKSpace。

ZKSync

EVM 兼容的ZK rollup 存在於以太坊主網上。 ZKSync 支持智能合約、代幣互換、支付和NFT 鑄造。

Loopring

以太坊L2項目由基於SNARK 的ZK rollup 技術提供支持。 Loopring 還可以作為交易ETH 和其他ERC-20 代幣的去中心化交易所,其費用僅為以太坊主網上DEX 的一小部分。

Aztec

建立在以太坊網絡上的開源L2 網絡。 Aztec 利用ZK-SNARKs 來擴展交易並增加用戶的財務隱私。

Polygon Hermez

ZK rollup 在以太坊區塊鏈上運行。 Polygon Hermez 使用ZK-SNARKs 來支持安全和低成本的代幣交易和支付。

ZKSpace

基於ZK-SNARKs 的ZK rollup 項目。 ZKSpace 為以太坊用戶提供更低的gas 費用和更快的交易,包括AMM 式的DEX (ZKSwap v3)、支付網絡(ZKSquare) 和NFT 市場(ZKSea)。

原文鏈接: https://www.alchemy.com/overviews/snarks-vs-starks

https://ethereum.org/en/zero-knowledge-proofs/#zk-snarks