什麼是 zk-VM?

中級Jun 03, 2024
ZK是廣泛採用密碼學的橋樑。無論是在 Web2 還是 Web3 中,任何涉及零知識證明 (ZKP) 的東西都會創造巨大的價值。Lita 團隊撰寫了基礎科學文章,介紹了 ZK 和 zkVM 的基礎知識,對 zkVM 中的過程進行了高層次的概述,最後提出了一套評估 zkVM 的標準。
什麼是 zk-VM?

轉發原標題「零知識範式:第 1 部分 - 什麼是 zk-VM?

1. 零知識證明:入門

什麼是零知識證明(ZKP)?

如果你對零知識證明(ZKP)沒有先驗知識, 那麼《連線》雜誌的這段視頻 以互動的方式解釋了五個難度級別的概念,並附有易於理解的示例和演示。強烈推薦。

簡單來說,ZKP使一方(證明者)能夠向另一方(驗證者)證明他們知道某事,而無需透露該事物是什麼或任何其他資訊。更具體地說,ZKP 證明對一段數據的知識,或對計算結果的知識,而不透露數據或輸入。創建零知識證明的過程涉及一系列數學模型,以將計算結果轉換為一條原本無意義的信息,證明代碼的成功執行,以後可以驗證。

在某些情況下,驗證證明(在多輪代數轉換和密碼學之後構建)所需的工作量比運行計算所需的工作要少。這種安全性和可擴展性的獨特組合使零知識密碼學成為如此強大的工具。

zkSNARKs:零知識簡潔的非互動式知識論證

  • 依賴於初始(受信任或不受信任)設置過程來建立用於驗證的參數
  • 需要證明者和驗證者之間至少進行一次交互
  • 證明尺寸小,易於驗證
  • 基於 NARK 的證明被 zkSync、Scroll 和 Linea 等 rollup 使用

zkSTARKs:零知識可擴展的透明知識論證

  • 無需可信設置
  • 通過使用可公開驗證的隨機性來創建無需信任的可驗證系統,即生成可證明的隨機參數以證明和驗證,從而提供高透明度
  • 高度可擴展,因為它們可以快速生成和驗證證明(並非總是如此),即使底層見證(數據)的大小很大
  • 不需要證明者和驗證者之間的交互
  • 代價是 STARK 生成更大的證明,這可能比 SNARK 更難驗證
  • 證明比一些 zkSNARK 證明更難驗證,但不像其他一些證明那樣難以驗證
  • Starknet 以及 Lita、Risc Zero 和 Succinct Labs 等 zkVM 都使用 STARK

(注意:Succinct 的橋接使用 SNARK,但 SP1 是基於 STARK 的協定)

值得注意的是,所有 STARK 都是 SNARK,但並非所有 SNARK 都是 STARK。

為了更好地理解 SNARK 和 STARK,我們建議您閱讀這篇由 Axiom 的 Yan ZhangYi Sun 撰寫的 @krzhang/privacy-in-cryptocurrencies-zero-knowledge-and-zk-snarks-1-2-68ce1838fd9c“>文章系列,以及 Ventali Tan 的 github 中的這本文章集。

2. 什麼是zkVM?

虛擬機 (VM) 是執行程式的程式。在上下文中,zkVM是一個虛擬計算機,它被實現為一個用於生成零知識證明的系統,或者一個通用電路或工具,用於為任何程式或計算生成ZKP。

zkVMs消除了學習複雜的數學和密碼學來設計和編碼ZK的需要,並使任何開發人員能夠執行用他們喜歡的語言編寫的程式並生成ZKP,從而使零知識的集成和交互變得更加容易。從廣義上講,大多數對 zkVM 的引用都隱含地包括附加到執行程式的虛擬機的編譯器工具鏈和證明系統,而不僅僅是虛擬機本身。下面,我們總結了 zkVM 的主要元件及其功能:

zkVM的主要元件

每個元件的設計和實現都由證明(SNARK 或 STARK)和 zkVM 的指令集架構 (ISA) 的選擇決定。傳統上,ISA 指定 CPU 的功能(資料類型、寄存器、記憶體等)以及 CPU 在執行程式時執行的操作順序。在上下文中,ISA 確定可由 VM 解釋和執行的機器代碼。選擇 ISA 可以在 zkVM 的可存取性和可用性以及證明生成過程的速度和效率方面產生根本差異,並支撐任何 zkVM 的構建。

