比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > 屎幣 > Info

零知識證明開發指南:從入門到高階_ISC

Author:

Time:1900/1/1 0:00:00

通過闡述整個開發工具集,本文希望提供一個指南,幫助開發者在決策過程中選擇合適的zk堆棧。

去年夏天,Vitalik 寫了一篇博文,概述了不同類型的 zkEVM(零知識以太坊虛擬機)。Vitalik 根據性能和兼容性來定義與權衡。

這是一個非常有用的啟發式方法,以區分支持zkEVM的方法。然而,zkEVM是構建零知識應用程序的所有可能方法的一個子集。對于想要利用zk計算的獨特屬性,即簡潔性、零知識和正確性的程序員來說,zkEVM可能不是最好的選擇。通過闡述整個開發工具集,本文希望提供一個指南,幫助開發者在決策過程中選擇合適的zk堆棧。

在過去的一兩年中,zk工具有了巨大的進步。使得普通軟件的開發人員可以利用zk的強大屬性,而不需要深入了解令人生畏的基礎數學和工程。另一方面,為高級用戶提供的工具激增,使 zk 專家能夠極其精細地控制 zk 堆棧。

現代軟件是建立在無數的抽象層上的,以最大限度地提高專家的生產力。工程中的抽象有許多優勢,這些優勢在某種程度上是直觀的--網絡開發者不需要深入了解操作系統的工作原理。

建立良好的、可重復使用的抽象層的關鍵是封裝一個層的復雜性,然后為堆棧中更高的層提供簡單但有表現力的接口。正確的做法是,這使得具有不同專業領域和知識的開發人員能夠在整個堆棧中建立有用的工具。

毫不奇怪,這些原則也適用于zk系統,而且這些抽象層正變得足夠成熟,一個zk新手今天就可以開始使用它們并構建應用程序。

zk堆棧與各層的一些工具/技術實例低級別的zk開發Arkworks-rsArkworks-rs是一個Rust庫的生態系統,它為zkSNARK應用程序的子組件提供高效和安全的實現。Arkworks為開發者提供了必要的接口,以定制zk應用程序的軟件棧,而不必重新實現與其他現有庫的共性。

在Arkworks之前,創建一個新的zk應用程序的唯一方法是從頭開始構建一切。與定制的垂直整合工具相比,Arkworks-rs的主要優勢在于其靈活性水平,減少重復工程,以及減少審計工作。Arkworks組件之間合理的接口線允許升級的速度,可以使堆棧在zk技術快速創新的過程中保持相關性,而不會迫使團隊從頭開始重建一切。

螞蟻鏈隱私協作平臺AntChain FAIR引入基于零知識證明的可驗證計算技術:7月8日消息,在2023世界人工智能大會全球區塊鏈產業高峰論壇上,螞蟻鏈宣布隱私協作平臺AntChain FAIR進行全新架構升級,引入零知識證明(ZKP)為核心的可驗證計算技術,從可信數據流轉拓展到計算過程、數據屬性以及身份的可驗證。此外螞蟻鏈FAIR在可信計算架構中加入新型零知識證明虛擬機zkWASM,實現指令級別的可證明特性,可以依托 WASM 多語言生態將多種前端語言編寫的算法程序進行證明轉化,而無需關心底層復雜的算法細節,提升開發應用的友好性。

FAIR 是螞蟻鏈面向數據流轉推出的隱私協作平臺,綜合了區塊鏈和隱私計算的優勢,協作流程由智能合約驅動,數據流轉由隱私計算引擎來解決,并通過區塊鏈技術確權,登記和交易共識,可以解決數據流通過程中,數據共享與隱私保護之間的天然矛盾。目前 FAIR 已經在杭數交、貴數所等多家數據交易所得到應用。[2023/7/8 22:25:31]

通過模塊化實現靈活性

減少重復代碼

降低工程成本

減少審計/bug的表面積

