作者:以太坊創始人Vitalik;編譯:鄧通,金色財經
按:本文為以太坊創始人Vitalik近期發表的「以太坊協議的未來發展」系列文章的第六部分「Possible futures of the Ethereum protocol, part 6: The Splurge」,第五部分見「Vitalik:以太坊協議可能的未來-The Purge」,第四部分見「Vitalik:以太坊的未來The Verge」。第三部分見「Vitalik:以太坊The Scourge階段的關鍵目標」,第二部分見「Vitalik:The Surge階段以太坊協議應該怎麼發展」,第一部分見「以太坊PoS還有哪些可以改進」。以下為第六部分全文:
特別感謝 Justin Drake 和 Tim Beiko 的反饋和評論。
有些事情很難歸入一個類別。以太坊協議設計中有很多「小事情」對以太坊的成功非常有價值,但並不適合歸入更大的子類別。實際上,其中大約一半最終與各種 EVM 改進有關,其餘則由各種小眾主題組成。這就是「the Splurge」的目的。
Splurge,2023 年路線圖
The Splurge:主要目標
- 將 EVM 帶入高性能和穩定的「最終狀態」
- 將賬戶抽象化引入協議,讓所有用戶都能從更安全、更便捷的賬戶中受益
- 優化交易費用經濟,提高可擴展性,同時降低風險
- 探索可以讓以太坊在長期內變得更好的高級加密技術
EVM 改進
它解決了什麼問題?當今的 EVM 很難進行靜態分析,因此很難創建高效的實現、正式驗證代碼以及隨著時間的推移進行進一步擴展。此外,它的效率非常低,因此很難實現多種形式的高級加密技術,除非通過預編譯明確支持它們。它是什麼,它是如何工作的?當前 EVM 改進路線圖的第一步是 EVM 對象格式 (EOF),計劃包含在下一次硬分叉中。EOF 是一系列 EIP,用於指定具有許多獨特功能的 EVM 代碼的新版本,最值得注意的是:
- 代碼(可執行,但不能從 EVM 讀取)和數據(可讀,但不可執行)之間的分離。
- 禁止動態跳轉,僅允許靜態跳轉。
- EVM 代碼不再能觀察到與 gas 相關的信息。
- 添加了新的顯式子程序機製。
EOF 代碼的結構
舊式合約將繼續存在並可創建,儘管最終可能會棄用舊式合約(甚至可能強制將其轉換為 EOF 代碼)。新式合約將受益於 EOF 帶來的效率提升 -- 首先,利用子程序功能,字節碼會略小,然後是新的 EOF 特定功能,或者 EOF 特定的 gas 成本會降低。
引入 EOF 後,引入進一步的升級變得更加容易。目前最完善的是 EVM 模塊化算術擴展 (EVM-MAX)。EVM-MAX 創建了一組專為模塊化算術設計的新操作,並將它們放入無法通過其他操作碼訪問的新內存空間中。這允許使用優化,例如蒙哥馬利乘法。
一個較新的想法是將 EVM-MAX 與單指令多數據 (SIMD) 功能相結合。從 Greg Colvin 的 EIP-616 開始,SIMD 一直是以太坊的一個想法。SIMD 可用於加速多種形式的加密,包括哈希函數、32 位 STARK 和基於點陣的加密。EVM-MAX 與 SIMD 共同構成了 EVM 的一對以性能為導向的擴展。
組合 EIP 的近似設計是以 EIP-6690 為起點,然後:
- 允許 (i) 任何奇數或 (ii) 2 的任何冪(最高 2^768)作為模數
- 對於每個 EVMMAX 操作碼(add、sub、mul),添加一個版本,該版本不是採用 3 個立即數 x、y、z,而是採用 7 個立即數:x_start、x_skip、y_start、y_skip、z_start、z_skip、count。在 Python 代碼中,這些操作碼將執行相當於以下操作的操作:
除非在實際實施中,它將被並行處理。
- 可能的話,至少為 2 的冪模數添加 XOR、AND、OR、NOT 和 SHIFT(循環和非循環)。還添加 ISZERO(將輸出推送到 EVM 主堆棧)。
其他 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 代碼。這可以實現一系列應用:- 切換到抗量子加密技術;
- 輪換舊密鑰(被廣泛認為是一種推薦的安全做法);
- 多重簽名錢包和社交恢複錢包;
- 使用一個密鑰對低價值操作進行簽名,使用另一個密鑰(或一組密鑰)對高價值操作進行簽名;
- 允許隱私協議在沒有中繼器的情況下工作,大大降低其複雜性並消除關鍵的中心依賴點。
這裡的 MPC 是多方計算:一種已有 40 年歷史的技術,將密鑰拆分為多個部分,存儲在多個設備上,並使用加密技術生成簽名,而無需直接組合密鑰的各個部分。
EIP-7702 是計劃在下一次硬分叉中引入的 EIP。EIP-7702 是人們越來越認識到需要向所有用戶(包括 EOA 用戶)提供賬戶抽象的便利性,以在短期內改善每個人的用戶體驗,並避免分裂成兩個生態系統的結果。這項工作始於 EIP-3074,最終在 EIP-7702 中達到頂峰。EIP-7702 使賬戶抽象的「便利功能」可供所有用戶使用,包括 EOA(外部擁有的賬戶,即由 ECDSA 簽名控制的賬戶)。
從圖表中我們可以看出,雖然一些挑戰(尤其是「便利性」挑戰)可以通過多方計算或 EIP-7702 等漸進式技術解決,但最初提出賬戶抽象提案的大部分安全目標只能通過回過頭來解決最初的問題:允許智能合約代碼控制交易驗證。到目前為止還沒有做到這一點的原因是,安全地實施它是一項挑戰。
它是什麼?它是如何工作的?從本質上講,賬戶抽象很簡單:允許通過智能合約(而不僅僅是 EOA)發起交易。整個複雜性來自於以一種有利於維護去中心化網絡和防止拒絕服務攻擊的方式做到這一點。
一個關鍵挑戰的說明性例子是多重無效問題:
如果有 1000 個賬戶的驗證函數全部依賴於某個單一值 S ,並且內存池中存在根據 S 的當前值有效的交易,那麼一個翻轉 S 值的交易可能會使內存池中的所有其他交易無效。這允許攻擊者以非常低的成本向內存池發送垃圾郵件,堵塞網絡節點的資源。
多年來,在限制 DoS 風險的同時,試圖擴展功能的努力已經導致人們就如何實現「理想賬戶抽象」的解決方案達成一致:ERC-4337。
ERC-4337 的工作方式是將用戶操作的處理分為兩個階段:驗證和執行。首先處理所有驗證,然後處理所有執行。在內存池中,只有當用戶操作的驗證階段僅觸及自己的賬戶並且不讀取環境變量時,用戶操作才會被接受。這可以防止多重無效攻擊。驗證步驟還強制執行嚴格的 gas 限制。
ERC-4337 被設計為協議外標準 (ERC),因為當時以太坊客戶端開發人員專注於合併,沒有多餘的能力來處理其他功能。這就是為什麼 ERC-4337 使用自己的對象(稱為用戶操作)而不是常規交易的原因。然而,最近我們意識到有必要將其至少部分內容納入協議中。兩個主要原因是:
- EntryPoint 作為合約的固有低效率:每個包的固定~ 100k gas 開銷和每個用戶操作的數千額外費用;
- 需要確保以太坊屬性(例如由包含列表創建的包含保證)延續到賬戶抽象用戶。
- 付款人:允許一個賬戶代表另一個賬戶支付費用的功能。這違反了在驗證階段只能訪問發送方賬戶本身的規則,因此引入了特殊處理以允許付款人機制並確保其安全。
- 聚合器:支持簽名聚合的功能,例如 BLS 聚合或基於 SNARK 的聚合。這是在匯總上實現最高數據效率所必需的。
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 的嵌入 AA):https://eips.ethereum.org/EIPS/eip-7701
還剩下什麼要做,又有哪些權衡?剩下的主要問題是如何將賬戶抽象完全納入協議。最近流行的賬戶抽象 EIP 是 EIP-7701,它在 EOF 之上實現賬戶抽象。賬戶可以有一個單獨的代碼部分用於驗證,如果賬戶設置了該代碼部分,那麼該代碼就會在該賬戶交易的驗證步驟中執行。
EIP-7701 賬戶的 EOF 代碼結構
這種方法的迷人之處在於,它清楚地表明了兩種等效的方式來查看本機賬戶抽象:
- EIP-4337,但作為協議的一部分
- 一種新型的 EOA,其中簽名算法是 EVM 代碼執行
主要的權衡似乎是「盡快將更少人滿意的東西奉為圭臬」,而不是「等待更長時間,也許會得到更理想的解決方案」。理想的方法可能是某種混合方法。一種混合方法是更快地將一些用例奉為圭臬,並留出更多時間來解決其他用例。另一種方法是首先在 L2 上部署更雄心勃勃的賬戶抽象版本。然而,這有一個挑戰,即對於一個願意努力採納提案的 L2 團隊來說,他們需要確信 L1 和/或其他 L2 稍後會採用兼容的東西。
我們需要明確考慮的另一個應用程序是密鑰庫賬戶,它將與賬戶相關的狀態存儲在 L1 或專用的 L2 上,但可以在 L1 和任何兼容的 L2 上使用。有效地做到這一點可能需要 L2 支持諸如 L1SLOAD 或 REMOTESTATICCALL 之類的操作碼,儘管它也需要 L2 上的賬戶抽象實現來支持它。
它如何與路線圖的其他部分交互?包含列表需要支持賬戶抽象交易。實際上,包含列表的需求和去中心化內存池的需求最終非常相似,儘管包含列表的靈活性略高。此外,理想情況下,賬戶抽象實現應盡可能在 L1 和 L2 上協調一致。如果將來我們預計大多數用戶都會使用密鑰庫匯總,那麼賬戶抽象設計應該考慮到這一點。
EIP-1559 改進
它解決了什麼問題?EIP-1559 於 2021 年在以太坊上啟動,並顯著改善了平均區塊包含時間。然而,EIP-1559 的當前實施在幾個方面並不完善:
- 該公式略有缺陷:它不是以 50% 的區塊為目標,而是根據方差以 ~ 50-53% 的完整區塊為目標(這與數學家所說的「AM-GM 不等式」有關);
- 它在極端條件下調整得不夠快。
除此之外,以太坊資源定價還有其他與 EIP-1559 無關的弱點,但可以通過調整 EIP-1559 來解決。一個主要問題是平均情況與最壞情況的差異:以太坊中的資源價格必須設置為能夠處理最壞情況,即一個區塊的整個 gas 消耗占用一種資源,但平均情況下的使用量遠低於此,從而導致效率低下。
它是什麼?它是如何工作的?解決這些低效率問題的方法是多維 gas:對不同的資源設置不同的價格和限制。這個概念在技術上獨立於 EIP-1559,但 EIP-1559 使其變得更容易:如果沒有 EIP-1559,最佳地打包具有多個資源約束的塊是一個複雜的多維背包問題。有了 EIP-1559,大多數塊在任何資源上都沒有滿負荷,因此「接受支付足夠費用的任何東西」的簡單算法就足夠了。
我們今天有多維 gas 用於執行和 blob;原則上,我們可以將其增加到更多維度:調用數據、狀態讀取/寫入和狀態大小擴展。
EIP-7706 為調用數據引入了一個新的 gas 維度。同時,它通過使所有三種類型的 gas 都屬於一個(EIP-4844 風格)框架來簡化多維 gas 機製,從而也解決了 EIP-1559 的數學缺陷。
EIP-7623 是針對平均情況與最壞情況資源問題的更精準的解決方案,它更嚴格地限制了最大調用數據,而無需引入全新的維度。
進一步的方向是解決更新率問題,並找到更快的基本費用計算算法,同時保留 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 有兩個主要權衡:
- 它增加了協議的複雜性
- 它增加了填充塊到容量所需的最佳算法的複雜性
消除此問題的一種簡單方法是使多維 gas 僅在 EOF 內部可用,因為 EOF 不允許合約在調用其他合約時設置 gas 限製。非 EOF 合約在進行存儲操作時必須支付所有類型的 gas 費用(例如,如果 SLOAD 花費了區塊存儲訪問 gas 限制的 0.03%,則非 EOF 用戶也將被收取執行 gas 限制的 0.03%)
對多維 gas 進行更多研究將有助於理解權衡並找出理想的平衡。
它如何與路線圖的其他部分互動?成功實施多維Gas可以大大減少某些「最壞情況」的資源使用,從而減輕優化性能以支持例如基於 STARKed 哈希的二叉樹的壓力。為狀態大小增長設定一個硬性目標將使客戶端開發人員更容易規劃和估計他們未來的需求。
如上所述,由於 EOF 具有Gas不可觀測性,因此更極端的多維Gas版本更容易實施。
可驗證延遲函數 (VDF)
它解決了什麼問題?如今,以太坊使用基於 RANDAO 的隨機性來選擇提議者。基於 RANDAO 的隨機性的工作原理是要求每個提議者透露他們提前承諾的秘密,並將每個透露的秘密混入隨機性中。因此,每個提議者都有「1 位操縱權」:他們可以通過不露面來改變隨機性(需要付出代價)。這對於尋找提議者來說是合理的,因為很少有人能通過放棄一個提議機會來給自己兩個新的提議機會。但對於需要隨機性的鏈上應用程序來說,這是不行的。理想情況下,我們會找到更強大的隨機性來源。它是什麼?它是如何工作的?可驗證延遲函數是一種只能按順序計算的函數,無法通過並行化加速。一個簡單的例子是重複哈希:計算範圍(10**9)中的 i:x = hash(x)。輸出經過 SNARK 正確性證明,可用作隨機值。這個想法是,輸入是根據時間 T 時可用的信息選擇的,而輸出在時間 T 時尚不清楚:只有在有人完全運行計算後,它才會在 T 之後的某個時間可用。因為任何人都可以運行計算,所以不可能隱瞞結果,因此也沒有能力操縱結果。
可驗證延遲函數的主要風險是意外優化:有人想出了如何以比預期快得多的速度運行該函數,從而允許他們根據未來輸出操縱他們在時間 T 時透露的信息。意外優化可能以兩種方式發生:
- 硬件加速:有人製造出一種 ASIC,其計算循環的運行速度比現有硬件快得多。
- 意外的並行化:有人通過並行化找到了一種更快地運行該函數的方法,即使這樣做需要 100 倍以上的資源。
現有哪些研究?Vdfresearch.org:https://vdfresearch.org/
2018 年對以太坊中使用的 VDF 的攻擊思考: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 輸出和需要輸出之間會有一些「間隙」。這意味著信息將在幾個區塊之前可用。這可能是一個可接受的成本,但應該在單槽最終性或委員會選擇設計等中加以考慮。
混淆和一次性簽名:密碼學的未來
它解決了什麼問題?尼克·薩博最著名的帖子之一是 1997 年的一篇關於「上帝協議」的文章。在這篇文章中,他指出,多方應用程序通常依賴「受信任的第三方」來管理交互。在他看來,密碼學的作用是創建一個模擬的受信任第三方來做同樣的工作,而實際上不需要對任何特定參與者的信任。「數學上值得信賴的協議」,圖表由 Nick Szabo 繪製
到目前為止,我們只能部分地接近這一理想。如果我們需要的只是一台透明的虛擬計算機,其中的數據和計算不能被關閉、審查或篡改,但隱私不是目標,那麼區塊鏈可以做到這一點,儘管可擴展性有限。如果隱私是一個目標,那麼直到最近,我們只能為特定應用程序制定一些特定的協議:用於基本身份驗證的數字簽名、用於原始匿名形式的環簽名和可鍊接環簽名、基於身份的加密(在對可信發行人的特定假設下實現更方便的加密)、用於 Chaumian 電子現金的盲簽名,等等。這種方法需要為每個新應用程序做大量工作。
在 2010 年代,我們首次看到了一種基於可編程加密的不同且更強大的方法。我們可以使用強大的新協議(特別是 ZK-SNARK)為任意程序添加加密保證,而不是為每個新應用程序創建新協議。 ZK-SNARK 允許用戶證明他們所持有的數據的任意陳述,其方式是:證明 (i) 易於驗證,並且 (ii) 不會洩露除陳述本身之外的任何數據。這對隱私和可擴展性而言是一個巨大的進步,我將其比作人工智能中的變壓器效應。數千人一年的特定應用工作突然被一個通用解決方案所取代,您只需插入該解決方案即可解決範圍驚人的廣泛問題。
但是 ZK-SNARK 只是三個類似的極其強大的通用原語中的第一個。這些協議非常強大,以至於當我想到它們時,它們讓我想起了 Yu-Gi-Oh 中的一組極其強大的卡片,yu-Gi-Oh 是一款紙牌遊戲和電視節目,我小時候經常玩和看:埃及神卡。埃及神卡是三張極其強大的卡片,根據傳說,製造它們可能致命,而且非常強大,以至於它們不允許用於決鬥。同樣,在密碼學中,我們有三種埃及神協議:
它是什麼?它是如何工作的?ZK-SNARK 是我們已經擁有的三種協議之一,並且已經達到很高的成熟度。在過去五年中,ZK-SNARK 在證明速度和開發人員友好度方面取得了巨大進步,已成為以太坊可擴展性和隱私策略的基石。但 ZK-SNARK 有一個重要的限制:您需要了解數據才能對其進行證明。ZK-SNARK 應用程序中的每個狀態都必須有一個「所有者」,該所有者必須在場批准對其的任何讀取或寫入。
第二個協議沒有這個限制,即完全同態加密 (FHE)。FHE 允許您在不查看數據的情況下對加密數據進行任何計算。這允許您在用戶數據上進行計算,以造福用戶,同時保持數據和算法的私密性。它還允許您擴展 MACI 等投票系統,以獲得近乎完美的安全性和隱私保障。長期以來,FHE 被認為效率太低,不適合實際使用,但現在它終於變得足夠高效,我們開始看到應用。
Cursive 是一款使用雙方計算和 FHE 進行共同興趣的隱私保護發現的應用程序。
但 FHE 也有其局限性:任何基於 FHE 的技術仍然需要有人持有解密密鑰。這可能是一個 M-of-N 分布式設置,你甚至可以使用 TEE 添加第二層防禦,但這仍然是一個限制。
這讓我們得到了第三個協議,它比其他兩個協議加起來更強大:不可區分混淆。雖然它還遠遠沒有成熟,但截至 2020 年,我們根據標準安全假設制定了理論上有效的協議,並且最近開始實施工作。不可區分混淆讓你可以創建一個執行任意計算的「加密程序」,這樣程序的所有內部細節都被隱藏了。舉一個簡單的例子,你可以把私鑰放入一個混淆的程序中,這個程序只允許你用它來簽署素數,並將這個程序分發給其他人。他們可以使用該程序對任何素數進行簽名,但不能取出密鑰。但它的功能遠不止於此:與哈希一起使用,它可以用於實現任何其他加密原語,甚至更多。
混淆程序唯一不能做的就是防止自己被複製。但為此,還有更強大的東西即將出現,儘管這取決於每個人都擁有量子計算機:量子一次性簽名。
結合使用混淆和一次性簽名,我們可以構建幾乎完美的無需信任的第三方。我們無法僅使用加密技術做到的唯一一件事,也是我們仍然需要區塊鏈做到的事情,就是保證抗審查性。這些技術不僅能讓我們使以太坊本身更加安全,還能在以太坊之上構建更強大的應用程序。
要了解這些原語中的每一個如何增加額外的功能,讓我們來看一個關鍵的例子:投票。投票是一個令人著迷的問題,因為它有許多需要滿足的棘手安全屬性,包括非常強的可驗證性和隱私性。雖然具有強大安全性的投票協議已經存在了幾十年,但讓我們通過說我們想要一個可以處理任意投票協議的設計來讓問題變得更難:二次投票、成對有界二次融資、集群匹配二次融資等等。也就是說,我們希望「計票」步驟是一個任意程序。
- 首先,假設我們將投票公開放在區塊鏈上。這為我們提供了公開可驗證性(任何人都可以驗證最終結果是否正確,包括計票規則和資格規則)和審查阻力(不能阻止人們投票)。但我們沒有隱私。
- 然後,我們添加 ZK-SNARK。現在,我們有了隱私:每次投票都是匿名的,同時確保只有授權選民才能投票,並且每個選民只能投票一次。
- 現在,我們添加 MACI 機製。投票被加密到中央服務器的解密密鑰。中央服務器需要運行計票過程,包括丟棄重複投票,並發布證明答案的 ZK-SNARK。這保留了先前的保證(即使服務器作弊!), 但如果服務器是誠實的,它會增加一個強制抵抗保證:用戶無法證明他們是如何投票的,即使他們想這樣做。這是因為,雖然用戶可以證明他們所投的票,但他們無法證明他們沒有進行另一次取消該票的投票。這可以防止賄賂和其他攻擊。
- 我們在 FHE 內部運行計票,然後進行 N/2-of-N 閾值解密計算對其進行解密。這使得強制抵抗保證為 N/2-of-N,而不是 1-of-1。
- 我們對計票程序進行了混淆,並設計了混淆程序,使其只有在獲得許可的情況下才能給出輸出,無論是通過區塊鏈共識證明,還是通過一定數量的工作量證明,或者兩者兼而有之。這使得強制抵抗保證幾乎完美:在區塊鏈共識的情況下,你需要 51% 的驗證者串通才能打破它,而在工作量證明的情況下,即使每個人都串通,重新運行與不同子集的選民的計票以試圖提取單個選民的行為也會非常昂貴。我們甚至可以讓程序對最終結果進行小幅隨機調整,使提取單個選民的行為變得更加困難。
- 我們添加了一次性簽名,這是一種依賴於量子計算的原語,允許簽名只能用於簽署某種類型的消息一次。這使得抗脅迫保證真正完美。
- DAO、鍊上拍賣和其他具有任意內部秘密狀態的應用程序。
- 真正通用的可信設置:有人可以創建一個包含密鑰的模糊程序,並且可以運行任何程序並提供輸出,將 hash(key, program) 作為輸入放入程序中。給定這樣的程序,任何人都可以將程序放入其自身,將程序的現有密鑰與他們自己的密鑰相結合,並在此過程中擴展設置。這可用於為任何協議生成 1-of-N 可信設置。
- ZK-SNARKs,其驗證只是簽名。實現這一點很簡單:有一個可信的設置,有人創建一個模糊的程序,只有當它是有效的 ZK-SNARK 時,它才會使用密鑰對消息進行簽名。
- 加密的內存池。加密交易變得非常容易,以至於只有在未來發生某些鏈上事件時才會解密。這甚至可能包括成功執行 VDF。
如果這些原語能夠足夠高效,那麼世界上大多數應用程序都可以實現去中心化。主要瓶頸在於驗證實現的正確性。
現有哪些研究?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-SNARK,我們可能不需要任何聚合協議;我們可以直接在鏈上驗證。
- 一次性簽名可能意味著更安全的權益證明協議。
- 許多複雜的隱私協議可以被「僅」擁有隱私保護 EVM 所取代。
- 加密的內存池變得更容易實現。