下面是 zkVM 及其元件的一些示例,供您參考。


zkVM 及其元件

現在,我們將重點關注每個元件之間的高層次交互,以提供一個框架來理解代數和加密過程以及 zkVM 的設計權衡,在後面的文章中。

3. 抽象的zkVM流程

下圖是 zkVM 的抽象、通用的流程圖,在程式通過 zkVM 的元件時,在程式的格式(輸入/輸出)之間進行拆分和分類。我們將在隨後的文章中深入研究每個過程。


zkVM 的常規流程

zkVM的流程一般如下:

  • 編譯器階段
  1. 編譯器首先將用傳統語言(C,C++,Rust,Solidity)編寫的程式編譯為機器代碼。機器代碼的格式由 ISA 的選擇決定。
  • VM 階段
  1. VM 執行機器代碼並生成執行跟蹤,這是基礎程式的一系列步驟。其格式由算術的選擇以及多項式約束集預先確定。常見的算術化方案包括 Groth16 中的 R1CS、halo2 中的 PLONKish 算術化以及 plonky2plonky3 中的 AIR。
  • 證明階段
  1. 證明者接收跟蹤並將其表示為一組受一組約束約束的多項式,實質上是通過數學映射事實將計算轉換為代數。

  2. 證明者使用多項式承諾方案 (PCS) 提交這些多項式。承諾方案是一種協定,它允許證明者創建某些數據 X 的指紋,這稱為對 X 的承諾,然後使用對 X 的承諾來證明有關 X 的事實而不洩露 X。PCS是指紋;計算約束的「預處理」簡潔版本。這允許證明者使用驗證者在以下步驟中提出的隨機值來證明有關計算的事實,現在以多項式方程表示。

  3. 證明者運行多項式互動式預言機證明 (PIOP),以表明提交的多項式表示滿足給定約束的執行跟蹤。PIOP 是一種互動式證明協定,由一系列輪次組成,其中證明者向多項式發送承諾,驗證者以隨機字段值回應,證明者在這些隨機值下提供多項式的評估,類似於使用隨機值“求解”多項式方程以概率說服驗證者。

  4. 應用菲亞特-沙米爾啟發式;證明者以非交互模式運行 PIOP,其中驗證者的行為僅限於發送偽隨機質詢點。在密碼學中,Fiat-Shamir啟發式將互動式知識證明轉換為數位簽名進行驗證。此步驟對證明進行加密,並使其知識為零。

  5. 證明者必須說服驗證者,就其發送給驗證者的多項式承諾而言,所主張的多項式求值是正確的。為此,證明者生成一個“評估”或“開放”證明,該證明由多項式承諾方案(指紋)提供。

  • 驗證者階段
  1. 驗證者通過遵循證明系統的驗證協定(使用約束或承諾)來檢查證明。驗證者根據證明的有效性接受或拒絕結果。

總而言之,對於給定的程式、給定的結果和給定的初始條件,zkVM證明存在一些輸入,導致程式在從給定的初始條件執行時產生給定的結果。我們可以將此語句與流程相結合,得出以下對 zkVM 的描述。

對於給定的 VM 程式和給定的輸出,zkVM 證明存在一些輸入,該輸入會導致給定程式在 VM 上執行時產生給定的輸出。

4. 評估 zkVM

我們應該根據什麼標準來評估 zkVM?換句話說,我們什麼時候應該說一個 zkVM 比另一個更好?說實話,答案取決於用例。

Lita 的市場研究表明,對於大多數商業用例來說,除了速度、效率和簡潔性之外,最重要的屬性要麼是速度,要麼是核心時間效率,具體取決於應用。一些應用對價格敏感,希望針對低能耗和低成本的證明使用進行優化;對於這些,核心時間效率可能是最重要的優化指標。其他應用程式,尤其是與金融或交易相關的應用程式,對延遲很敏感,並希望優化速度。

大多數公開的性能比較只關注速度,這很重要,但不是性能的整體衡量標準。還有一些重要的屬性可以衡量 zkVM 的可靠性;其中大多數都達不到生產就緒標準,即使對於市場領先的現有企業也是如此。

我們在此建議 zkVM 應根據以下標準進行評估,分為兩個子集:


評估 zk-VM 的主要標準