無需重大重構即可升級任何組件

易于在快速發展的 zk 環境中試驗新原語

需要深入了解完整的軟件堆棧

如果沒有正確理解,太多的控制會導致腳槍

精細控制需要堆棧所有級別的專業知識。

Arkworks 確實提供了一些合理的默認設置。

為了創建一個關于某些計算的證明,首先這個計算必須以一個zkSNARK系統可以理解的形式來表達。一些特定領域的語言已經創建了編程語言,允許應用開發者以這種方式表達他們的計算。這些語言包括Aztec Noir、Starknet的Cairo、Circom、ZoKrates和Aleo的Leo等等。底層的證明系統和數學細節一般不會暴露給應用開發者。

zkApp的開發者必須熟練地用特定領域的語言編寫程序。其中一些語言看起來很像我們熟悉的編程語言,而其他語言可能相當難學。讓我們來分析一下其中的幾個。

Cairo - Starkware DSL對于在Starknet上構建應用程序是必要的。編譯成Cairo特有的匯編語言,可由Cairo zkVM解釋。

ZeroSync和Blockstream合作將從衛星廣播比特幣零知識證明:金色財經報道,瑞士非營利組織ZeroSync協會和比特幣基礎設施公司Blockstream表示,他們計劃從Blockstream的衛星廣播比特幣零知識證明 (zk-proofs) 。使用zk-proofs來驗證比特幣區塊鏈意味著節點不必下載比特幣鏈的當前500GB數據,因此可以在幾分之一秒而不是幾小時或幾天內同步。Blockstream的衛星網絡通過將區塊鏈廣播到整個地球,包括互聯網覆蓋不可靠的地區,提供對比特幣的免費全球訪問。ZeroSync預計第一次實驗廣播將在今年年底進行。

新成立的ZeroSync協會于周二成立,計劃通過使用零知識證明 (zk-proofs) 來幫助擴展比特幣,零知識證明是一種密碼技術,可以在不泄露信息本身的情況下證明信息的有效性。[2023/4/1 13:39:02]

ZoKrates - ZoKrates是一個滿足SNARK常見需求的工具包,包括一種編寫電路的高級語言。ZoKrates在曲線、證明方案和后端方面也有一些靈活性,允許開發者通過簡單的CLI參數進行熱交換。

Circom — Circom 是一種用于構建電路的專用語言。目前,它是生產電路的實際語言。該語言不是特別符合人體工程學,使開發者敏銳地意識到正在編寫電路。

Leo——Leo 被開發為 Aleo 區塊鏈的語言。Leo 有一些類似 Rust 的語法,專門用于區塊鏈內部的狀態轉換。

Noir – 受 Rust 啟發的語法。圍繞 IR 而不是語言本身構建,這意味著它可以有一個任意的前端。

任何想要在其應用程序中利用zk的獨特屬性的應用程序開發人員。

其中一些語言已經過數十億美元的實戰測試,如在 ZCash 和 Starknet 等鏈的流動。雖然我們將討論的一些項目還沒有完全準備好用于生產,但使用其中一種語言編寫電路是目前最好的策略,除非需要像 Arkworks 這樣的工具包提供的更精細的控制。

用戶不需要了解底層的zk細節

有一定的生產經驗,今天就可以使用

可在鏈上驗證

MolochDAO推出基于零知識證明的“隱私池”加密混合服務:3月7日消息,為以太坊基礎設施項目提供資金支持的去中心化自治組織MolochDAO推出基于零知識證明的“隱私池”加密混合服務,旨在保護鏈上交易時的隱私,同時還允許用戶證明他們遵守當地法規。

據悉,MolochDAO的隱私池(Privacy Pools)將利用零知識證明這一隱私保護技術,使用戶能夠證明他們正在將受制裁的錢包列入黑名單,同時無需透露他們是誰,也無需披露全部交易歷史。(The Defiant)[2023/3/7 12:46:33]

