自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ZK 證明和 zkEVM 的工作原理(無需數(shù)學(xué))

區(qū)塊鏈
在區(qū)塊鏈的背景下,ZKP 被用來提高Polygon 的 zkEVM[17]等產(chǎn)品中以太坊的可擴(kuò)展性,通過提供一種驗(yàn)證批量交易的新方法,而不會(huì)出現(xiàn)我們今天在其他匯總解決方案中看到的典型的安全性或 EVM 兼容性損失。

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

一句話:ZK 證明可以讓你在不泄露事物本身的情況下證明某件事。這有幾個(gè)實(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í)”的人。

圖片圖片

有時(shí),涉及第三方(即頒發(fā)者),該第三方向證明者授予證書(例如許可證),驗(yàn)證者將其作為信息來源信任。

圖片圖片

讓我們看一個(gè)例子...我想向一個(gè)網(wǎng)站證明我已年滿 18 歲,但不上傳我的護(hù)照照片。在這種情況下,有:

? 證明者:我,試圖證明我達(dá)到法定年齡的人。

? 驗(yàn)證者:網(wǎng)站所有者,試圖驗(yàn)證我是否達(dá)到法定年齡。

? 發(fā)行人:向我提供護(hù)照的政府;網(wǎng)站所有者信任的證明我年齡的文件。

通常,我需要將整個(gè)護(hù)照的屏幕截圖上傳到網(wǎng)站(我真的不想這樣做),只是為了證明我已年滿 18 歲。

斯蒂芬[3]制作的一個(gè)有趣的例子是將其應(yīng)用于海綿寶寶。海綿寶寶想要證明他的名字確實(shí)是海綿寶寶,但為了做到這一點(diǎn),他需要向驗(yàn)證者(警察……或者我猜,警魚)提供他的完整許可證。

他的駕照包含敏感信息,如出生日期、地址、性別等;所有這些都不是證明他的名字所必需的;但可惜的是,他別無選擇。

圖片圖片

如果海綿寶寶能證明他的名字,或者我能以某種方式證明我已經(jīng)超過 18 歲,而不需要交出那么多敏感信息,那就更好了。

這是 ZK 證明如何為世界提供真正價(jià)值的一個(gè)典型例子。有了 ZK 證明,我現(xiàn)在能夠向驗(yàn)證者證明我的部分身份(或其他任何內(nèi)容) ,而無需提供我身份的任何方面或任何支持文件來證明這一事實(shí)。

這樣,我就不會(huì)將敏感的個(gè)人信息轉(zhuǎn)移給第三方存儲(chǔ)在數(shù)據(jù)庫(kù)中;容易受到攻擊和泄露;目前,我們幾乎每次注冊(cè)網(wǎng)站時(shí)都會(huì)面臨一些風(fēng)險(xiǎn)。

這一切聽起來都很棒。但如何在不透露任何內(nèi)容的情況下證明某件事呢?為此,我們可以更深入地了解 ZK 證明是什么。

ZK 證明由什么組成?

所以,我們想要證明某件事,而不透露我們?nèi)绾沃滥羌?,或者那件事到底是什么。這怎么可能?

在我們回答這個(gè)問題之前,ZK 證明分為兩大類:

  1. 1. 交互的
  2. 2. 非交互式

在 web3 中我們關(guān)心的是非交互性的,但讓我們快速了解一下 ZK 上下文中的“交互性”指的是什么。

交互式 ZK 證明

想象一下,有一個(gè)環(huán)形洞穴,里面有一扇門,需要密碼才能進(jìn)入。

作為證明者,您的目標(biāo)是向您的朋友(驗(yàn)證者)證明您知道秘密密碼(稱為“證人”),而不告訴他們實(shí)際的密碼。

圖片圖片

你不想告訴你的朋友密碼,所以你要證明你知道它;首先,隨機(jī)進(jìn)入洞穴的一側(cè);在他們看不見的情況下。

此時(shí),你的朋友不知道你站在哪一邊。但作為挑戰(zhàn),他們會(huì)喊出“A!” 或“B!”;要求您從A側(cè)或B側(cè)****退出。

在這個(gè)簡(jiǎn)單的例子中,這可能會(huì)導(dǎo)致兩種結(jié)果:

  1. 1. 你進(jìn)入了A面,所以你需要密碼才能通過大門進(jìn)入B面:

圖片圖片

  1. 2. 您進(jìn)入B面,所以不需要密碼;你可以直接退出:

圖片圖片

這就是所謂的 阿里巴巴洞穴故事[4],供參考。

這是一個(gè)簡(jiǎn)單的例子,因?yàn)闊o論您是否需要密碼來滿足您朋友的挑戰(zhàn),這都是 50/50 的比例;因此,僅執(zhí)行一次此挑戰(zhàn)不足以確定您知道密碼。