基線:衡量 zkVM 的可靠性

  • 正確性
  • 安全
  • 信任假設

性能:衡量 zkVM 的功能

  • 效率
  • 速度
  • 簡明扼要

4.1 基線:正確性、安全性和信任假設

在評估關鍵任務應用程式的 zkVM 時,應將正確性和安全性作為基準。需要有足夠的理由對正確性有信心,並且需要有足夠強的安全性。此外,對於應用程序來說,信任假設需要足夠弱。

如果沒有這些屬性,zkVM 對應用程式來說可能比無用更糟糕,因為它可能無法按指定方式執行,並使用戶暴露於駭客攻擊和漏洞利用之下。

i. 正確性

  • VM 必須按預期執行計算
  • 證明系統必須滿足其聲稱的安全屬性

正確性由三個屬性組成:

  • 健全性:證明系統是真實的,因此它所證明的一切都是真實的。驗證者拒絕虛假陳述的證據;只有當輸入實際產生計算結果時,它才接受該結果。
  • 完整性:證明系統完備,可以證明所有真實的陳述。如果證明者聲稱它可以證明計算的結果,它必須能夠產生驗證者接受的證明。
  • 零知識:擁有證明並不能比知道結果本身更能揭示計算的輸入

你可以有完整,沒有健全;如果證明系統證明瞭包括虛假在內的一切,顯然它是完整的,但不是健全的。相反,你可以有健全性而沒有完整性;如果證明系統證明一個程式存在,但不能證明計算,顯然它是合理的(畢竟,它永遠不會證明任何虛假),但並不完整。

ii. 安全

  • 與健全性、完整性和零知識的公差有關

在實踐中,所有三個正確性屬性都具有非零公差。這意味著所有證明都是正確性的統計概率,而不是絕對確定性。容差是指一個屬性失敗的最大可容忍概率。零容忍當然是理想的,但 zkVM 在實踐中並不能實現所有這些屬性的零容忍。完美的健全性和完整性似乎與簡潔性不相容,並且沒有已知的方法來實現完美的零知識。衡量安全性的常用方法是以安全位為單位,其中 1 / (2^n) 的容差稱為 n 位安全。安全性越高越好。

如果 zkVM 是完全正確的,這並不一定意味著它是可靠的。正確性僅意味著 zkVM 滿足其安全屬性,直至達到聲明的容差。這並不意味著聲稱的公差足夠低,可以上市。此外,如果 zkVM 足夠安全,這並不意味著它是正確的;安全性是指聲明的公差,而不是實際達到的公差。只有當 zkVM 既完全正確又足夠安全時,才能說 zkVM 在所聲稱的公差範圍內是可靠的。

iii. 信任假設

  • 假設證明者和驗證者的誠實性,以得出zkVM可靠運行的結論

當 zkVM 具有信任假設時,這通常採用可信設置過程的形式。ZK驗證系統的設置過程在使用驗證系統生成第一個驗證之前運行一次,以生成一些稱為「設置數據」的資訊。在受信任的設置過程中,一個或多個人生成一些隨機性,這些隨機性被合併到設置數據中,並且需要假設這些人中至少有一個人刪除了他們合併到設置數據中的隨機性。

在實踐中有兩種常見的信任假設模型。

誠實的多數信任假設指出,在一組 N 個個體中,超過 N/2 的個體在與區塊鏈常用的系統的某些特定交互中表現出完整性

“1/N”信任假設指出,在一組 N 個個體中,這些個體中至少有一個在與系統的某些特定交互中表現出完整性,這通常由基於 MPC 的工具和應用程式使用。

人們普遍認為,在其他條件相同的情況下,沒有信任假設的 zkVM 比需要信任假設的 zkVM 更安全。

4.2 zkVM三難困境:在zkVM中平衡速度、效率和簡潔性


zkVM 三難困境:速度、效率和簡潔

速度、效率和簡潔性都是滑動比例屬性。所有這些因素都影響了 zkVM 的最終使用者成本。在評估中應如何對它們進行加權取決於應用程式。通常,最快的解決方案不是最有效或最簡潔的;最簡潔的解決方案不是最快或最有效的;等等等等。在解釋它們的關係之前,讓我們先定義每個屬性

i. 速度

  • 證明者生成證明的速度有多快
  • 以掛鐘時間測量,即從計算開始到結束所經過的時間