生態系統不可知

用戶需要學習一個新的DSL

圍繞這些語言的工具和支持都是孤立的

對底層證明堆棧幾乎沒有控制權(目前)。

zkEVM的主要目標是采取Ethereum狀態轉換,并使用簡潔的零知識正確性證明來證明其有效性。正如Vitalik的帖子中提到的,有許多方法可以做到這一點,并有微妙的差異和相應的權衡。

所有這些方法之間的主要技術區別在于,在語言棧中,計算究竟在哪里被轉換為可以在證明系統中使用的形式(算術化)。在一些zkEVM中,這發生在高級語言中(Solidity、Vyper、Yul),而其他方法則試圖將EVM一直證明到操作碼級別。這些方法之間的權衡在Vitalik的帖子里有深刻的論述,但我將用一句話來概括它。在堆棧中發生的轉換/算術化越低,性能損失就越大。

為虛擬機創建證明的主要挑戰是,電路的大小與每條執行指令的所有可能指令的大小成比例地增長。這是因為電路不知道在每個程序中會執行哪些指令,所以它需要支持所有的指令。

在通用電路中,每條執行的指令的成本與所有支持的指令之和成正比。

這在實踐中意味著,你要為最昂貴的指令支付(性能成本),即使你只是在執行最簡單的指令。這導致了通用性和性能之間的直接權衡--當你為通用性增加更多的指令時,你要為你證明的每一條指令付出代價!這就是通用電路的根本問題。

a16z:零知識證明保護去中心化和隱私,將取得一系列進展:4月15日消息,a16z發文《去中心化的速度:零知識證明的進步》表示,隨著區塊鏈吸引了數以百萬計的用戶,并且它們所承載的應用程序的復雜性不斷提高,圍繞隱私和可擴展性的兩個關鍵需求已經出現。需要識別的一個關鍵趨勢是,雖然正在為其中許多應用開發專用硬件,但也有一項運動正在優化消費者級硬件的算法,以保護去中心化和隱私。這一趨勢的一個特別好的例子是零知識證明。

我們目前正處于一個非常早期的時刻,零知識證明計劃將取得一系列進展。我們已經從零知識領域中極少數面向消費者的應用程序,發展到在很短的時間內為隱私和可擴展性提供應用程序和區塊鏈的整個生態系統。像這樣的新技術最令人興奮的一點是,很難預測另一面到底是什么樣子。[2022/4/15 14:27:35]

但隨著IVC(增量可驗證計算)等技術的新發展,這種限制可以通過將計算分成更小的塊來改善,每個塊都有專門的、更小的子電路。

今天的 zkEVM 實現使用不同的策略來減輕這個問題的影響......例如,zkSync 去掉了更昂貴的操作(主要是加密的預編譯,如哈希值,以及其他一些操作)

zkEVM的理想客戶是那些需要比L1以太坊上的交易便宜幾個數量級的智能合約應用。這些開發人員不一定有專業知識或帶寬來從頭開始編寫zk應用程序。因此,更喜歡用熟悉的更高級的語言來寫應用程序,如Solidity。

擴展Ethereum是目前zk技術最需要的應用。

zkEVM是一個以太坊擴展解決方案,可以無摩擦地緩解限制L1 dApp開發者的擁堵問題。

zkEVM的目標是支持一個盡可能接近當前以太坊開發的開發者體驗。完全支持Solidity意味著團隊不必建立和維護多個代碼庫。這在某種程度上是不切實際的,因為zkEVM需要交換一些兼容性,以便能夠在合理的時間內生成合理規模的證明。

zkSync 和 Scroll 之間的主要區別在于它們在堆棧中的何處/何時執行算術運算——也就是說,它們從普通 EVM 構造轉換為 SNARK 友好表示的位置。對于 zkSync,當他們將 YUL 字節碼轉換為他們自己的自定義 zk 指令集時,就會發生這種情況。對于Scroll來說,這發生在最后,當實際的執行跟蹤用實際的EVM操作碼生成時。