這意味著您需要完成更多次挑戰(zhàn),正確退出 A 側(cè)或 B 側(cè),直到您的朋友滿意為止;或者在理論世界中,直到你不可能偽造證人的知識(shí)(密碼)。

因此,這是交互式的;您(證明者)和您的朋友(驗(yàn)證者)來回交互。你的朋友提出了一個(gè)挑戰(zhàn),你提出了一個(gè)回應(yīng)。重復(fù)這個(gè)循環(huán),直到驗(yàn)證者滿意為止,此時(shí)驗(yàn)證者已經(jīng)證明了證人的知識(shí)。

這構(gòu)成了交互式 ZK 證明的三個(gè)部分:

  1. 1. 見證人:證明者想要證明其了解的秘密信息。
  2. 2. 挑戰(zhàn):只有了解證人的人才能回答這個(gè)問題;雖然可能是一個(gè)幸運(yùn)的猜測(cè)。
  3. 3. Response:證明者對(duì)挑戰(zhàn)的響應(yīng);包含(希望)正確的答案。

重復(fù)步驟2和3,直到驗(yàn)證者滿意為止。

圖片圖片

最終,一旦驗(yàn)證者滿意,循環(huán)就會(huì)中斷;驗(yàn)證者不會(huì)產(chǎn)生另一個(gè)挑戰(zhàn),而是承認(rèn)證明者了解證人。

圖片圖片

雖然這個(gè)過程有效,但它需要證明者和驗(yàn)證者之間進(jìn)行多輪通信;這是低效的,并且在區(qū)塊鏈環(huán)境中效果不佳。

交互式證明還有另一個(gè)很大的限制;即使驗(yàn)證者滿意后,該證據(jù)也無法用于獨(dú)立驗(yàn)證[5];這意味著只有驗(yàn)證它的一方才能信任它,而不是其他任何人。

由于這些原因,進(jìn)行了非交互式 ZK 證明。

非交互式 ZK 證明

非交互式 ZK 證明只需要從證明者到驗(yàn)證者的一輪通信。證明者使用一種算法來計(jì)算 ZK 證明并將其發(fā)送給驗(yàn)證者,驗(yàn)證者也使用另一種算法來檢查它。

非交互式 ZK 證明的另一個(gè)好處是它們也可供其他任何人驗(yàn)證;這意味著它不僅可以從驗(yàn)證者的 POV 中得到證明,而且可以供每個(gè)人驗(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 的意思是零知識(shí)簡(jiǎn)潔非交互式知識(shí)論證。

? ZK:希望現(xiàn)在你能猜到這意味著什么(零知識(shí))。

? 簡(jiǎn)潔:它們很小,并且可以被驗(yàn)證者快速驗(yàn)證。

? 非交互式:我們之前討論過這一點(diǎn)。證明者和驗(yàn)證者之間只需要一輪通信。

? 論據(jù):理論上來說,“欺騙”系統(tǒng)的可能性極小。

? (的)知識(shí):如果不訪問秘密信息(見證人),就無法構(gòu)建知識(shí)。

他們使用一種稱為橢圓曲線配對(duì)[6]的加密原語作為創(chuàng)建和驗(yàn)證這些證明的方法(我們不會(huì)在這里討論數(shù)學(xué))。

關(guān)于 ZK-SNARK 需要注意的一件關(guān)鍵事情是,在初始設(shè)置階段,證明者和驗(yàn)證者必須同意使用“共享密鑰”,即公共參考字符串 (CRS)。任何有權(quán)訪問此共享密鑰的人都可以驗(yàn)證這些證明。

這個(gè)共享密鑰使 ZK-SNARK 成為可能;盡管這也可以說是它們最大的缺點(diǎn),因?yàn)樗鼊?chuàng)建了所謂的“可信環(huán)境”。

用于創(chuàng)建 CRS 的值(有時(shí)稱為“有毒廢物”)需要在 CRS 生成后銷毀。如果不是,整個(gè)系統(tǒng)就會(huì)面臨風(fēng)險(xiǎn);因?yàn)椴徽\(chéng)實(shí)的證明者能夠計(jì)算出錯(cuò)誤的證明;因此,用戶必須相信價(jià)值已被破壞。

關(guān)于 ZK SNARK 還值得一提的是,它們不具有“抗量子性”。這意味著它們將來很容易受到量子計(jì)算機(jī)的攻擊;盡管它們將來可能會(huì)升級(jí)以具有抗量子性。

什么是 ZK-STARK?

ZK-STARK 的意思是零知識(shí)可擴(kuò)展透明知識(shí)論證。

? 可擴(kuò)展:它們不是“簡(jiǎn)潔”的,而是可擴(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];我絕對(duì)沒有資格告訴你。Vitalik 針對(duì)該主題推出了一個(gè)由三部分組成的系列:1[8] , 2[9] , 3[10]。