應相對於特定的測試程式、輸入和系統定義和測量速度,以確保可以對其進行定量評估。此指標對於延遲敏感型應用程式至關重要,在這些應用程式中,必須及時提供證明,但會帶來更高的開銷和更大的證明大小

ii. 效率

  • 證明者消耗的資源,越少越好
  • 可以用用戶時間來近似,用戶時間是程式碼所消耗的計算機時間量

證明者消耗兩種資源:核心時間和空間。因此,效率可以細分為核心時間效率和空間效率。

內核時間效率:證明器在所有內核上運行的平均時間乘以運行證明器的內核數。對於單核驗證器來說,內核時間消耗和速度是一回事。對於在多核系統上以多核模式運行的多核證明器,內核時間消耗和速度不是一回事。如果一個程式在 5 秒內充分利用 5 個內核或線程,則為 25 秒的用戶時間和 5 秒的掛鐘時間。

空間效率:指使用的存儲容量,如RAM

用戶時間作為運行計算所消耗能量的代理很有趣。在幾乎所有時間都充分利用所有內核的情況下,CPU 的能耗應保持相對恆定。在這種情況下,受 CPU 限制的(主要是使用者模式的)代碼執行所花費的用戶時間應與該代碼執行消耗的瓦時數(即能量)大致成線性比例。

從任何具有足夠規模的證明操作的角度來看,節省能源消耗或計算資源的使用應該是有趣的,這些操作具有足夠的規模,以至於用於證明的能源帳單(或雲計算帳單)是相當大的運營成本。由於這些原因,用戶時間是一個有趣的指標。較低的證明成本使服務提供者能夠將較低的證明價格轉嫁給對成本敏感的客戶。

這兩種效率都與證明過程的能耗和證明過程使用的資本量有關,這與證明的財務成本有關。為了實現測量效率的定義,必須相對於一個或多個測試程式、每個程式的一個或多個測試輸入以及一個或多個測試系統進行定義。

iii. 簡明扼要

  • 生成的證明的大小和驗證它們的複雜性

簡潔性是三個不同指標的綜合,證明驗證的複雜性進一步細分:

  • 證明大小:證明的物理大小,通常以千位元組為單位
  • 證明驗證時間:驗證證明所需的持續時間。
  • 證明驗證空間:證明驗證期間的記憶體使用方式

驗證通常是單個內核操作,因此在這種情況下,速度和內核時間效率通常是等效的。與速度和效率一樣,操作簡潔性的定義需要指定測試程式、測試輸入和測試系統集。

定義了每個性能屬性后,我們現在說明瞭優化一個屬性相對於其他屬性的微弱影響。

  • 速度:快速的證明生成導致更大的證明大小,但證明驗證速度很慢。生成證明會消耗更多資源,從而降低效率
  • 簡明扼要:Prover需要更多時間來壓縮證明。但是證明驗證速度很快。證明越簡潔,計算開銷就越高
  • 效率:最大限度地減少資源使用會降低證明生成速度和證明的簡潔性

一般來說,針對一種品質進行優化意味著不針對另一種品質進行優化,因此需要進行多維分析,以根據具體情況選擇最佳解決方案。

在評估中對這些屬性進行加權的一個好方法是為每個屬性定義可接受的級別,然後確定哪些屬性最重要。最重要的屬性應該被優化,但要保持所有其他屬性的足夠好的水準。

下面我們總結了每個屬性及其主要考慮因素:


zkVM的評估屬性

5. 下一步是什麼?

通過上表,我們特此結束本系列的第一篇文章。在接下來的文章中,我們將基於上面顯示的流程圖來解釋 zkVM 中常見的算術和加密過程。

如果您覺得這有説明,請訪問我們的 網站gitbook 以瞭解有關我們在 Lita 構建的內容的更多資訊。

此外,請在 XDiscord 上關注我們以保持更新,這樣您就不會錯過該系列的其餘部分

免責聲明:

  1. 本文轉載自[lita]。 轉發原標題「零知識範式:第 1 部分 - 什麼是 zk-VM?所有版權歸原作者[Lita Team]所有。如果對本次轉載有異議,請聯繫 Gate Learn 團隊,他們會及時處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者的觀點和意見,不構成任何投資建議。
  3. 本文的其他語言翻譯由 Gate Learn 團隊完成。除非另有說明,否則禁止複製、分發或剽竊翻譯的文章。