動態 | 全新零知識證明論文被IEEE學術會議收錄 或能抵抗量子計算機:由四位研究人員共同發表的論文透明多項式委托及其在零知識證明中的應用被第 41 屆電氣電子工程師學會安全隱私學術會議(IEEE S&P 2020)接受,其作者之一的Yupeng Zhang在推特上公開了該消息,他來自于德克薩斯州農工大學,另外三名作者來自于加州大學伯克利分校,分別是Jiaheng Zhang、Tiancheng Xie和Dawn Song (宋曉冬),宋曉冬教授也是區塊鏈隱私計算平臺Oasis Labs的創始人。據Yupeng Zhang介紹,該論文提出了一個全新且透明的零知識證明機制,可以提供非常快的驗證時間,也不需要可信設置(trusted setup)。論文中介紹到,該零知識證明機制僅使用了輕量級的加密算法比如抗碰撞的哈希函數,所以也可能是量子安全的。[2019/12/26]

因此,對于 zkSync,在生成 zk 字節碼之前,一切都與與 EVM 交互相同。對于 Scroll,在執行實際的字節碼之前,一切都是一樣的。這是一個微妙的差異,它以性能換取支持。例如,zkSync 不會像開箱即用的調試器那樣支持 EVM 字節碼工具,因為它是完全不同的字節碼。雖然 Scroll 很難從指令集中獲得良好的性能,但這并不是為 zk 設計的。這兩種策略各有利弊,最終有很多外生因素會影響它們的相對成功。

正如詳細討論的那樣,開發 zk 應用程序有無數不同的選擇,所有這些都有自己獨特的權衡。此圖表將幫助總結此決策矩陣,以便根據您的 zk 專業知識水平和性能需求,選擇最適合該工作的工具。這不是一個完整的列表,會隨著zk的發展更新。

zkLLVM 被設計為現有 LLVM 基礎設施的擴展,LLVM 基礎設施是一個行業標準工具鏈,支持許多高級語言,如 Rust、C、C++ 等。

想要證明某些計算的用戶只需用 C++ 實現該計算即可。zkLLVM 采用其修改后的 clang 編譯器(當前為 C++)支持的高級源代碼,并生成電路的一些中間表示。此時,電路已準備好進行驗證,但用戶可能希望根據一些動態輸入來驗證電路。為了處理動態輸入,zkLLVM 有一個稱為分配器的附加組件,它生成一個分配表,其中包含所有輸入和見證,這些輸入和見證已完全預處理并準備好與電路一起進行證明。

這兩個組件是生成證明所必需的。理論上,用戶可以自己生成證明,但由于這是一項有點專業化的計算任務,可能需要花錢請擁有硬件的其他人做這件事。對于這種交易對手發現機制,=nil;Foundation 還建立了一個“證明市場”,證明者競相為支付給他們的用戶證明計算。這種自由市場動態將導致證明者優化最有價值的證明任務。

由于每個要證明的計算任務都是獨一無二的,并且會生成不同的電路,因此證明者需要能夠處理的電路數量是無限的。這種強制的通用性使得單個電路的優化變得困難。證明市場的引入允許對市場認為有價值的電路進行專業化。如果沒有這個市場,由于這種自然的冷啟動問題,說服驗證者優化該電路將是一項挑戰。

另一個權衡是經典的抽象與控制。愿意采用這種易于使用的界面的用戶正在放棄對底層加密原語的控制。對于許多用戶來說,這是一個非常有效的權衡,因為讓密碼學專家為您做出這些決定通常更好。

用戶可以用熟悉的高級語言編寫代碼

所有的zk內部結構都被抽象出來,不受用戶影響

不依賴增加額外開銷的特定 "虛擬機 "電路。

每個程序都有一個不同的電路。難以優化。(證明市場部分解決了這個問題)

