計畫深入優化以太坊協議,旨在提升網路效率與永續性。它不僅可能突破技術瓶頸,更有望革新區塊鏈安全與隱私。

譯文:以太坊協議的可能未來,第 6 部分:揮霍(vitalik.eth)

作者: vitalik.eth

編譯: Yewlne,LXDAO

封面: Galaxy

  譯者前言

在區塊鏈技術快速發展的今天,系統架構的複雜度也逐漸提升,為開發者和使用者都帶來了新的挑戰。「The Splurge」計畫強調透過優化和完善現有協議細節,來提升網路的效率和永續性。這些前沿技術的探索,不僅有望解決當前的技術瓶頸,還可能徹底改變區塊鏈的安全和隱私機制,使之更接近「無信任」的理想狀態。希望這次的翻譯能幫助更多中文讀者了解以太坊協議的最新進展,激發大家對這些重要但常被忽略的主題的興趣。

本文概述

本文共約 10,000 字,有 5 個部分,閱讀完本文預計需要 55 分鐘。

  •  EVM 改進
  •   帳戶抽象
  •  EIP-1559 改進
  •   可驗證延遲函數(VDFs)
  •   混淆與一次性簽名:密碼學的未來

  正文內容

《以太坊協議可能的未來(六):The Splurge》

特別鳴謝 Justin Drake 和 Tim Beiko 的回饋與評審。

有些東西很難歸類在單一類別。以太坊協議設計中存在許多 “小細節”,它們對以太坊的成功至關重要,但難以妥善歸類到更大的子類別。在實踐中,其中約一半內容涉及各種形式的 EVM 改進,其餘則包含各種細分主題。這就是"Splurge" 升級的目標所在。

 The Splurge, 2023 年路線圖

 The Splurge:關鍵目標

  •   將 EVM 引導至高效能且穩定的「終局狀態」。
  • 將帳戶抽象化引入協定層,讓所有使用者都能受益於更安全、更便利的帳戶。
  • 優化交易費用經濟模型,在提升可擴展性的同時降低風險。
  • 探索先進的密碼學技術,從長遠來看可以使以太坊變得更好。

本章內容

  •  EVM 改進
  •   帳戶抽象
  •  EIP-1559 改進
  •   可驗證延遲函數(VDFs)
  •   混淆與一次性簽名:密碼學的未來

 EVM 改進

  它解決什麼問題?

目前的 EVM 難以進行靜態分析,這使得實現高效部署、進行程式碼形式化驗證以及後續擴展變得困難。另外,由於其效率很低,除非透過預編譯明確支持,否則很難實現多種高階密碼運算。

  它是什麼,它是如何運作的?

在目前的 EVM 改進路線圖中,首要步驟就是規劃在下次硬分叉中引入的 EVM 物件格式(EOF)。 EOF 包含了一系列 EIP 提案,這些提案為 EVM 定義了一個新版本的程式碼格式,具有以下幾個關鍵特性:

  • 實現了程式碼(可執行但無法從 EVM 讀取)與資料(可讀取但不可執行)的分離
  • 停用動態跳轉機制,僅保留靜態跳轉
  • EVM 程式碼將無法取得 gas 相關信息
  • 新增了明確的子程序呼叫機制
 EOF 的程式碼結構

舊版的合約將可以繼續使用且允許創建,不過未來可能會逐步淘汰舊版合約 (甚至可能強制將它們轉換為 EOF 格式)。新版的合約則可以享受 EOF 帶來的效率提升:一方面可以透過子程式特性略微減少字節碼體積,另一方面也能從 EOF 獨有的新特性和更低的 gas 消耗中獲益。

EOF 引入後,使得後續升級變得更加容易。目前發展最成熟的是 EVM 模組化算術擴充 (EVM-MAX)。 EVM-MAX 專門為模運算設計了一組新的運算操作,並將它們放在一個新的記憶體空間中,其他指令無法存取該空間。這使得系統可以採用一些最佳化演算法,例如蒙哥馬利乘法。

一個較新的構思是將 EVM-MAX 與單指令多資料(SIMD)特性結合。 SIMD 這個想法在以太坊社群已經存在很久了,最早可以追溯到 Greg Colvin 提出的 EIP-616。 SIMD 可用於加速各類密碼學計算,包括雜湊函數、基於 32 位元的各種 STARK 證明(32-bit STARKs)和格密碼學(lattice-based cryptography)。 EVM-MAX 結合 SIMD 這兩項擴充功能能很好地滿足 EVM 在效能方面的提升需求。