什麼是 zk-VM?

中級Jun 03, 2024
ZK是廣泛採用密碼學的橋樑。無論是在 Web2 還是 Web3 中,任何涉及零知識證明 (ZKP) 的東西都會創造巨大的價值。Lita 團隊撰寫了基礎科學文章,介紹了 ZK 和 zkVM 的基礎知識,對 zkVM 中的過程進行了高層次的概述,最後提出了一套評估 zkVM 的標準。
什麼是 zk-VM?

轉發原標題「零知識範式:第 1 部分 - 什麼是 zk-VM?

1. 零知識證明:入門

什麼是零知識證明(ZKP)?

如果你對零知識證明(ZKP)沒有先驗知識, 那麼《連線》雜誌的這段視頻 以互動的方式解釋了五個難度級別的概念,並附有易於理解的示例和演示。強烈推薦。

簡單來說,ZKP使一方(證明者)能夠向另一方(驗證者)證明他們知道某事,而無需透露該事物是什麼或任何其他資訊。更具體地說,ZKP 證明對一段數據的知識,或對計算結果的知識,而不透露數據或輸入。創建零知識證明的過程涉及一系列數學模型,以將計算結果轉換為一條原本無意義的信息,證明代碼的成功執行,以後可以驗證。

在某些情況下,驗證證明(在多輪代數轉換和密碼學之後構建)所需的工作量比運行計算所需的工作要少。這種安全性和可擴展性的獨特組合使零知識密碼學成為如此強大的工具。

zkSNARKs:零知識簡潔的非互動式知識論證

  • 依賴於初始(受信任或不受信任)設置過程來建立用於驗證的參數
  • 需要證明者和驗證者之間至少進行一次交互
  • 證明尺寸小,易於驗證
  • 基於 NARK 的證明被 zkSync、Scroll 和 Linea 等 rollup 使用

zkSTARKs:零知識可擴展的透明知識論證

  • 無需可信設置
  • 通過使用可公開驗證的隨機性來創建無需信任的可驗證系統,即生成可證明的隨機參數以證明和驗證,從而提供高透明度
  • 高度可擴展,因為它們可以快速生成和驗證證明(並非總是如此),即使底層見證(數據)的大小很大
  • 不需要證明者和驗證者之間的交互
  • 代價是 STARK 生成更大的證明,這可能比 SNARK 更難驗證
  • 證明比一些 zkSNARK 證明更難驗證,但不像其他一些證明那樣難以驗證
  • Starknet 以及 Lita、Risc Zero 和 Succinct Labs 等 zkVM 都使用 STARK

(注意:Succinct 的橋接使用 SNARK,但 SP1 是基於 STARK 的協定)

值得注意的是,所有 STARK 都是 SNARK,但並非所有 SNARK 都是 STARK。

為了更好地理解 SNARK 和 STARK,我們建議您閱讀這篇由 Axiom 的 Yan ZhangYi Sun 撰寫的 @krzhang/privacy-in-cryptocurrencies-zero-knowledge-and-zk-snarks-1-2-68ce1838fd9c“>文章系列,以及 Ventali Tan 的 github 中的這本文章集。

2. 什麼是zkVM?

虛擬機 (VM) 是執行程式的程式。在上下文中,zkVM是一個虛擬計算機,它被實現為一個用於生成零知識證明的系統,或者一個通用電路或工具,用於為任何程式或計算生成ZKP。

zkVMs消除了學習複雜的數學和密碼學來設計和編碼ZK的需要,並使任何開發人員能夠執行用他們喜歡的語言編寫的程式並生成ZKP,從而使零知識的集成和交互變得更加容易。從廣義上講,大多數對 zkVM 的引用都隱含地包括附加到執行程式的虛擬機的編譯器工具鏈和證明系統,而不僅僅是虛擬機本身。下面,我們總結了 zkVM 的主要元件及其功能:

zkVM的主要元件

每個元件的設計和實現都由證明(SNARK 或 STARK)和 zkVM 的指令集架構 (ISA) 的選擇決定。傳統上,ISA 指定 CPU 的功能(資料類型、寄存器、記憶體等)以及 CPU 在執行程式時執行的操作順序。在上下文中,ISA 確定可由 VM 解釋和執行的機器代碼。選擇 ISA 可以在 zkVM 的可存取性和可用性以及證明生成過程的速度和效率方面產生根本差異,並支撐任何 zkVM 的構建。