交換/升級內部zk庫并非易事(需要分叉)

zkVM 描述了所有 zk 虛擬機的超集,而 zkEVM 是一種特定類型的 zkVM,由于其在當今的流行,值得作為一個單獨的主題進行討論。除了定制的加密 VM 之外,還有一些其他項目正在致力于構建基于 ISA 的更通用的 zkVM。

系統可以證明不同的指令集架構 (ISA),例如新 VM 中的 RISC-V 或 WASM,而不是證明 EVM。致力于這些通用 zkVM 的兩個項目是 RISC Zero 和 zkWASM。

讓我們在這里深入了解一下RISC Zero,以證明這種策略是如何工作的,以及它的一些優勢/劣勢。

Risc Zero證明生成的高級架構RISC Zero能夠證明任何在RISC-V架構上執行的計算。RISC-V是一個開源的指令集架構(ISA)標準,已經越來越受歡迎。RISC(精簡指令集計算機)的理念是以最小的復雜性建立一個極其簡單的指令集。這意味著堆棧中較高層次的開發者在使用這種架構實現指令時最終會承擔更大的負荷,同時使硬件實現更加簡單。

這種理念也適用于一般的計算,ARM芯片一直在利用RISC風格的指令集,并開始主導移動芯片的市場。事實證明,更簡單的指令集也具有更大的能量和芯片面積效率。

這個類比對于生成zk證明的效率來說相當適用。正如前面所討論的,在證明zk的執行軌跡時,你要為軌跡中每一項的所有指令的成本之和買單,所以更簡單、更少的總指令是更好的。

從開發者的角度來看,使用RISC Zero來處理zk證明,很像使用AWS Lambda函數來處理后端服務器架構。開發人員通過簡單地編寫代碼與RISC Zero或AWS Lambda互動,服務處理所有后端復雜性。