這個組合 EIP 的初步設計將以 EIP-6690 為基礎,並如下擴充:

  • 支援以下類型的模數:(i)任意奇數,或(ii)2 的 768 次方及以下的 2 的冪。
  • 為每個 EVMMAX 指令(add、sub、mul)增加新版本。這個版本不是接收 3 個即時變數 x、y、z,而是接收 7 個即時變數:x_start、x_skip、y_start、y_skip、z_start、z_skip、count。

用 Python 程式碼表示,這些指令的功能等同於:

for i in range(count):    mem[z_start + z_skip * count] = op(        mem[x_start + x_skip * count],        mem[y_start + y_skip * count]    )

  除非在實際實施中,它將被並行處理。

  • 針對模數為 2 的冪的情況,將計畫加入 XOR、AND、OR、NOT 和 SHIFT(支援循環和非循環)等運算指令。另外也會新增 ISZERO 指令,用於將運算結果推送到 EVM 主堆疊。

這些功能足以支援實現橢圓曲線密碼學、小域密碼學(如 Poseidon、circle STARKs)、傳統雜湊函數(如 SHA256、KECCAK、BLAKE)以及格密碼學(Lattice-based cryptography)。

其他 EVM 升級方案也有可能,但目前關注度還不高。

  與現在研究有什麼關聯?

  • EOF: https://evmobjectformat.org/
  • EVM-MAX: https://eips.ethereum.org/EIPS/eip-6690
  • SIMD: https://eips.ethereum.org/EIPS/eip-616

  還有什麼要做,以及需要權衡什麼?

目前計劃在下一次硬分叉中引入 EOF。儘管移除該功能仍有可能——先前也發生在硬分叉前最後一刻移除特性的情況——但這將面臨許多阻力。如果移除 EOF,意味著後續所有 EVM 升級都需要在不具備 EOF 的情況下進行,雖然可行但會帶來更多技術挑戰。

EVM 的主要取捨在於 L1 複雜度與基礎架構複雜度之間的平衡。 EOF 將會為 EVM 實作增加顯著數量的程式碼,且靜態程式碼檢查也非常複雜。作為回報,我們能獲得高階語言的簡化、EVM 實現的簡化以及其他收益。可以說,任何優先考慮以太坊 L1 持續改善的路線圖都應該包含 EOF 並以此為基礎。

其中一項重要的工作是實現類似於 EVM-MAX 結合 SIMD 這樣的功能,並對各種密碼學操作進行 gas 消耗的基準測試。

  它與路線圖的其他部分如何互動?

L1 對 EVM 的調整能夠促進 L2 作出相應改變。如果其中一層單獨調整而另一層不變,就會引發一些相容性問題,這會帶來其他負面影響。此外,EVM-MAX 結合 SIMD 功能可降低多種證明系統的 gas 成本,進而提升 L2 層的執行效率。這也方便移除更多預編譯模組,因為可以用 EVM 程式碼取代這些模組,且基本上不會對效率造成太大的影響。

  帳戶抽象

  解決了什麼問題?

目前,交易僅支援一種驗證方式:ECDSA 簽署。最初,帳戶抽象化旨在突破此限制,使帳戶驗證邏輯可以使用任意 EVM 程式碼實現。這將能夠支援多種應用場景:

  •   遷移至抗量子密碼學
  •   輪換舊密鑰(這是普遍認可的安全實踐)
  •   多簽錢包和社交恢復錢包。
  • 對低價值操作使用單一密鑰,對高價值操作使用其他密鑰(或密鑰組)
  • 實現無中繼器的隱私協議,顯著降低系統複雜度並消除核心依賴點

自 2015 年帳戶抽象概念提出以來,其目標範圍已經擴大,增加了許多 “便利性目標”,例如允許一個沒有 ETH 但持有特定 ERC20 代幣的帳戶直接使用該 ERC20 代幣支付 gas 費用。下圖總結了這些目標:

這裡的 MPC 指的是多方計算( multi-party computation ):這是一種已有 40 年曆史的技術,它將密鑰分片存儲到多個設備中,並通過密碼學方法在不直接合併密鑰分片的情況下產生簽名。

EIP-7702 是計劃在下一次硬分叉中引入的提案。 EIP-7702 的出現源於人們越來越認識到,有必要為所有用戶(包括 EOA 用戶)提供帳戶抽象的便利功能,以在短期內改善所有人的用戶體驗,並避免生態系統分裂為兩個獨立的系統。這項工作始於 EIP-3074,最終形成了 EIP-7702。 EIP-7702 使帳戶抽象化的「便利功能」立即可供所有使用者使用,包括 EOA(外部擁有帳戶,即由 ECDSA 簽名控制的帳戶)。