下面是 zkVM 及其元件的一些示例,供您參考。


zkVM 及其元件

現在,我們將重點關注每個元件之間的高層次交互,以提供一個框架來理解代數和加密過程以及 zkVM 的設計權衡,在後面的文章中。

3. 抽象的zkVM流程

下圖是 zkVM 的抽象、通用的流程圖,在程式通過 zkVM 的元件時,在程式的格式(輸入/輸出)之間進行拆分和分類。我們將在隨後的文章中深入研究每個過程。


zkVM 的常規流程

zkVM的流程一般如下:

  • 編譯器階段
  1. 編譯器首先將用傳統語言(C,C++,Rust,Solidity)編寫的程式編譯為機器代碼。機器代碼的格式由 ISA 的選擇決定。
  • VM 階段
  1. VM 執行機器代碼並生成執行跟蹤,這是基礎程式的一系列步驟。其格式由算術的選擇以及多項式約束集預先確定。常見的算術化方案包括 Groth16 中的 R1CS、halo2 中的 PLONKish 算術化以及 plonky2plonky3 中的 AIR。
  • 證明階段
  1. 證明者接收跟蹤並將其表示為一組受一組約束約束的多項式,實質上是通過數學映射事實將計算轉換為代數。

  2. 證明者使用多項式承諾方案 (PCS) 提交這些多項式。承諾方案是一種協定,它允許證明者創建某些數據 X 的指紋,這稱為對 X 的承諾,然後使用對 X 的承諾來證明有關 X 的事實而不洩露 X。PCS是指紋;計算約束的「預處理」簡潔版本。這允許證明者使用驗證者在以下步驟中提出的隨機值來證明有關計算的事實,現在以多項式方程表示。

  3. 證明者運行多項式互動式預言機證明 (PIOP),以表明提交的多項式表示滿足給定約束的執行跟蹤。PIOP 是一種互動式證明協定,由一系列輪次組成,其中證明者向多項式發送承諾,驗證者以隨機字段值回應,證明者在這些隨機值下提供多項式的評估,類似於使用隨機值“求解”多項式方程以概率說服驗證者。

  4. 應用菲亞特-沙米爾啟發式;證明者以非交互模式運行 PIOP,其中驗證者的行為僅限於發送偽隨機質詢點。在密碼學中,Fiat-Shamir啟發式將互動式知識證明轉換為數位簽名進行驗證。此步驟對證明進行加密,並使其知識為零。

  5. 證明者必須說服驗證者,就其發送給驗證者的多項式承諾而言,所主張的多項式求值是正確的。為此,證明者生成一個“評估”或“開放”證明,該證明由多項式承諾方案(指紋)提供。

  • 驗證者階段
  1. 驗證者通過遵循證明系統的驗證協定(使用約束或承諾)來檢查證明。驗證者根據證明的有效性接受或拒絕結果。

總而言之,對於給定的程式、給定的結果和給定的初始條件,zkVM證明存在一些輸入,導致程式在從給定的初始條件執行時產生給定的結果。我們可以將此語句與流程相結合,得出以下對 zkVM 的描述。

對於給定的 VM 程式和給定的輸出,zkVM 證明存在一些輸入,該輸入會導致給定程式在 VM 上執行時產生給定的輸出。

4. 評估 zkVM

我們應該根據什麼標準來評估 zkVM?換句話說,我們什麼時候應該說一個 zkVM 比另一個更好?說實話,答案取決於用例。

Lita 的市場研究表明,對於大多數商業用例來說,除了速度、效率和簡潔性之外,最重要的屬性要麼是速度,要麼是核心時間效率,具體取決於應用。一些應用對價格敏感,希望針對低能耗和低成本的證明使用進行優化;對於這些,核心時間效率可能是最重要的優化指標。其他應用程式,尤其是與金融或交易相關的應用程式,對延遲很敏感,並希望優化速度。

大多數公開的性能比較只關注速度,這很重要,但不是性能的整體衡量標準。還有一些重要的屬性可以衡量 zkVM 的可靠性;其中大多數都達不到生產就緒標準,即使對於市場領先的現有企業也是如此。

我們在此建議 zkVM 應根據以下標準進行評估,分為兩個子集:


評估 zk-VM 的主要標準

