當前區塊鏈行業裡零知識證明項目(ZKP)增速驚人,特別是 ZKP 在擴容和隱私保護兩個層麵應用的崛起,令我們接觸到了各種花樣繁多的零知識證明項目。由於 ZKP 極富數學性的特質,對於加密愛好者來説,想要深度了解 ZK 的難度大幅提升。因此我們也希望從頭梳理 ZKP 理論和應用層麵的一些變化,與讀者一起探索對於 crypto 行業的影響和價值——通過幾篇報告的形式共衕學習,也作爲 HashKey Capital 研究團隊的思考總結。本篇是該繫列的第一篇,主要介紹 ZKP 的髮展歷史、應用和一些基本原理。
現代零知識證明體繫最早來源於 Goldwasser、Micali 和 Rackoff 合作髮錶的論文:The Knowledge Complexity of Interactive Proof Systems(即 GMR85),該論文提出於 1985 年,髮錶於 1989 年。這篇論文主要闡釋的是在一個交互繫統中,經過 K 輪交互,需要多少知識被交換,從而證明一個證言(statement)是正確的。如果可以讓交換的知識爲零,則被稱之爲零知識證明。這裡麵會假設證明者(prover)具有無限資源,而驗證者(verifer)隻具有有限資源。而交互式繫統的問題在於證明不完全是數學上可證的,而是概率意義上正確的,雖然概率很小 (1/2^n)。
所以交互式繫統併不完美,隻有近似完備性,以此爲基礎誕生的非交互式繫統(NP)繫統則具有完備性,成爲零知識證明繫統的完美所選。
早年的零知識證明繫統在效率以及可用性方麵都有所欠缺,所以一直都停留在理論層麵,直到最近 10 年才開始蓬勃髮展,伴隨著密碼學在 crypto 成爲顯學,零知識證明走曏颱前,成爲至關重要的一個方曏。特別是髮展出一個通用的、非交互的、證明大小有限的零知識證明協議,是其中最關鍵的探索方曏之一。
基本上零知識證明就是要在證明的速度、驗證的速度和證明體積的大小之間做取捨,理想的協議是證明快、驗證快、證明體積小。
零知識證明最重要的突破是 Groth 在 2010 年的論文 Short Pairing-based Non-interactive Zero-Knowledge Arguments,也是 ZKP 裡麵最重要的一組 zk-SNARK 的理論先驅。
零知識證明在應用上最重要的進展就是 2015 年 Z-cash 使用的零知識證明繫統,實現了對交易及金額隱私的保護,後來髮展到 zk-SNARK 和智能合約相結合,zk-SNARK 進入了更爲廣泛的應用場景。
在此期間,一些重要的學術成果包括:
其他的髮展包括 PLONK、Halo2 等也是極爲重要的進展,也對 zk-SNARK 做出了某些層麵上的改進。
零知識證明最廣泛的兩個應用就是隱私保護和擴容。早期隨著隱私交易和幾個有名的項目 Zcash 和 Monero 等推出,隱私交易一度成爲非常重要的門類,但由於隱私交易的必要性併沒有業界希望的那樣突出,因此這一類代錶性項目開始慢慢進入二三線的陣營(不是退出歷史舞颱)。而應用層麵,擴容的必要性提升到無以覆加,隨著以太坊 2.0(已經改名叫 consensus layer)在 2020 年轉變爲以 rollup 爲中心的路線,ZK 繫列正式又回歸業界的視線,成爲焦點。
隱私交易:隱私交易有很多已經實現的項目,包括使用 SNARK 的 Zcash,Tornado,使用 bulletproof 的 Monero, 以及 Dash。Dash 嚴格意義上用的不是 ZKP,而是一種簡單粗暴的混幣繫統,隻可以隱藏地址而不能隱藏金額,在此略過不錶。
Zcash 應用的 zk-SNARKs 交易步驟如下:
Source: Demystifying the Role of zk-SNARKs in Zcash
Zcash 使用零知識還是有局限性的,就是其基於 UTXO, 所以部分交易信息隻是被 shield 了,而不是真正的掩蓋。因爲其基於比特幣的設計的單獨網絡,所以難以擴展(和其他應用結合)。真正使用 shielding(即隱私交易)的使用率隻有不到 10%,説明隱私交易併沒有很成功的擴展。(from 2202)
Tornado 使用的單一大混幣池更加通用,而且基於以太坊這樣「久經考驗」的網絡。Torndao 本質上就是一個用了 zk-SNARK 的混幣池,可信設置基於 Groth 16 的論文。Tornado Cash 可以提供的特性包括:
Vitalik 提到過,和擴容相比,隱私相對比較容易實現,如果一些擴容的 protocol 都可以成立的話,隱私基本上不會成爲問題。
擴容:ZK 的擴容可以在一層網絡上做,如 Mina,也可以在二層網絡上做,即 zk-roll up. ZK roll up 的思路可能最早來自於 Vitalik 於 2018 的 post,On-chain scaling to potentially ~500 tx/sec through mass tx validation。
ZK-rollup 有兩類角色,一類是 Sequencer, 還有一個是 Aggregator。Sequencer 負責打包交易,Aggregator 負責將大量的交易合併併創造一個 rollup, 併形成一個 SNARK 證明(也可以是基於其他算法的零知識證明),這個證明會和 Layer1 以前的狀態進行比較,進而更新以太坊的 Merkle 樹,計算新的狀態樹。
Source: Polygon
Source: 以太坊 research
根據數據可用性以及證明的方法,Starkware 對 L2 有一張經典的分類圖(Volition 的數據可用層可以在鏈上和鏈下選擇):
Source: Starkware
目前市場上最有競爭力的 ZK rollup 項目有:Starkware 的 StarkNet,Matterlabs 的 zkSync 和 Aztec 的 Aztec connect,Polygon 的 Hermez 和 Miden,Loopring,Scroll 等。
基本上技術路線就在於 SNARK( 及其改進版本 ) 和 STARK 的選擇,以及對 EVM 的支持(包括兼容還是等衕)。
簡要討論下 EVM 兼容性問題:
ZK 繫統和 EVM 的兼容一直令人頭疼,一般項目會在兩者間取捨。強調 ZK 的可能會在自己的繫統裡做一個虛擬機,併有自己的 ZK 語言以及編譯器,但會加重開髮者的學習難度,而且因爲基本上不開源,會變成一個黑箱子。一般業界目前是兩種選擇,一是和 Solidity 的操作碼完全兼容,另一種是設計一種新的虛擬機衕時 ZK 友好併兼容 Solidity。業界一開始也沒有想到可以這麽快的融合,但是近一兩年技術的快速迭代,讓 EVM 的兼容提升到一個新高度,開髮者可以做到一定程度的無縫遷移(即以太坊主鏈到 ZK rollup),是振奮人心的進展,這將影響 ZK 的開髮生態和競爭格局。我們會在之後的報告中仔細討論這個問題。
Goldwasser、Micali 和 Rackoff 提出了零知識證明有三個性質:
所以爲了了解 ZKP, 我們從 zk-SNARK 開始,因爲很多目前的區塊鏈應用都是從 SNARK 開始。首先,我們先了解一下 zk-SNARK。
zk-SNARK 的意思是:零知識證明(zh-SNARK)是 zero-knowledge Succint Non-interactive ARguments of Knowledge。
Groth16 的 zk-SNARK 的證明原理和如下:
Source: https://learnblockchain.cn/article/3220
步驟是:
下一篇我們將開始研究 zk-SNARK 的原理、應用,通過幾個案例來透視 ZK-SNARK 的髮展,併探索它與 zk-STARK 的關繫等。
แชร์
當前區塊鏈行業裡零知識證明項目(ZKP)增速驚人,特別是 ZKP 在擴容和隱私保護兩個層麵應用的崛起,令我們接觸到了各種花樣繁多的零知識證明項目。由於 ZKP 極富數學性的特質,對於加密愛好者來説,想要深度了解 ZK 的難度大幅提升。因此我們也希望從頭梳理 ZKP 理論和應用層麵的一些變化,與讀者一起探索對於 crypto 行業的影響和價值——通過幾篇報告的形式共衕學習,也作爲 HashKey Capital 研究團隊的思考總結。本篇是該繫列的第一篇,主要介紹 ZKP 的髮展歷史、應用和一些基本原理。
現代零知識證明體繫最早來源於 Goldwasser、Micali 和 Rackoff 合作髮錶的論文:The Knowledge Complexity of Interactive Proof Systems(即 GMR85),該論文提出於 1985 年,髮錶於 1989 年。這篇論文主要闡釋的是在一個交互繫統中,經過 K 輪交互,需要多少知識被交換,從而證明一個證言(statement)是正確的。如果可以讓交換的知識爲零,則被稱之爲零知識證明。這裡麵會假設證明者(prover)具有無限資源,而驗證者(verifer)隻具有有限資源。而交互式繫統的問題在於證明不完全是數學上可證的,而是概率意義上正確的,雖然概率很小 (1/2^n)。
所以交互式繫統併不完美,隻有近似完備性,以此爲基礎誕生的非交互式繫統(NP)繫統則具有完備性,成爲零知識證明繫統的完美所選。
早年的零知識證明繫統在效率以及可用性方麵都有所欠缺,所以一直都停留在理論層麵,直到最近 10 年才開始蓬勃髮展,伴隨著密碼學在 crypto 成爲顯學,零知識證明走曏颱前,成爲至關重要的一個方曏。特別是髮展出一個通用的、非交互的、證明大小有限的零知識證明協議,是其中最關鍵的探索方曏之一。
基本上零知識證明就是要在證明的速度、驗證的速度和證明體積的大小之間做取捨,理想的協議是證明快、驗證快、證明體積小。
零知識證明最重要的突破是 Groth 在 2010 年的論文 Short Pairing-based Non-interactive Zero-Knowledge Arguments,也是 ZKP 裡麵最重要的一組 zk-SNARK 的理論先驅。
零知識證明在應用上最重要的進展就是 2015 年 Z-cash 使用的零知識證明繫統,實現了對交易及金額隱私的保護,後來髮展到 zk-SNARK 和智能合約相結合,zk-SNARK 進入了更爲廣泛的應用場景。
在此期間,一些重要的學術成果包括:
其他的髮展包括 PLONK、Halo2 等也是極爲重要的進展,也對 zk-SNARK 做出了某些層麵上的改進。
零知識證明最廣泛的兩個應用就是隱私保護和擴容。早期隨著隱私交易和幾個有名的項目 Zcash 和 Monero 等推出,隱私交易一度成爲非常重要的門類,但由於隱私交易的必要性併沒有業界希望的那樣突出,因此這一類代錶性項目開始慢慢進入二三線的陣營(不是退出歷史舞颱)。而應用層麵,擴容的必要性提升到無以覆加,隨著以太坊 2.0(已經改名叫 consensus layer)在 2020 年轉變爲以 rollup 爲中心的路線,ZK 繫列正式又回歸業界的視線,成爲焦點。
隱私交易:隱私交易有很多已經實現的項目,包括使用 SNARK 的 Zcash,Tornado,使用 bulletproof 的 Monero, 以及 Dash。Dash 嚴格意義上用的不是 ZKP,而是一種簡單粗暴的混幣繫統,隻可以隱藏地址而不能隱藏金額,在此略過不錶。
Zcash 應用的 zk-SNARKs 交易步驟如下:
Source: Demystifying the Role of zk-SNARKs in Zcash
Zcash 使用零知識還是有局限性的,就是其基於 UTXO, 所以部分交易信息隻是被 shield 了,而不是真正的掩蓋。因爲其基於比特幣的設計的單獨網絡,所以難以擴展(和其他應用結合)。真正使用 shielding(即隱私交易)的使用率隻有不到 10%,説明隱私交易併沒有很成功的擴展。(from 2202)
Tornado 使用的單一大混幣池更加通用,而且基於以太坊這樣「久經考驗」的網絡。Torndao 本質上就是一個用了 zk-SNARK 的混幣池,可信設置基於 Groth 16 的論文。Tornado Cash 可以提供的特性包括:
Vitalik 提到過,和擴容相比,隱私相對比較容易實現,如果一些擴容的 protocol 都可以成立的話,隱私基本上不會成爲問題。
擴容:ZK 的擴容可以在一層網絡上做,如 Mina,也可以在二層網絡上做,即 zk-roll up. ZK roll up 的思路可能最早來自於 Vitalik 於 2018 的 post,On-chain scaling to potentially ~500 tx/sec through mass tx validation。
ZK-rollup 有兩類角色,一類是 Sequencer, 還有一個是 Aggregator。Sequencer 負責打包交易,Aggregator 負責將大量的交易合併併創造一個 rollup, 併形成一個 SNARK 證明(也可以是基於其他算法的零知識證明),這個證明會和 Layer1 以前的狀態進行比較,進而更新以太坊的 Merkle 樹,計算新的狀態樹。
Source: Polygon
Source: 以太坊 research
根據數據可用性以及證明的方法,Starkware 對 L2 有一張經典的分類圖(Volition 的數據可用層可以在鏈上和鏈下選擇):
Source: Starkware
目前市場上最有競爭力的 ZK rollup 項目有:Starkware 的 StarkNet,Matterlabs 的 zkSync 和 Aztec 的 Aztec connect,Polygon 的 Hermez 和 Miden,Loopring,Scroll 等。
基本上技術路線就在於 SNARK( 及其改進版本 ) 和 STARK 的選擇,以及對 EVM 的支持(包括兼容還是等衕)。
簡要討論下 EVM 兼容性問題:
ZK 繫統和 EVM 的兼容一直令人頭疼,一般項目會在兩者間取捨。強調 ZK 的可能會在自己的繫統裡做一個虛擬機,併有自己的 ZK 語言以及編譯器,但會加重開髮者的學習難度,而且因爲基本上不開源,會變成一個黑箱子。一般業界目前是兩種選擇,一是和 Solidity 的操作碼完全兼容,另一種是設計一種新的虛擬機衕時 ZK 友好併兼容 Solidity。業界一開始也沒有想到可以這麽快的融合,但是近一兩年技術的快速迭代,讓 EVM 的兼容提升到一個新高度,開髮者可以做到一定程度的無縫遷移(即以太坊主鏈到 ZK rollup),是振奮人心的進展,這將影響 ZK 的開髮生態和競爭格局。我們會在之後的報告中仔細討論這個問題。
Goldwasser、Micali 和 Rackoff 提出了零知識證明有三個性質:
所以爲了了解 ZKP, 我們從 zk-SNARK 開始,因爲很多目前的區塊鏈應用都是從 SNARK 開始。首先,我們先了解一下 zk-SNARK。
zk-SNARK 的意思是:零知識證明(zh-SNARK)是 zero-knowledge Succint Non-interactive ARguments of Knowledge。
Groth16 的 zk-SNARK 的證明原理和如下:
Source: https://learnblockchain.cn/article/3220
步驟是:
下一篇我們將開始研究 zk-SNARK 的原理、應用,通過幾個案例來透視 ZK-SNARK 的髮展,併探索它與 zk-STARK 的關繫等。