從圖表中可以看出,雖然某些挑戰(特別是「便利性」方面的挑戰可以透過多方計算協議或 EIP-7702 等漸進式技術來解決,但推動最初帳戶抽象提案的大部分安全目標,只能透過回歸並解決最初的問題來實現:即允許智慧合約程式碼直接控制交易驗證過程。

  這是什麼,它是如何工作的?

從本質上說,帳戶抽象的核心很簡單:允許智能合約,而不僅僅是外部擁有帳戶(EOA),來發起交易。所有的複雜性都源自於如何以一種既有助於維護去中心化網絡,又能防範拒絕服務(DoS)攻擊的方式來實現這一點。

一個能夠闡明這項關鍵挑戰的典型例子是多重無效化問題(Multi-invalidation Problem):

如果有 1000 個帳戶的驗證函數都依賴某個共享的值 S,並且在當前 S 值下,記憶體池中存在許多有效的交易,那麼一筆改變 S 值的交易可能會使記憶體池中的所有其他交易失效。這使得攻擊者可以以極低的成本向記憶體池發送垃圾交易,佔用網路節點的資源。

多年來,為了在擴展功能的同時限制拒絕服務(DoS)攻擊的風險,人們付出了大量的努力,最終,有一種解決方案使大家就如何實現 “理想的帳戶抽象” 達成了共識:ERC-4337 。

ERC-4337 的工作原理是將使用者操作的處理分為兩個階段:驗證執行。先處理所有的驗證,然後再處理所有的執行。在記憶體池中,只有當使用者操作的驗證階段僅涉及其自身帳戶,且不讀取環境變數時,該操作才會被接受。這可以防止多重無效化攻擊。同時,對驗證步驟也設定了嚴格的 gas 限制。

ERC-4337 最初被設計為一個協議外的標準(ERC),這是因為當時以太坊客戶端開發人員正專注於升級「The Merge」工作,沒有多餘的精力開發其他功能。這就是為什麼 ERC-4337 使用了名為使用者操作(User Operations)的自訂對象,而不是常規交易。然而,最近我們意識到,有必要將其部分內容納入協議中。主要有兩個原因:

  • EntryPoint 作為合約所固有的效率低下問題:每個捆綁作業需要額外約 10 萬 gas,每個使用者操作還需要額外數千 gas。
  • 需要確保以太坊的特性,例如由包含清單(inclusion lists)提供的包含保證,能夠適用於帳戶抽象使用者。

  此外,ERC-4337 還擴展了兩個功能:

  • 支付主體(Paymasters):此功能允許一個帳戶代表另一個帳戶支付費用。這違反了驗證階段只能存取發送帳戶本身的規則,因此引入了特殊處理機制來支援支付主體機制並確保其安全性。
  • 聚合器(Aggregators):此功能支援簽章聚合,例如 BLS 聚合或基於 SNARK 的聚合。這對於在 Rollups 上實現最高水準的資料效率是必不可少的。

  有哪些現有的研究資料?

  • 帳號抽象歷史演進的演講:https://www.youtube.com/watch?v=iLf8qpOmxQc
  • ERC-4337:https://eips.ethereum.org/EIPS/eip-4337
  • EIP-7702:https://eips.ethereum.org/EIPS/eip-7702
  • BLSWallet 程式碼(聚合功能):https://github.com/getwax/bls-wallet
  • EIP-7562(寫入協議的帳戶抽象):https://eips.ethereum.org/EIPS/eip-7562
  • EIP-7701(基於 EOF 的寫入協議帳戶抽象):https://eips.ethereum.org/EIPS/eip-7701

  還有什麼需要做,有哪些權衡?

剩餘的主要問題是確定如何將帳戶抽象化完全納入協議中。最近一個備受關注的帳戶抽象寫入協議的提案是 EIP-7701,它在 EOF 的基礎上實現了帳戶抽象。帳戶可以擁有一個獨立的驗證代碼段,如果帳戶設定了對應代碼段,那麼在該帳戶發起的交易的驗證步驟中就會執行該代碼。

 EIP-7701 帳戶的 EOF 代碼結構

有趣的是,這種方法清楚地展現了兩種等價的原生帳戶抽象實現方式:

  1.   將 EIP-4337 納入協定中
  2. 一種新型的 EOA,其簽章演算法由 EVM 程式碼執行

如果我們一開始就對驗證過程中可執行程式碼的複雜性設定嚴格限制——不允許存取外部狀態,甚至最初設定的 gas 限制低到無法用於抗量子或隱私保護應用程式——那麼這種方法的安全性就非常明確:它只是用耗時相近的 EVM 程式碼執行替代 ECDSA 驗證。然而,隨著時間的推移,我們需要放寬這些限制,因為允許隱私保護應用無需中繼器即可運行,以及實現抗量子能力,都非常重要。為此,我們確實需要找到更靈活的方式來應對拒絕服務(DoS)風險,而不是要求驗證步驟極度簡化。

主要的權衡似乎在於:是更早將一個較少人滿意的方案寫入協議,還是等待更長時間,可能獲得一個更理想的解決方案。理想的方法可能是某種混合方案。一種混合方案是更快地將某些用例納入協議,留出更多時間來解決其他問題。另一種方法是先在 L2 上率先部署更激進的帳戶抽象版本。然而,這面臨的挑戰是,要讓 L2 團隊願意採納一個提案,他們需要確信 L1 和其他 L2 日後會採用相容的方案。

另一個我們需要明確考慮的應用是金鑰庫帳戶,它在 L1 或專用的 L2 上儲存帳戶相關狀態,但可以在 L1 和任何相容的 L2 上使用。要有效地實現這一點,可能需要 L2 支援 L1SLOAD 或 REMOTESTATICCALL 等指令,不過這也要求 L2 上的帳戶抽象實作能夠支援它。

  它如何與路線圖的其他部分互動?

包含清單(Inclusion Lists)需要支援帳戶抽象交易。實際上,包含列表和去中心化記憶體池的需求最終非常相似,儘管包含列表有更多的靈活性。此外,理想情況下,L1 和 L2 上的帳戶抽象實作應盡可能保持一致。如果我們預期未來大多數使用者將使用 keystore Rollups,帳戶抽象設計就應該考慮到這一點。

 EIP-1559 改進

  它解決了什麼問題?

EIP-1559 於 2021 年在以太坊上實施,顯著改善了平均區塊包含時間。

然而,目前 EIP-1559 的實作有幾個不完善之處:

  • 公式略有缺陷:它的目標是填滿約 50-53% 的區塊(取決於方差),而不是 50%(這與數學家所說的 “算術-幾何均值不等式” 有關)
  • 在極端情況下,調整速度不夠快。

後來用於資料區塊(blobs)的公式(EIP-4844)在設計時就明確考慮了解決第一個問題,整體上也更加簡潔。無論是 EIP-1559 本身還是 EIP-4844,都沒有嘗試解決第二個問題。因此,目前的狀況是一個令人困惑的過渡狀態,涉及兩種不同的機制,甚至有理由認為,隨著時間的推移,這兩種機制都需要改進。

此外,以太坊的資源定價還有其他一些區別於 EIP-1559 的弱點,但可以透過調整 EIP-1559 來解決這些問題。其中一個主要問題是平均情況與最壞情況之間的差異:以太坊的資源價格必須設定為能夠處理最壞情況(即一個區塊的所有 gas 消耗會佔用一個資源),但平均使用量遠低於此,這導致了效率低下。

  它是什麼,它是如何運作的?

解決這些效率低下問題的方案是多維 Gas:為不同的資源設定獨立的價格和限制。從技術上講,這個概念獨立於 EIP-1559,但 EIP-1559 使其更易於實現:在沒有 EIP-1559 的情況下,面對多種資源約束,最優地打包區塊是一個複雜的多維背包問題(multidimensional knapsack problem)。而有了 EIP-1559,大多數區塊在任何資源上都未達到滿負荷,因此簡單的「接受任何支付足夠費用的交易」演算法即可滿足需求。

我們現在已經有了執行和資料塊(blobs)的多維 gas;原則上,我們可以增加更多維度:呼叫資料(calldata)、狀態讀寫狀態大小擴展

EIP-7706 為 calldata 引進了一個新的 gas 維度。同時,它透過讓三種類型的 gas 都遵循一個(EIP-4844 風格的)框架來簡化多維 gas 機制,從而也解決了 EIP-1559 的數學缺陷。

EIP-7623 是一個更為精細的解決方案,用於應對平均情況與最壞情況的資源問題。它在不引入全新維度的情況下,更嚴格地限定了最大呼叫資料(calldata)。

更進一步的方向是解決更新速率問題,找到一個更快速的基礎費用(base fee)演算法,同時保持 EIP-4844 機制引入的關鍵不變量(即:從長遠來看,平均使用量會更精確地接近目標值)。

  有哪些現有的研究資料?

  • EIP-1559 常見問題:https://notes.ethereum.org/@vbuterin/eip-1559-faq
  • EIP-1559 實證分析:https://dl.acm.org/doi/10.1145/3548606.3559341
  • 關於快速調整的改進提案:https://kclpure.kcl.ac.uk/ws/portalfiles/portal/180741021/Transaction_Fees_on_a_Honeymoon_Ethereums_EIP_1559_One_Month_Later.pdf
  • EIP-4844 常見問題解答,基礎費用機制部分:https://notes.ethereum.org/@vbuterin/proto_danksharding_faq#How-does-the-exponential-EIP-1559-blob-fee-adjustment-mechanism-work
  • EIP-7706:https://eips.ethereum.org/EIPS/eip-7706
  • EIP-7623:https://eips.ethereum.org/EIPS/eip-7623
  • 多維 Gas:https://vitalik.eth.limo/general/2024/05/09/multidim.html

  還有什麼需要做,有哪些權衡?

  多維 Gas 有兩個主要的權衡:

  •   增加了協議的複雜性
  •   增加了填充區塊容量所需的最優演算法的複雜性

對於呼叫資料(calldata),協定複雜度是一個相對較小的問題,但對於位於 EVM 內部的 gas 維度(如儲存讀寫)而言,這個問題就更為嚴重。問題在於,設定 gas 限制的不僅僅是用戶:當合約調用其他合約時,它們也會設定限制。而目前,它們設定限制的方式仍是單一維度的。

消除這個問題的一個簡單方法是僅在 EOF 內部提供多維 gas,因為 EOF 不允許合約在呼叫其他合約時設定 gas 限制。非 EOF 合約在進行儲存操作時,必須為所有類型的 gas 支付費用(例如,如果一次 SLOAD 操作消耗了區塊儲存存取 gas 限制的 0.03%,那麼非 EOF 用戶也會被收取執行 gas 限制的 0.03%)。

對多維 Gas 進行更多的研究,將非常有助於理解這些權衡並找到理想的平衡。

  它如何與路線圖的其他部分互動?

多維 Gas 的成功實現可以大幅減少某些「最壞情況」的資源使用,從而減輕為了支援例如基於 STARK 的雜湊樹而進行效能最佳化的壓力。對狀態大小成長設定明確的目標,可以讓客戶端開發者更容易規劃和估計他們未來的需求。

如上所述,由於 EOF 具有 gas 不可觀測性特徵,它使得更高級版本的多維 Gas 更容易實現。

  可驗證延遲函數(VDFs)

  它解決了什麼問題?

目前,以太坊使用基於 RANDAO 的隨機數來選擇提議者。 RANDAO 隨機數的工作原理是要求每個提議者揭示他們預先承諾的秘密,並將揭示的每個秘密混合到隨機數中。因此,每個提議者都有「1 比特的操縱能力」:他們可以透過不出塊(需要付出代價)來改變隨機數。這對於選擇提議者來說尚可接受,因為放棄一次機會以獲得兩個新的提議機會的情況非常罕見。但對於需要隨機數的鏈上應用程式來說,這是不可接受的。理想情況下,我們需要找到一個更穩健的隨機數來源。

  它是什麼, 它是如何運作的?

可驗證延遲函數(VDF)是一種只能順序計算、無法透過並行化加速的函數。一個簡單的例子是重複雜湊計算:執行 for i in range(10**9): x = hash(x)。輸出結果,連同證明其正確性的 SNARK 證明,可以用作隨機值。其想法是,輸入是基於在時間 T 可獲得的資訊選擇,而輸出在時間 T 時尚未知曉:只有當某人完全運行計算後的一段時間後才可用。由於任何人都可以執行此計算,無法扣留結果,因此也無法操縱結果。

可驗證延遲函數的主要風險是意外優化:有人找到了一種比預期快得多的運行該函數的方法,使他們能夠根據未來的輸出,操縱他們在時間 T 時所揭示的資訊。意外優化可能以兩種方式發生:

  • 硬體加速:有人製造了一種 ASIC,可以比現有硬體更快地運行運算循環。
  • 意外並行化:有人找到了一種透過並行化更快運行該函數的方法,即使這樣做需要消耗超過 100 倍的資源。

創建一個成功的 VDF 的任務在於避免上述兩個問題,同時確效率足夠實用(例如,基於哈希的方法存在一個問題,即實時對哈希進行 SNARK 證明需要極高的硬體要求)。硬體加速問題通常透過讓公共物品參與者自行創建並分發接近最優的 VDF 專用 ASIC 來解決。

  有哪些現有的研究資料?

  • VDF 研究網址:https://vdfresearch.org/
  • 關於以太坊中使用的 VDFs 攻擊的思考,2018 年:https://ethresear.ch/t/verifiable-delay-functions-and-attacks/2365
  • MinRoot 的攻擊研究(VDF 的一個提議):https://inria.hal.science/hal-04320126/file/minrootanalysis2023.pdf

  還有什麼需要做,有哪些權衡?

目前,還沒有一個在各方面都能完全滿足以太坊研究人員要求的 VDF 構造。要找到這樣一個函數還需要更多的工作。如果我們有了這樣的函數,主要的權衡就是是否將其納入協議:這只是一個在功能性與協議複雜性和安全風險之間的簡單取捨。如果我們認為一個 VDF 是安全的,但最終被證明是不安全的,那麼根據其實現方式,安全性會降級到 RANDAO 假設(每個攻擊者有 1 個位元的操縱能力)或略差的程度。因此,即使 VDF 有缺陷,也不會破壞協議本身,儘管它會破壞那些嚴重依賴它的應用程式或任何新的協定特性。

  它如何與路線圖的其他部分互動?

VDF 是以太坊協議中一個相對獨立的組成部分,除了提高提議者選擇的安全性外,它還可用於:(i)依賴隨機數的鏈上應用程序,以及潛在的(ii)加密內存池。然而,基於 VDF 的加密記憶體池的實現仍然依賴尚未實現的其他密碼學突破。

需要注意的是,考慮到硬體的不確定性,VDF 輸出的產生時間與其被需要的時間之間可能會有一些「延遲」。這意味著資訊可能會在提前幾個區塊時就被獲取。這可能是一個可以接受的代價,但在設計諸如最終確定性或委員會選擇機制時,應將其考慮在內。

  混淆與一次性簽名:密碼學的未來

  它解決了什麼問題?

Nick Szabo 最著名的文章之一是 1997 年發表的一篇關於「上帝協議」的文章。在這篇文章中,他指出多方應用程式經常依賴「可信任第三方」來管理互動。在他看來,密碼學的作用是創建一個模擬的可信任第三方來完成相同的工作,而無需實際信任任何特定參與者。

「數學上值得信賴的協議」由 Nick Szabo 繪製

到目前為止,我們只能部分地接近這個理想。如果我們只需要一個透明的虛擬計算機,其中數據和計算無法被關閉、審查或篡改,而隱私不是目標,那麼區塊鏈可以實現這一點,儘管其可擴展性有限。如果隱私確實是目標,那麼直到最近,我們只能為特定應用創建一些專用協定:用於基本認證的數位簽章、用於原始形式的匿名性的環簽章和可連結環簽章、在特定可信任發行者假設下實現更便捷加密的基於身分的加密、用於 Chaumian 電子現金的盲簽等。這種方法需要為每個新應用投入大量工作。

在 2010 年代,我們首次看到了一種基於可程式密碼學的全新且更強大的方法。我們無需為每個新應用程式開發專用協議,而是可以使用新型強大的協議——特別是 ZK-SNARKs,為任意程式添加密碼保證。 ZK-SNARKs 讓使用者能夠證明他們所持有資料的任意陳述,且這種證明(i)易於驗證,(ii)除陳述本身外不會洩露任何資料。這在隱私性和可擴展性方面都取得了突破性進展,我將其比作人工智慧領域中 Transformer 的影響力。數千年的人力投入到特定應用的工作中,突然被一個通用解決方案所取代,這個方案可以即插即用地解決大量意想不到的問題。

但 ZK-SNARKs 只是三大超級強大的通用型基礎協定之一。這些協議如此強大,以至於當我想到它們時,它們讓我想起了遊戲王(Yu-Gi-Oh)。遊戲王是我童年常玩的卡牌遊戲和觀看的動畫片:埃及神卡。埃及神卡是三張極其強大的卡牌,傳說它們的出現可能是致命的,而且它們太強大以至於在決鬥中被禁止使用。類似地,在密碼學中,我們也有三個埃及神協議:

  它是什麼,它是如何運作的?

ZK-SNARKs 是這三大協定中已經發展得相當成熟的一個。在過去五年裡,隨著證明生成速度和開發友好度的顯著提升,ZK-SNARKs 已成為以太坊在可擴展性和隱私性方面的基礎技術。但 ZK-SNARKs 存在一個關鍵限制:必須掌握數據才能對其產生證明。 ZK-SNARK 應用程式中,每個狀態資料必須有唯一的 “所有者”,且任何讀寫操作都需要該所有者在場授權。

第二個協議克服了這個限制,它是全同態加密(Fully Homomorphic Encryption, FHE )。 FHE 能夠在不存取原始資料的情況下對加密資料執行任意計算。這使我們能夠在保護資料和演算法隱私的前提下,為用戶處理其資料。它還能夠增強 MACI 等投票系統,提供近乎完美的安全性和隱私性保證。 FHE 長期被認為效率過低而難以實用,但如今其效率已達到實用水平,相關應用也開始出現。

Cursive 是一個使用雙方計算和 FHE 來進行隱私保護下共同興趣發現的應用。

但 FHE 也存在限制:任何基於 FHE 的技術仍需要特定主體持有解密金鑰。雖然可以採用 M-of-N 多方分儲方案,甚至可以使用可信任執行環境(TEE)作為第二重防護,但這仍是固有限制。

這引出了第三個協議,其威力超過前兩者的總和:不可區分混淆(Indistinguishability Obfuscation)。儘管它距離實用化還非常遙遠,但在 2020 年,我們已經基於標準安全假設建立了理論可行的協議,並且近期已開始著手實現。不可區分混淆能夠讓你創建一個 “加密程式”,該程式可執行任意計算,同時完全隱藏其內部實作細節。舉個簡單例子,你可以將私鑰封裝進混淆程式中,使其只能用於質數簽名,然後將程式分發給他人。用戶可以用該程式對任意質數進行簽名,但無法提取出私鑰。但這僅是其能力的冰山一角:結合雜湊函數,它可以實現任何其他密碼學原語,並支援更多高級功能。

混淆程序唯一的限制在於無法防止程式本身被複製。不過,在這個領域已經出現了更強大的技術,只是它需要所有參與者都具備量子電腦:量子一次性簽名(Quantum One-Shot Signatures)。

結合混淆技術和一次性簽名,我們幾乎可以建立完美的無信任第三方系統。唯一需要依賴區塊鏈而無法僅透過密碼學實現的,是抗審查能力。這些技術不僅能增強以太坊本身的安全性,還能支援建構更強大的上層應用。

為了解這些基礎協議如何各自提升系統能力,讓我們以一個典型案例來說明:投票系統。投票是一個極具挑戰性的問題,因為它需要滿足許多複雜的安全屬性,特別是在可驗證性和隱私性方面都有極高要求。雖然強安全性的投票協議已存在數十年,但讓我們設定更高的目標:設計一個能支援任意投票協議的系統,包括二次投票、配對約束二次方融資、群集匹配二次方融資等。換言之,我們期望「計票」環節能夠支援任意程式邏輯。

  • 首先,假設我們將投票數據記錄在區塊鏈上。這能實現公開驗證(任何人都可以驗證最終結果的正確性,包括計票規則和投票資格規則)和抗審查能力(無法阻止用戶參與投票),但缺乏隱私保護。
  • 然後,我們引入 ZK-SNARKs 技術。這實現了隱私保護:每票均為匿名,同時確保只有授權用戶可以投票,且每個用戶只能投票一次。
  • 接著,我們引入 MACI 機制。投票內容經加密後傳送至中心伺服器的解密金鑰。中心伺服器負責執行計票流程,包括過濾重複票項,並發布證明結果正確性的 ZK-SNARK。這不僅保持了前述保障(即使伺服器作弊也不例外!),而且在伺服器誠實的情況下,還提供了抗脅迫保護:用戶無法證明自己的投票選擇,即便他們主動想要證明。這是因為儘管用戶可以證明某次投票行為,但無法證明自己沒有投過另一張票來抵消先前的投票。這有效防止了賄選和其他攻擊行為。
  • 我們在全同態加密(FHE)環境中執行計票,並透過 N/2-of-N 閘限解密方案進行解密。這將抗脅迫保護機制單點信任提升為 N/2 閘限信任
  • 我們將計票程序進行程式碼混淆,並設計混淆程序使其只有在獲得授權時才能輸出結果,該授權可以是區塊鏈共識證明、工作量證明或兩者的組合。這使得抗脅迫保護機制達到近乎完美的程度:在區塊鏈共識模式下,需要 51% 的驗證節點串通才能破解;在工作量證明模式下,即便全網串通,透過運行不同用戶子集的計票來還原單一用戶的投票行為也會耗費龐大成本。我們還可以在最終統計結果中引入微小的隨機擾動,進一步提高單一使用者投票行為的隱匿性。
  • 我們引入一次性簽章機制,這是一種基於量子運算的基礎協議,可確保簽章僅可用於對特定類型訊息進行一次性簽署。這實現了完全的抗脅迫保護

  不可區分混淆還能支援其他強大的應用場景。例如:

  • 支援任意內部加密狀態的 DAO、鏈上拍賣及其他應用
  • 完全通用的可信任設定:開發者可以建立一個包含金鑰的混淆程序,該程式能執行任意程序並輸出結果,將 hash(key, program) 作為輸入參數。任何人取得此程式後,都能將程式嵌入自身,將程式原有金鑰與自己的金鑰合併,進而擴展初始化範圍。這可用於為任意協定產生 1-of-N 的可信初始化。
  • 僅需簽署驗證的 ZK-SNARKs 。實作方式簡單:透過可信任初始化建立混淆程序,該程序僅在驗證 ZK-SNARK 有效時才以金鑰進行簽署。 。
  • 加密交易記憶體池。它極大地簡化了交易加密過程:交易僅在未來特定鏈上事件發生時才解密。這甚至可以包括 VDF(可驗證延遲函數)的成功執行。

透過一次性簽章機制,我們可以使區塊鏈免受破壞最終性的 51% 攻擊,但仍可能面臨審查攻擊。類似一次性簽署的基礎協議能夠支援量子貨幣,無需依賴區塊鏈就能解決雙花問題,但更複雜的應用場景仍需要區塊鏈支援。如果這些基礎協定能達到足夠的效能水平,世界上大多數應用都將具備去中心化的潛力。主要瓶頸在於如何驗證實現的正確性。

  有哪些現有的研究資料?

  • 2021 年不可區分混淆協議研究:https://eprint.iacr.org/2021/1334.pdf
  • 不一致技術如何掌控以太幣:https://ethresear.ch/t/how-obfuscation-can-help-ethereum/7380
  • 首個一次性簽章建構方案:https://eprint.iacr.org/2020/107.pdf
  • 混定力最好設計(1):https://mediatum.ub.tum.de/doc/1246288/1246288.pdf
  • 混公動報電影電影 (2):https://github.com/SoraSuegami/iOMaker/tree/main

  還有什麼需要做,有哪些權衡?

仍面臨諸多技術挑戰。 不可區分混淆技術目前仍非常不成熟,現有的構造方案運行速度慢了數百萬倍(甚至更多),無法在實際應用中使用。該技術因其運行時間「理論上」是多項式等級而廣為人知,但實際運行所需的時間比宇宙壽命還要長。儘管近期的協議已降低了極端的時間開銷,但對於日常應用而言效能損耗仍然過高:根據一位開發者估計,單次執行預計需要一年時間。

目前量子電腦尚未實現:目前網路上所見的所有構想,要不是僅能處理 4 位元運算的原型系統,就是不是真正意義的量子電腦——雖然它們可能包含量子元件,但無法執行實際有效的量子演算法,如 Shor 演算法或 Grover 演算法。近期有跡象表明,「真正的」量子電腦距離實現已不再那麼遙遠。然而,即便「真正的」量子電腦很快就會出現,普通人在筆記型電腦或手機上使用量子電腦的日子可能也比大型機構獲得能夠破解橢圓曲線密碼的量子電腦晚幾十年。

在不可區分混淆技術中,一個核心權衡點在於安全性假設。某些採用非常規假設的激進方案,雖然具有更實用的執行效率,但這些非常規假設往往有被攻破的風險。隨著對格密碼學理論理解的深入,我們可能最終能夠建立不可破解的假設。但這種路徑風險較高。相對保守的路徑是堅持使用可證明歸約到「標準假設」的協議,但這意味著需要更長時間才能實現具備足夠執行效率的協議。

  它如何與路線圖的其他部分互動?

  強大的密碼學技術可能會徹底改變遊戲規則。例如:

  • 如果 ZK-SNARKs 的驗證像簽章一樣簡單,我們可能不再需要任何聚合協議,直接在鏈上完成驗證。
  •   一次性簽名可能意味著更安全的權益證明協議。
  • 眾多複雜的隱私協議可能被一個「僅僅」支援隱私保護的 EVM 所取代。
  •   加密交易記憶體池的實作變得更加容易。

起初,這些創新效益將體現在應用層,因為以太坊 L1 本質上需要在安全性假設上保持保守。不過,僅在應用層的採用也可能帶來革命性突破,堪比 ZK-SNARKs 的問世。

免責聲明:作為區塊鏈資訊平台,本站所發布文章僅代表作者及來賓個人觀點,與 Web3Caff 立場無關。文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。