新聞中心
零知識 (ZK) 證明正在為 web3 的最新創(chuàng)新提供動力。它們已經(jīng)被用于Polygon 的 zkEVM[1]等產(chǎn)品中,為以太坊帶來可驗(yàn)證的可擴(kuò)展性,而Polygon ID[2]則用于在不泄露任何個人信息的情況下驗(yàn)證您的身份。

創(chuàng)新互聯(lián)專注于紫云企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),購物商城網(wǎng)站建設(shè)。紫云網(wǎng)站建設(shè)公司,為紫云等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
一句話:ZK 證明可以讓你在不泄露事物本身的情況下證明某件事。這有幾個實(shí)際應(yīng)用,例如在不提供完整許可證/護(hù)照信息的情況下驗(yàn)證您的年齡。
但這實(shí)際上是如何運(yùn)作的呢?幕后發(fā)生了什么讓這一切成為可能?在這篇文章中,我將介紹您需要了解的有關(guān) ZK 證明的所有內(nèi)容,但忽略數(shù)學(xué)。
我們開始做吧!
ZK 證明如何工作?
為了在不泄露聲明本身的情況下證明聲明的有效性,涉及兩方:
1. 證明者:試圖證明某事的人。
2. 驗(yàn)證者:試圖驗(yàn)證聲明是否“真實(shí)”的人。
圖片
有時,涉及第三方(即頒發(fā)者),該第三方向證明者授予證書(例如許可證),驗(yàn)證者將其作為信息來源信任。
圖片
讓我們看一個例子...我想向一個網(wǎng)站證明我已年滿 18 歲,但不上傳我的護(hù)照照片。在這種情況下,有:
? 證明者:我,試圖證明我達(dá)到法定年齡的人。
? 驗(yàn)證者:網(wǎng)站所有者,試圖驗(yàn)證我是否達(dá)到法定年齡。
? 發(fā)行人:向我提供護(hù)照的政府;網(wǎng)站所有者信任的證明我年齡的文件。
通常,我需要將整個護(hù)照的屏幕截圖上傳到網(wǎng)站(我真的不想這樣做),只是為了證明我已年滿 18 歲。
斯蒂芬[3]制作的一個有趣的例子是將其應(yīng)用于海綿寶寶。海綿寶寶想要證明他的名字確實(shí)是海綿寶寶,但為了做到這一點(diǎn),他需要向驗(yàn)證者(警察……或者我猜,警魚)提供他的完整許可證。
他的駕照包含敏感信息,如出生日期、地址、性別等;所有這些都不是證明他的名字所必需的;但可惜的是,他別無選擇。
圖片
如果海綿寶寶能證明他的名字,或者我能以某種方式證明我已經(jīng)超過 18 歲,而不需要交出那么多敏感信息,那就更好了。
這是 ZK 證明如何為世界提供真正價值的一個典型例子。有了 ZK 證明,我現(xiàn)在能夠向驗(yàn)證者證明我的部分身份(或其他任何內(nèi)容) ,而無需提供我身份的任何方面或任何支持文件來證明這一事實(shí)。
這樣,我就不會將敏感的個人信息轉(zhuǎn)移給第三方存儲在數(shù)據(jù)庫中;容易受到攻擊和泄露;目前,我們幾乎每次注冊網(wǎng)站時都會面臨一些風(fēng)險。
這一切聽起來都很棒。但如何在不透露任何內(nèi)容的情況下證明某件事呢?為此,我們可以更深入地了解 ZK 證明是什么。
ZK 證明由什么組成?
所以,我們想要證明某件事,而不透露我們?nèi)绾沃滥羌拢蛘吣羌碌降资鞘裁?。這怎么可能?
在我們回答這個問題之前,ZK 證明分為兩大類:
- 1. 交互的
- 2. 非交互式
在 web3 中我們關(guān)心的是非交互性的,但讓我們快速了解一下 ZK 上下文中的“交互性”指的是什么。
交互式 ZK 證明
想象一下,有一個環(huán)形洞穴,里面有一扇門,需要密碼才能進(jìn)入。
作為證明者,您的目標(biāo)是向您的朋友(驗(yàn)證者)證明您知道秘密密碼(稱為“證人”),而不告訴他們實(shí)際的密碼。
圖片
你不想告訴你的朋友密碼,所以你要證明你知道它;首先,隨機(jī)進(jìn)入洞穴的一側(cè);在他們看不見的情況下。
此時,你的朋友不知道你站在哪一邊。但作為挑戰(zhàn),他們會喊出“A!” 或“B!”;要求您從A側(cè)或B側(cè)****退出。
在這個簡單的例子中,這可能會導(dǎo)致兩種結(jié)果:
- 1. 你進(jìn)入了A面,所以你需要密碼才能通過大門進(jìn)入B面:
圖片
- 2. 您進(jìn)入B面,所以不需要密碼;你可以直接退出:
圖片
這就是所謂的 阿里巴巴洞穴故事[4],供參考。
這是一個簡單的例子,因?yàn)闊o論您是否需要密碼來滿足您朋友的挑戰(zhàn),這都是 50/50 的比例;因此,僅執(zhí)行一次此挑戰(zhàn)不足以確定您知道密碼。
這意味著您需要完成更多次挑戰(zhàn),正確退出 A 側(cè)或 B 側(cè),直到您的朋友滿意為止;或者在理論世界中,直到你不可能偽造證人的知識(密碼)。
因此,這是交互式的;您(證明者)和您的朋友(驗(yàn)證者)來回交互。你的朋友提出了一個挑戰(zhàn),你提出了一個回應(yīng)。重復(fù)這個循環(huán),直到驗(yàn)證者滿意為止,此時驗(yàn)證者已經(jīng)證明了證人的知識。
這構(gòu)成了交互式 ZK 證明的三個部分:
- 1. 見證人:證明者想要證明其了解的秘密信息。
- 2. 挑戰(zhàn):只有了解證人的人才能回答這個問題;雖然可能是一個幸運(yùn)的猜測。
- 3. Response:證明者對挑戰(zhàn)的響應(yīng);包含(希望)正確的答案。
重復(fù)步驟2和3,直到驗(yàn)證者滿意為止。
圖片
最終,一旦驗(yàn)證者滿意,循環(huán)就會中斷;驗(yàn)證者不會產(chǎn)生另一個挑戰(zhàn),而是承認(rèn)證明者了解證人。
圖片
雖然這個過程有效,但它需要證明者和驗(yàn)證者之間進(jìn)行多輪通信;這是低效的,并且在區(qū)塊鏈環(huán)境中效果不佳。
交互式證明還有另一個很大的限制;即使驗(yàn)證者滿意后,該證據(jù)也無法用于獨(dú)立驗(yàn)證[5];這意味著只有驗(yàn)證它的一方才能信任它,而不是其他任何人。
由于這些原因,進(jìn)行了非交互式 ZK 證明。
非交互式 ZK 證明
非交互式 ZK 證明只需要從證明者到驗(yàn)證者的一輪通信。證明者使用一種算法來計(jì)算 ZK 證明并將其發(fā)送給驗(yàn)證者,驗(yàn)證者也使用另一種算法來檢查它。
非交互式 ZK 證明的另一個好處是它們也可供其他任何人驗(yàn)證;這意味著它不僅可以從驗(yàn)證者的 POV 中得到證明,而且可以供每個人驗(yàn)證自己;適合區(qū)塊鏈。
這些能夠證明信息和驗(yàn)證證據(jù)的“算法”是什么?嗯,答案是;這取決于。[它們的數(shù)量相當(dāng)多](https://en.wikipedia.org/wiki/Zero-knowledge_proof#:~:text=The most popular interactive or,Delegation (VPD)%2C and Succinct),但在區(qū)塊鏈環(huán)境中通常使用兩種 ZKP 系統(tǒng);ZK-SNARK 和 ZK-STARK。
什么是 ZK-SNARK?
ZK-SNARK 的意思是零知識簡潔非交互式知識論證。
? ZK:希望現(xiàn)在你能猜到這意味著什么(零知識)。
? 簡潔:它們很小,并且可以被驗(yàn)證者快速驗(yàn)證。
? 非交互式:我們之前討論過這一點(diǎn)。證明者和驗(yàn)證者之間只需要一輪通信。
? 論據(jù):理論上來說,“欺騙”系統(tǒng)的可能性極小。
? (的)知識:如果不訪問秘密信息(見證人),就無法構(gòu)建知識。
他們使用一種稱為橢圓曲線配對[6]的加密原語作為創(chuàng)建和驗(yàn)證這些證明的方法(我們不會在這里討論數(shù)學(xué))。
關(guān)于 ZK-SNARK 需要注意的一件關(guān)鍵事情是,在初始設(shè)置階段,證明者和驗(yàn)證者必須同意使用“共享密鑰”,即公共參考字符串 (CRS)。任何有權(quán)訪問此共享密鑰的人都可以驗(yàn)證這些證明。
這個共享密鑰使 ZK-SNARK 成為可能;盡管這也可以說是它們最大的缺點(diǎn),因?yàn)樗鼊?chuàng)建了所謂的“可信環(huán)境”。
用于創(chuàng)建 CRS 的值(有時稱為“有毒廢物”)需要在 CRS 生成后銷毀。如果不是,整個系統(tǒng)就會面臨風(fēng)險;因?yàn)椴徽\實(shí)的證明者能夠計(jì)算出錯誤的證明;因此,用戶必須相信價值已被破壞。
關(guān)于 ZK SNARK 還值得一提的是,它們不具有“抗量子性”。這意味著它們將來很容易受到量子計(jì)算機(jī)的攻擊;盡管它們將來可能會升級以具有抗量子性。
什么是 ZK-STARK?
ZK-STARK 的意思是零知識可擴(kuò)展透明知識論證。
? 可擴(kuò)展:它們不是“簡潔”的,而是可擴(kuò)展的;這意味著它們比 ZK-SNARK 更有效地生成和驗(yàn)證更多見證人的證明。
? 透明:無需可信設(shè)置。他們依靠可公開驗(yàn)證的隨機(jī)性來生成共享密鑰。
這種透明度的提高通常需要權(quán)衡生成比 ZK-SNARK 大小大得多的證明;除非處理非常大的數(shù)據(jù)集。[證明的大小從 288 字節(jié)增加到幾百 KB](https://vitalik.ca/general/2017/11/09/starks_part_1.html#:~:text=the size of a proof goes up from 288 bytes to a few hundred kilobytes)。
他們不使用橢圓曲線,而是使用多項(xiàng)式[7];我絕對沒有資格告訴你。Vitalik 針對該主題推出了一個由三部分組成的系列:1[8] , 2[9] , 3[10]。
ZK STARK 解決了我們與 ZK-SNARK 討論的兩個問題,它們:
- 1. 不需要“可信環(huán)境”。
- 2. 似乎是后量子安全的;這意味著它們將來不會容易受到量子計(jì)算機(jī)的攻擊。
ZK-STARKS 比 ZK-SNARK 更新,Vitalik 稱它們?yōu)椤癧更新、更閃亮的表弟](https://vitalik.ca/general/2017/11/09/starks_part_1.html#:~:text=a newer%2C shinier cousin)”!???? 所以,快速回顧一下:
|
ZK-SNARK |
ZK-STARK |
|
|
尺寸 |
簡潔、可快速驗(yàn)證 |
更大,但在證明更大的證人時可以更有效地擴(kuò)展 |
|
安全 |
需要可信的環(huán)境 |
不需要可信環(huán)境 |
|
后量子 |
盡管可以升級,但不安全 |
安全的 |
zkEVM 如何工作?
現(xiàn)在我們已經(jīng)介紹了零知識證明的工作原理以及 web3 世界中出現(xiàn)的兩種常見的 ZKP 形式,讓我們來探討一下由 ZKP 支持的最新創(chuàng)新之一;zkEVM(零知識以太坊虛擬機(jī))。
zkEVM 有幾種不同的形式;正如 Vitalik 在他的博客文章“不同類型的 ZK-EVM[11] ”中概述的那樣。我將在這篇文章中引用的是Polygon zkEVM[12]。
zkEVM 的目標(biāo)是提高以太坊區(qū)塊鏈的可擴(kuò)展性,同時保持安全、去中心化和EVM[13]兼容。
細(xì)節(jié)很復(fù)雜,但核心原理與我們到目前為止討論的相同。與所有 ZKP 系統(tǒng)一樣,有:
1. 證明者:生成代表用戶提交的一批交易真實(shí)性的有效性證明。
? 首先,它創(chuàng)建多個 ZK-STARK 證明。
? 它使用STARK Recursion[14]將 ZK-STARK 捆綁在一起,以創(chuàng)建單個 ZK-STARK。
? 這個 ZK-STARK 很大,因此它通過CIRCOM 組件[15]輸出到 SNARK 構(gòu)建器。
? 顧名思義,SNARK 構(gòu)建器生成 ZK-SNARK 有效性證明;這有助于將 Gas 成本從 5M 降低到 350K。
2. 驗(yàn)證者:PolygonZkEVM部署在以太坊上的智能合約是 ZK 證明的驗(yàn)證者。
zkEVM 中的數(shù)據(jù)流
下面是 Polygon zkEVM 中數(shù)據(jù)的簡化流程圖。
我將其分成按時間順序排列的部分,以幫助其更容易理解。
圖片
提交交易
作為用戶,您可以像平常使用任何其他 EVM 鏈(例如以太坊)一樣提交交易;通過簽署交易并通過 JSON RPC 發(fā)送它們。
運(yùn)行 zkEVM 軟件的定序器節(jié)點(diǎn)會選取這些交易并決定要處理哪些交易,并制定一些激勵機(jī)制來正確處理這些交易。
圖片
批量交易
排序器將交易批量合并為一個,并將它們提交到PolygonZkEvm智能合約,該智能合約存儲在以太坊主網(wǎng)上(以及以太坊 Goerli 測試網(wǎng)上的一個單獨(dú)實(shí)例)。
圖片
這些批次目前不一定正確或經(jīng)過驗(yàn)證。
驗(yàn)證交易
使用 ZKP,PolygonZkEVM智能合約在此設(shè)置中充當(dāng)驗(yàn)證者。它想要驗(yàn)證剛剛收到的批次是否有效;它通過將批次發(fā)送到聚合器節(jié)點(diǎn)來實(shí)現(xiàn)這一點(diǎn)。
圖片
生成和驗(yàn)證 ZK 證明/有效性證明
智能PolygonZkEVM合約將剛剛收到的批次發(fā)送到聚合器節(jié)點(diǎn),該節(jié)點(diǎn)是另一臺運(yùn)行 zkEVM 軟件并與 ZK 證明器通信的機(jī)器。流程如下:
? 聚合器從智能合約接收批次
? 聚合器將批次發(fā)送到 ZK Prover
? ZK Prover 創(chuàng)建多個 ZK-STARK -> 單個 ZK-STARK -> 一個 ZK-SNARK
? ZK-SNARK(有效性證明)被發(fā)送回聚合器
? 聚合器將有效性證明發(fā)送回PolygonZkEVM智能合約
? 智能PolygonZkEVM合約驗(yàn)證有效性證明
? 如果有效性證明有效,則接受。
? 如果無效,則拒絕它。
圖片
閱讀 ZK EVM
為了使 ZK EVM 發(fā)揮作用,去中心化應(yīng)用程序(dApp)需要從中讀取信息;這就是同步器發(fā)揮作用的地方。
它從以太坊智能合約中讀取事件,存儲來自聚合器的 ZK 有效性證明和從排序器提交的批次的知識。
圖片
這樣,應(yīng)用程序就可以通過 JSON RPC 輕松獲取匯總狀態(tài)的視圖。
總結(jié)
零知識證明是密碼學(xué)的現(xiàn)實(shí)應(yīng)用,可以成為更加注重隱私的未來的基礎(chǔ);在Polygon ID[16]等產(chǎn)品中得到了證明。
在區(qū)塊鏈的背景下,ZKP 被用來提高Polygon 的 zkEVM[17]等產(chǎn)品中以太坊的可擴(kuò)展性,通過提供一種驗(yàn)證批量交易的新方法,而不會出現(xiàn)我們今天在其他匯總解決方案中看到的典型的安全性或 EVM 兼容性損失。
在這篇文章中,我們介紹了:
- ? ZK 證明是什么,以及為什么它們很重要。
- ? ZK 證明如何工作,包括 ZK-SNARK 和 ZK-STARK。
- ? 這些證明如何在區(qū)塊鏈?zhǔn)澜缰惺褂谩?/li>
如果您想了解如何應(yīng)用這些概念,我之前有一篇博客文章介紹了如何在 Polygon zkEVM 上構(gòu)建您的第一個智能合約和去中心化應(yīng)用程序,如下所示:
https://blog.jarrodwatts.com/the-ultimate-guide-to-building-on-polygon-zkevm
原文:https://blog.jarrodwatts.com/how-zk-proofs-and-zkevms-work
引用鏈接
[1] Polygon 的 zkEVM: https://polygon.technology/polygon-zkevm
[2] Polygon ID: https://polygon.technology/polygon-id
[3] 斯蒂芬: https://twitter.com/0ceans404
[4] 阿里巴巴洞穴故事: https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave
[5] 用于獨(dú)立驗(yàn)證: https://ethereum.org/en/zero-knowledge-proofs/#non-interactive-zero-knowledge-proofs
[6] 橢圓曲線配對: https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627
[7] 多項(xiàng)式: https://vitalik.ca/general/2017/11/09/starks_part_1.html
[8] 1: https://vitalik.ca/general/2017/11/09/starks_part_1.html
[9] 2: https://vitalik.ca/general/2017/11/22/starks_part_2.html
[10] 3: https://vitalik.ca/general/2018/07/21/starks_part_3.html
[11] 不同類型的 ZK-EVM: https://vitalik.ca/general/2022/08/04/zkevm.html
[12] Polygon zkEVM: https://polygon.technology/polygon-zkevm
[13] EVM: https://ethereum.org/en/developers/docs/evm/
[14] 它使用STARK Recursion: https://zkevm.polygon.technology/docs/zkProver/overview/#stark-recursion-component
[15] CIRCOM 組件: https://zkevm.polygon.technology/docs/zkProver/overview/#circom-library
[16] 在Polygon ID: https://polygon.technology/polygon-id
[17] Polygon 的 zkEVM: https://polygon.technology/polygon-zkevm
當(dāng)前名稱:ZK證明和zkEVM的工作原理(無需數(shù)學(xué))
標(biāo)題URL:http://m.fisionsoft.com.cn/article/cdidjoj.html


咨詢
建站咨詢