基線:衡量 zkVM 的可靠性

  • 正確性
  • 安全
  • 信任假設

性能:衡量 zkVM 的功能

  • 效率
  • 速度
  • 簡明扼要

4.1 基線:正確性、安全性和信任假設

在評估關鍵任務應用程式的 zkVM 時,應將正確性和安全性作為基準。需要有足夠的理由對正確性有信心,並且需要有足夠強的安全性。此外,對於應用程序來說,信任假設需要足夠弱。

如果沒有這些屬性,zkVM 對應用程式來說可能比無用更糟糕,因為它可能無法按指定方式執行,並使用戶暴露於駭客攻擊和漏洞利用之下。

i. 正確性

  • VM 必須按預期執行計算
  • 證明系統必須滿足其聲稱的安全屬性

正確性由三個屬性組成:

  • 健全性:證明系統是真實的,因此它所證明的一切都是真實的。驗證者拒絕虛假陳述的證據;只有當輸入實際產生計算結果時,它才接受該結果。
  • 完整性:證明系統完備,可以證明所有真實的陳述。如果證明者聲稱它可以證明計算的結果,它必須能夠產生驗證者接受的證明。
  • 零知識:擁有證明並不能比知道結果本身更能揭示計算的輸入

你可以有完整,沒有健全;如果證明系統證明瞭包括虛假在內的一切,顯然它是完整的,但不是健全的。相反,你可以有健全性而沒有完整性;如果證明系統證明一個程式存在,但不能證明計算,顯然它是合理的(畢竟,它永遠不會證明任何虛假),但並不完整。

ii. 安全

  • 與健全性、完整性和零知識的公差有關

在實踐中,所有三個正確性屬性都具有非零公差。這意味著所有證明都是正確性的統計概率,而不是絕對確定性。容差是指一個屬性失敗的最大可容忍概率。零容忍當然是理想的,但 zkVM 在實踐中並不能實現所有這些屬性的零容忍。完美的健全性和完整性似乎與簡潔性不相容,並且沒有已知的方法來實現完美的零知識。衡量安全性的常用方法是以安全位為單位,其中 1 / (2^n) 的容差稱為 n 位安全。安全性越高越好。

如果 zkVM 是完全正確的,這並不一定意味著它是可靠的。正確性僅意味著 zkVM 滿足其安全屬性,直至達到聲明的容差。這並不意味著聲稱的公差足夠低,可以上市。此外,如果 zkVM 足夠安全,這並不意味著它是正確的;安全性是指聲明的公差,而不是實際達到的公差。只有當 zkVM 既完全正確又足夠安全時,才能說 zkVM 在所聲稱的公差範圍內是可靠的。

iii. 信任假設

  • 假設證明者和驗證者的誠實性,以得出zkVM可靠運行的結論

當 zkVM 具有信任假設時,這通常採用可信設置過程的形式。ZK驗證系統的設置過程在使用驗證系統生成第一個驗證之前運行一次,以生成一些稱為「設置數據」的資訊。在受信任的設置過程中,一個或多個人生成一些隨機性,這些隨機性被合併到設置數據中,並且需要假設這些人中至少有一個人刪除了他們合併到設置數據中的隨機性。

在實踐中有兩種常見的信任假設模型。

誠實的多數信任假設指出,在一組 N 個個體中,超過 N/2 的個體在與區塊鏈常用的系統的某些特定交互中表現出完整性

“1/N”信任假設指出,在一組 N 個個體中,這些個體中至少有一個在與系統的某些特定交互中表現出完整性,這通常由基於 MPC 的工具和應用程式使用。

人們普遍認為,在其他條件相同的情況下,沒有信任假設的 zkVM 比需要信任假設的 zkVM 更安全。

4.2 zkVM三難困境:在zkVM中平衡速度、效率和簡潔性


zkVM 三難困境:速度、效率和簡潔

速度、效率和簡潔性都是滑動比例屬性。所有這些因素都影響了 zkVM 的最終使用者成本。在評估中應如何對它們進行加權取決於應用程式。通常,最快的解決方案不是最有效或最簡潔的;最簡潔的解決方案不是最快或最有效的;等等等等。在解釋它們的關係之前,讓我們先定義每個屬性

i. 速度

  • 證明者生成證明的速度有多快
  • 以掛鐘時間測量,即從計算開始到結束所經過的時間