ZK STARK 解決了我們與 ZK-SNARK 討論的兩個(gè)問題,它們:

  1. 1. 不需要“可信環(huán)境”。
  2. 2. 似乎是后量子安全的;這意味著它們將來不會(huì)容易受到量子計(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

尺寸

簡(jiǎn)潔、可快速驗(yàn)證

更大,但在證明更大的證人時(shí)可以更有效地?cái)U(kuò)展

安全

需要可信的環(huán)境

不需要可信環(huán)境

后量子

盡管可以升級(jí),但不安全

安全的

zkEVM 如何工作?

現(xiàn)在我們已經(jīng)介紹了零知識(shí)證明的工作原理以及 web3 世界中出現(xiàn)的兩種常見的 ZKP 形式,讓我們來探討一下由 ZKP 支持的最新創(chuàng)新之一;zkEVM(零知識(shí)以太坊虛擬機(jī))。

zkEVM 有幾種不同的形式;正如 Vitalik 在他的博客文章“不同類型的 ZK-EVM[11] ”中概述的那樣。我將在這篇文章中引用的是Polygon zkEVM[12]。

zkEVM 的目標(biāo)是提高以太坊區(qū)塊鏈的可擴(kuò)展性,同時(shí)保持安全、去中心化和EVM[13]兼容。

細(xì)節(jié)很復(fù)雜,但核心原理與我們到目前為止討論的相同。與所有 ZKP 系統(tǒng)一樣,有:

1. 證明者:生成代表用戶提交的一批交易真實(shí)性的有效性證明。

? 首先,它創(chuàng)建多個(gè) ZK-STARK 證明。

? 它使用STARK Recursion[14]將 ZK-STARK 捆綁在一起,以創(chuàng)建單個(gè) ZK-STARK。

? 這個(gè) 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ù)的簡(jiǎn)化流程圖。

我將其分成按時(shí)間順序排列的部分,以幫助其更容易理解。

圖片圖片

提交交易

作為用戶,您可以像平常使用任何其他 EVM 鏈(例如以太坊)一樣提交交易;通過簽署交易并通過 JSON RPC 發(fā)送它們。

運(yùn)行 zkEVM 軟件的定序器節(jié)點(diǎn)會(huì)選取這些交易并決定要處理哪些交易,并制定一些激勵(lì)機(jī)制來正確處理這些交易。

圖片圖片

批量交易

排序器將交易批量合并為一個(gè),并將它們提交到PolygonZkEvm智能合約,該智能合約存儲(chǔ)在以太坊主網(wǎng)上(以及以太坊 Goerli 測(cè)試網(wǎng)上的一個(gè)單獨(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)是另一臺(tái)運(yùn)行 zkEVM 軟件并與 ZK 證明器通信的機(jī)器。流程如下:

? 聚合器從智能合約接收批次

? 聚合器將批次發(fā)送到 ZK Prover

? ZK Prover 創(chuàng)建多個(gè) ZK-STARK -> 單個(gè) ZK-STARK -> 一個(gè) ZK-SNARK

? ZK-SNARK(有效性證明)被發(fā)送回聚合器

? 聚合器將有效性證明發(fā)送回PolygonZkEVM智能合約

? 智能PolygonZkEVM合約驗(yàn)證有效性證明

? 如果有效性證明有效,則接受。

? 如果無效,則拒絕它。

圖片圖片

閱讀 ZK EVM

為了使 ZK EVM 發(fā)揮作用,去中心化應(yīng)用程序(dApp)需要從中讀取信息;這就是同步器發(fā)揮作用的地方。

它從以太坊智能合約中讀取事件,存儲(chǔ)來自聚合器的 ZK 有效性證明和從排序器提交的批次的知識(shí)。

圖片圖片

這樣,應(yīng)用程序就可以通過 JSON RPC 輕松獲取匯總狀態(tài)的視圖。

總結(jié)

零知識(shí)證明是密碼學(xué)的現(xiàn)實(shí)應(yīng)用,可以成為更加注重隱私的未來的基礎(chǔ);在Polygon ID[16]等產(chǎn)品中得到了證明。

在區(qū)塊鏈的背景下,ZKP 被用來提高Polygon 的 zkEVM[17]等產(chǎn)品中以太坊的可擴(kuò)展性,通過提供一種驗(yàn)證批量交易的新方法,而不會(huì)出現(xiàn)我們今天在其他匯總解決方案中看到的典型的安全性或 EVM 兼容性損失。

在這篇文章中,我們介紹了:

  • ? ZK 證明是什么,以及為什么它們很重要。
  • ? ZK 證明如何工作,包括 ZK-SNARK 和 ZK-STARK。
  • ? 這些證明如何在區(qū)塊鏈?zhǔn)澜缰惺褂谩?/li>

如果您想了解如何應(yīng)用這些概念,我之前有一篇博客文章介紹了如何在 Polygon zkEVM 上構(gòu)建您的第一個(gè)智能合約和去中心化應(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] 橢圓曲線配對(duì): 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

責(zé)任編輯:武曉燕 來源: Watts 李留白
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)