對于RISC Zero,開發者編寫Rust或C++(最終是任何針對RISC-V的東西)。然后,系統接受編譯過程中產生的ELF文件,并將其作為虛擬機電路的輸入代碼。開發者只需調用證明,返回一個收據(包含執行跟蹤的zk證明)對象,任何人都可以從任何地方調用`驗證'。從開發者的角度來看,沒有必要了解zk是如何工作的,底層系統處理所有這些復雜的問題。

為了支持這樣一個通用接口,需要大量的開銷(在證明大小和生成速度方面)。

需要對證明生成技術進行重大改進,以實現對現有庫的廣泛支持

對于一些對區塊鏈應用或其他地方特別有用的基本和可重復使用的電路,團隊可能已經為你構建和優化了這些電路。你只需為你的特定用例提供輸入即可。例如,Merkle包容證明是加密貨幣應用中普遍需要的東西(空投清單、龍卷風現金等)。作為一個應用程序的開發者,你總是可以重新使用這些經過實戰檢驗的合約,只是在上面修改一些層,以創建一個獨特的應用程序。

例如,Tornado Cash 的電路可以重新用于私人空投應用程序或私人投票應用程序。Manta 和 Semaphore 正在構建一個完整的工具包,包括像這樣的通用電路小工具,可以在 Solidity 合約中使用,而無需了解或不了解底層的 zk moon 數學。

正如詳細討論的那樣,開發 zk 應用程序有無數不同的選擇,所有這些都有自己獨特的權衡。

此圖表將幫助總結此決策矩陣,以便根據您的 zk 專業知識水平和性能需求,選擇最適合該工作的工具。這不是一個完整的列表,會隨著zk的發展更新。

需要對整個證明堆棧進行精細控制

避免重建公共組件

嘗試證明方案、曲線和其他低級原語的不同組合

尋找高級證明接口的新手

Arkworks-rs

適用場景

想使用一些久經考驗的語言

需要最小的電路尺寸,愿意放棄抽象

需要對證明的后端進行精細控制(目前,可以為一些DSL交換后端)

Circom

Aztec Noir

Cairo

ZoKrates

Leo

不愿意承擔通用電路的開銷

想用熟悉的語言編寫電路

需要高度定制的電路

想要控制底層加密原語

需要一個已經高度優化的電路

可選用工具

nil zkLLVM

有一個已經在 EVM 上運行的 dApp

需要為用戶提供更便宜的交易

希望將部署到新鏈的工作量降到最低

只關心zk(壓縮)的簡潔性

需要完美的 EVM 等效性

需要 zk 的隱私屬性

有一個非區塊鏈用例

zksync2.0

Polygon zkEVM

Scroll

Starknet

想用高級語言編寫代碼

需要證明該執行的正確性

需要向驗證者隱藏該執行的一些輸入信息

幾乎沒有zk方面的專業知識

在延遲極低的環境中(它仍然很慢)。

有一個巨大的程序(目前)。

RISC Zero

zkWASM

有一個依賴常見的zk構建模塊的智能合約應用,比如Merkle包容。

對zk底層的東西幾乎沒有專業知識

有高度專業化的需求

用例不被預建電路所支持

Manta Network

Semaphore

zk 處于多項技術的前沿,構建它需要對數學、密碼學、計算機科學和硬件工程有深刻的理解。然而,隨著每天都有越來越多的抽象層可用,應用程序開發人員無需博士學位即可利用 zk 的強大功能。隨著時間的推移,通過對堆棧的所有級別進行優化,證明時間的限制會逐漸解除,我們可能會看到針對普通開發人員的更簡單的工具。

DAOrayaki

個人專欄

閱讀更多

金色早8點

金色財經

Odaily星球日報

歐科云鏈

Arcane Labs

深潮TechFlow

MarsBit

澎湃新聞

BTCStudy

鏈得得

Tags:ARKISC區塊鏈EROSTARK幣Disciplina區塊鏈通俗易懂的講解AZERO

屎幣
金色Web3.0日報 | 2月以太坊域名服務ENS注冊量創迄今最低月度記錄_NFT

DeFi數據 1、DeFi代幣總市值:518.55億美元 DeFi總市值及前十代幣 數據來源:coingecko2、過去24小時去中心化交易所的交易量26.

1900/1/1 0:00:00
萬字分析衍生品王位之爭:dYdX、GMX 與 SNX_DYDX

文章來源:Cipholio Ventures撰文:Scarlett He本研究將介紹三個目前在衍生品領域中的王者:dYdX、GMX 和 SNX.

1900/1/1 0:00:00
金色早報 | Mt.Gox最大債權人計劃保留歸還的比特幣_GATE

▌Mt.Gox最大債權人計劃保留歸還的比特幣金色財經報道,據知情人士透露,破產的加密貨幣交易所Mt.Gox的最大債權人Mt.Gox投資基金打算持有而不是出售將于今年支付給它的比特幣.

1900/1/1 0:00:00
盤點3月即將首發上線的8個熱門項目_加密貨幣

最近幾周,加密市場涌現出一批新項目,投資者參與熱情高漲。精選整理了三月即將首發上線的 8 個項目以供參考,涉及 AI、DEX、鏈游、NFT 等不同細分賽道.

1900/1/1 0:00:00
金色早報 | 比特幣開發人員正在開發保險庫功能_比特幣

▌比特幣開發人員正在開發保險庫功能,可阻止惡意黑客金色財經報道,比特幣開發人員James O'Beirne正在開發一項比特幣保險庫功能,當黑客試圖竊取他們的比特幣時提醒用戶.

1900/1/1 0:00:00
Yuga Labs 擁抱比特幣 NFT 說明了什么?_NFT

原文:Mike Belshe 圖為 YugaLabs 發行的 TwelveFold 系列 1 號 NFT,價值 15 萬美元現在正是比特幣發展最微妙的時候.

1900/1/1 0:00:00
ads