應相對於特定的測試程式、輸入和系統定義和測量速度,以確保可以對其進行定量評估。此指標對於延遲敏感型應用程式至關重要,在這些應用程式中,必須及時提供證明,但會帶來更高的開銷和更大的證明大小

ii. 效率

  • 證明者消耗的資源,越少越好
  • 可以用用戶時間來近似,用戶時間是程式碼所消耗的計算機時間量

證明者消耗兩種資源:核心時間和空間。因此,效率可以細分為核心時間效率和空間效率。

內核時間效率:證明器在所有內核上運行的平均時間乘以運行證明器的內核數。對於單核驗證器來說,內核時間消耗和速度是一回事。對於在多核系統上以多核模式運行的多核證明器,內核時間消耗和速度不是一回事。如果一個程式在 5 秒內充分利用 5 個內核或線程,則為 25 秒的用戶時間和 5 秒的掛鐘時間。

空間效率:指使用的存儲容量,如RAM

用戶時間作為運行計算所消耗能量的代理很有趣。在幾乎所有時間都充分利用所有內核的情況下,CPU 的能耗應保持相對恆定。在這種情況下,受 CPU 限制的(主要是使用者模式的)代碼執行所花費的用戶時間應與該代碼執行消耗的瓦時數(即能量)大致成線性比例。

從任何具有足夠規模的證明操作的角度來看,節省能源消耗或計算資源的使用應該是有趣的,這些操作具有足夠的規模,以至於用於證明的能源帳單(或雲計算帳單)是相當大的運營成本。由於這些原因,用戶時間是一個有趣的指標。較低的證明成本使服務提供者能夠將較低的證明價格轉嫁給對成本敏感的客戶。

這兩種效率都與證明過程的能耗和證明過程使用的資本量有關,這與證明的財務成本有關。為了實現測量效率的定義,必須相對於一個或多個測試程式、每個程式的一個或多個測試輸入以及一個或多個測試系統進行定義。

iii. 簡明扼要

  • 生成的證明的大小和驗證它們的複雜性

簡潔性是三個不同指標的綜合,證明驗證的複雜性進一步細分:

  • 證明大小:證明的物理大小,通常以千位元組為單位
  • 證明驗證時間:驗證證明所需的持續時間。
  • 證明驗證空間:證明驗證期間的記憶體使用方式

驗證通常是單個內核操作,因此在這種情況下,速度和內核時間效率通常是等效的。與速度和效率一樣,操作簡潔性的定義需要指定測試程式、測試輸入和測試系統集。

定義了每個性能屬性后,我們現在說明瞭優化一個屬性相對於其他屬性的微弱影響。

  • 速度:快速的證明生成導致更大的證明大小,但證明驗證速度很慢。生成證明會消耗更多資源,從而降低效率
  • 簡明扼要:Prover需要更多時間來壓縮證明。但是證明驗證速度很快。證明越簡潔,計算開銷就越高
  • 效率:最大限度地減少資源使用會降低證明生成速度和證明的簡潔性

一般來說,針對一種品質進行優化意味著不針對另一種品質進行優化,因此需要進行多維分析,以根據具體情況選擇最佳解決方案。

在評估中對這些屬性進行加權的一個好方法是為每個屬性定義可接受的級別,然後確定哪些屬性最重要。最重要的屬性應該被優化,但要保持所有其他屬性的足夠好的水準。

下面我們總結了每個屬性及其主要考慮因素:


zkVM的評估屬性

5. 下一步是什麼?

通過上表,我們特此結束本系列的第一篇文章。在接下來的文章中,我們將基於上面顯示的流程圖來解釋 zkVM 中常見的算術和加密過程。

如果您覺得這有説明,請訪問我們的 網站gitbook 以瞭解有關我們在 Lita 構建的內容的更多資訊。

此外,請在 XDiscord 上關注我們以保持更新,這樣您就不會錯過該系列的其餘部分

免責聲明:

  1. 本文轉載自[lita]。 轉發原標題「零知識範式:第 1 部分 - 什麼是 zk-VM?所有版權歸原作者[Lita Team]所有。如果對本次轉載有異議,請聯繫 Gate Learn 團隊,他們會及時處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者的觀點和意見,不構成任何投資建議。
  3. 本文的其他語言翻譯由 Gate Learn 團隊完成。除非另有說明,否則禁止複製、分發或剽竊翻譯的文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!