在過去 10 年中,我們用來構建協議的技術種類發生了很大變化。因此,當比特幣在2009年誕生時,它實際上使用的是非常簡單的加密技術,在比特幣協議中你看到的唯一密碼學類型是哈希和橢圓曲線ECDSA簽名,還有工作量證明(Pow)。工作量證明只是另一種使用哈希的方式。如果你看看在2020年代用於構建協議的技術類型,你會開始看到一種更復雜的技術集合,這 些技術真正出現僅在過去10年。
2024 香港 Web3 嘉年華期間,以太坊聯合創始人 Vitalik Buterin 在由DRK Lab主辦的 「Web3 學者峰會 2024」上發表主旨演講《Reaching the Limits of Protocol Design》。
本文來源於DeThings現場總結,以下是DeThings根據Vitalik Buterin 的演講內容進行的總結,有刪減:
在過去 10 年中,我們用來構建協議的技術種類發生了很大變化。因此,當比特幣在2009年誕生時,它實際上使用的是非常簡單的加密技術,在比特幣協議中你看到的唯一密碼學類型是哈希和橢圓曲線ECDSA簽名,還有工作量證明(Pow)。工作量證明只是另一種使用哈希的方式。如果你看看在2020年代用於構建協議的技術類型,你會開始看到一種更復雜的技術集合,這 些技術真正出現僅在過去10年。
這些東⻄確實已經存在了很⻓時間,所以從技術上講,我們已經有PCP定理幾十年了。自從 2009年克雷格·根特裏(Craig Gentry)的發現以來,我們就擁有了完全同態加密。幾十年來 我們一直擁有紛亂電路(garbled circuits),這是一種雙方形式的計算。但是理論上存在這 些技術和實踐中存在這些技術是有區別的。
實際上,我認為區塊鏈領域本身就有很大的功勞,它實際上帶來了大量的資源,把這些技術帶到了你可以在常規應用中使用它們的階段。
2020 年代構建區塊鏈時,假設哈希值和簽名就是你所擁有的一切。而在 2020 年代構建的觀 察協議,從一開始就將所有這些東⻄視為關鍵組件。
Zk-SNARKs 是這裏的第一件大事。Zk-SNARKs是一種技術,可以證明你進行了計算,並從計 算中獲得了一些輸出。你可以用這樣一種方式來證明:驗證的速度比你自己運行計算要快得 多。你還可以在不透露原始輸入信息的情況下驗證證明。
2010 年的 zk-SNARKs 和 2016 年的 zk-SNARKs 在當年 12 月推出的 Zcash 協議中首次使用,與現在的 zk-SNARKs 相比,差別實在太大了,對吧?
因此,很多這些較新形式的加密技術,都是從幾乎無人知曉的東⻄到小眾興趣再到主流,再到 如今幾乎成為默認設置—在過去十年中,這些東⻄發生了巨大的變化和改進。」
「因此,zk-SNARKs 在隱私方面非常有用,在可擴展性方面也非常有用。區塊鏈有什麽作用呢?區塊鏈給你帶來了很多好處,它們給你帶來了開放性,它們給你帶來了無權限訪問,它們 給你帶來了全球可驗證性。但所有這些都是以犧牲兩件大事為代價的。
一個是隱私,另一個是可擴展性。Zk-SNARK 還你隱私,還你可擴展性。2016 年,我們看到 了 Zcash 協議。之後,我們開始在以太坊生態系統中看到越來越多的東⻄。如今,幾乎所有 東⻄都開始使用 zk-SNARK、多方計算和全同態加密。如今,人們對這些東⻄的了解少於zk- SNARK,但有某些類型的事情是無法用zk-SNARKs完成的。比如隱私計算,在人們的私有數 據上運行。
投票實際上是一個大的使用案例,你可以通過zk-SNARKs獲得一定級別的隱私性。但如果你想 獲得真正最好的屬性,那麽你必須使用MPC(多方計算)和FHE(全同態加密)。許多加密AI 應用最終也使用MPC和FHE,這兩者都是在過去十年中效率急劇提高的基元。BLS(Boneh- Lynn-Shacham,聚合簽名)是一種有趣的技術,它基本上允許你從大量不同的參與者那裏獲 取一大批簽名,潛在的可能有數萬個參與者,然後像驗證單個簽名一樣快速地驗證那個組合簽 名。」
這個功能非常強大。BLS 聚合實際上是以太坊現代權益證明共識的核心技術。如果你看看在 BLS 聚合之前建立的權益證明共識,很多時候,算法往往只能支持幾百個驗證者。在以太坊 中,目前大約有 30,000 個驗證者,每隔 12 秒提交一次簽名。之所以能做到這一點,是因為 這種新形式的加密技術在過去 5 到 10 年間才真正優化到足以使用的程度。這些新技術讓很多 事情成為可能」。
它們正在迅速變得更加強大。今天的協議大量使用了所有這些技術。我們確實經歷了從專用密碼學到通用密碼學的重大轉變,從要創建新協議就必須自己了解密碼學如何工作的密碼學,到要為專用應用程序創建專用算法的通用密碼學。你必須為一種特殊用途的應用創建一種特殊用 途的算法,而現在,你甚至不需要成為一名密碼學家,就可以創建一種使用我在過去 5 分鐘 裏談到的東⻄的應用。
你只需編寫一段代碼,在 Circom 中編寫一段代碼,然後 Circom 將其編譯成驗證器和校驗器,你就擁有了一個 zk-SNARK 應用程序。這裏的挑戰是什麽,基本上,問題是我們在過去 10 年中已經走得很遠了。還剩下什麽?我們今天的這些技術與理論理想之間的差距是什麽? 我認為這正是研究人員和學術界人士可以大有作為的關鍵領域。
我認為目前的兩大問題基本上是:一個是效率,另一個是安全。現在還有第三個問題,可以說是擴展功能。
例如,我們還沒有真正掌握的一項技術就是無差別混淆技術。如果我們能有一種可行的算法, 那就更了不起了。但實際上,我認為提高效率和提高我們今天所擁有的東⻄的安全性更為重要」。
讓我們來談談效率。讓我們舉一個具體的例子,那就是以太坊區塊鏈。在以太坊中,插槽時間是 12 秒。一個區塊和下一個區塊之間的平均時間是 12 秒。正常的區塊驗證時間,即任何一個 以太坊節點驗證一個區塊所需的時間,約為 400 毫秒。
現在,zk-SNARK 驗證一個普通以太坊區塊所需的時間約為 20 分鐘。這個時間改進得很快 ——兩年前是 5 個小時。現在 20 分鐘已經是平均值了,對吧?仍然存在最壞的情況。舉個例 子,如果你有一個以太坊區塊,整個以太坊區塊都在進行 Zcash 計算,那麽它的證明時間就 會超過 20 分鐘。
不過,與兩年前相比,我們還是走得更遠了。現在的目標是什麽?目標就是實時證明,目標是 當一個區塊被創建時,在下一個區塊被創建之前,你就能得到該區塊的證明。當我們有了實時 證明,我們就有了什麽?基本上,世界上每一個以太坊用戶都可以輕松成為以太坊協議的完全 驗證用戶,但擁有以太坊節點的人卻很少。實際上,一個存檔節點需要2 TB,你可以這麽做, 但效率很低。如果我們能讓每一個以太坊錢包,包括瀏覽器錢包、手機錢包,包括其他鏈上的 智能合約的輕量級錢包,都能真正完全驗證以太坊共識規則呢?
一些人實際上並不信任 Infura。它們甚至不信任以太坊的權益證明驗證器,而是直接驗證規 則,直接確保以太坊區塊的正確性。我們如何用zk-SNARK做到這一點呢?要想真正做到這一 點,zk-SNARK 證明需要是實時的,但需要有一種方法讓任何以太坊區塊都能得到證明,可能 在 5 秒鐘之內。」
問題是,我們能到達那裏嗎?現在,MPC 和 FHE 也有類似的問題。正如我之前提到的,MPC 和 FHE 的一個典型用例就是投票,而且實際上已經開始使用了。大約三周前,越南舉行了一 次以太坊活動。在那次活動中,他們實際上使用了 MPC,也就是這些加密安全投票系統中的 一種,在項目和黑客⻢拉松中進行投票。
MPC 目前的問題在於,它的某些安全屬性依賴於一個中央服務器。我們能將這種信任假設分 散化嗎?可以,但這需要 MPC 和 FHE。現在的問題是,保證這些協議的高效開銷很大,在 zk-SNARK 上又有 FHE。要想讓這些協議成為普通人默認使用的協議,就不能讓每一票的證明 都要花費 5 美元的計算量,對吧?它必須能快速完成,甚至能實時完成大量投票。
那麽,我們如何實現zk-SNARK的目標呢?我認為有三大類可以提高效率。其中之一就是並行化和聚合,想象一下,驗證一個以太坊區塊最多需要 1000 萬個計算步驟。你把這些計算步驟 中的每一步都拿出來,分別做一個證明。然後進行證明聚合。取前兩個證明,對其進行證明。再取下兩個證明,對其進行證明。再取其後的兩個證明,對這些證明進行證明。再取前兩個證明的證明,對這些證明進行證明,就得到了一棵樹。在這棵樹上走了大約 20 步之後,你就得 到了一個大證明,它代表了整個程序塊的正確性。
這在今天的技術條件下是可以做到的。它可以在 5 秒鐘內證明一個理論區塊的正確性。問題出在哪裏?基本上,這需要大量的並行計算,對吧?它需要 1000 萬次證明。那麽我們能優化它嗎?我們能優化並行化嗎?我們能優化聚合證明嗎?答案是肯定的。關於如何做到這一點, 有很多理論上的想法。但這確實需要變成一些實際的東⻄。這是一個結合了算法改進、低級別 改進和硬件設計改進、效率改進的問題,所以ASIC也非常重要。我們都看到ASIC對於挖礦有 多重要,對吧?記得2013年當ASIC第一次上線時,我們看到比特幣算力是如何迅速增⻓的。
ASIC 非常強大,對吧?在硬件成本和電費相同的情況下,ASIC 的哈希值基本上是 GPU 的 100 倍。問題是,我們能為SNARK證明帶來同樣的好處嗎?我想答案應該是可以的。因此, 有越來越多的公司開始實際製造專⻔用於證明 zk-SNARK 的 ASIC。它可以是zkEVMs,但實際上應該是非常通用的。你應該能夠製造一個SNARK ASIC來證明任何類型的計算。這樣做, 我們能從20分鐘縮短到5秒嗎?
最後,提高效率,對吧?因此,我們需要更好的zk-SNARK算法。我們有Groth16,我們有查找表,我們有64位SNARK,我們有STARK,我們有32位STARK,各種不同的想法。我們能否進一步提高 SNARK 算法的效率?我們能否創造出更多對 SNARK 更友好的哈希函數、更多對 SNARK 更友好的簽名算法?這裏有很多想法,我非常鼓勵大家在這些想法上多下功夫。
主要的安全問題是bugs,對嗎?我認為,bug是人們很少談論的最大問題之一,但它卻非常 重要,對嗎?基本上,我們擁有所有這些令人驚嘆的加密技術,但如果人們擔心電路中存在某 種缺陷,就不會相信它們,對嗎?無論是zk-SNARK還是zkEVM,它們都有7000行代碼。這 還是在非常高效的情況下。平均而言,每千行代碼就有 15 到 50 個漏洞。在以太坊中,我們 很努力,每千行代碼中的錯誤少於 15 個,但多於零,對嗎?如果你有這些持有數十億美元資 產的系統,那麽如果其中一個系統出現漏洞,那麽無論加密技術有多先進,這些錢都會丟失。
問題是,我們能做些什麽來真正利用現有的加密技術並減少其中的錯誤呢? 如今,這裏使用的基本技術是安全委員會,基本上,你只需在以太坊中召集一些人,如果其中大多數人,比如超過 75% 的人,都認為存在漏洞,那麽他們就可以推翻證明系統所說的一切。因此,這是一 個相當集中的系統,但這是我們目前擁有的最好的系統。在不久的將來,我們會有多重證明。這裏有一張Starknet的圖,它是基於以太坊的Rollups之一。這個想法是,如果你有多個證明 系統,理論上,你可以使用冗余來降低其中任何一個系統出現漏洞的⻛險,如果你有三個證明 系統,如果其中一個系統出現了錯誤,那麽希望另外兩個系統不會在完全相同的地方出現錯 誤。
最後,我認為未來還有一件有趣的事情值得研究,那就是使用人工智能工具,有可能使用新工具來進行形式驗證,對嗎?所以,就像用數學方法證明zkEVM這樣的東⻄沒有漏洞,對嗎? 基本上,你能真正證明,例如,zkEVM 實現正在驗證 EVM 代碼中與以太坊實現完全相同的功能嗎?例如,你能證明它們對任何可能的輸入都只有一個輸出嗎?如果你能嘗試真正證明這些 事情,那麽也許我們就能在未來的某個時候真正實現無 bug zkEVM 的世界。
這太瘋狂了,對吧?因為在此之前,還沒有人做出過如此復雜的無漏洞程序。但在 2019 年, 沒有人認為人工智能有可能做出真正漂亮的圖片,對吧? 所以,今天我們只是看到了我們取得了多大的進步。我們看到了人工智能的能力。現在的問題是,我們能否嘗試將類似的工具應用到實際任務中,比如,自動生成復雜語句的數學證明,而這些復雜語句的程序要跨越成千上萬 行代碼?我認為這是一個有趣的公開挑戰,值得人們關註。
關於聚合簽名的效率,如今,以太坊有 3 萬個驗證器,運行一個節點的要求很高,對吧?我的筆記本電腦上就有一個以太坊節點,它可以運行,但這可不是一臺便宜的筆記本電腦,而且 我還得自己去升級硬盤。以太坊的理想目標是支持盡可能多的驗證器。
我們希望權益證明盡可能⺠主化,讓人們能夠直接參與任何規模的驗證。我們希望運行以太坊節點的要求非常低,非常容易使用。我們希望理論和協議最大限度地簡單。這裏的理論限製是 什麽?每個參與者每個時段的所有數據需要有 1 比特,因為你必須廣播誰參與了簽名,誰沒有 參與簽名。這是最基本的限製。
超過這個限製,就沒有其他限製了,計算沒有下限,你可以做聚合證明,你可以做遞歸證明樹。你可以做簽名,你可以做各種聚合簽名。你可以使用 STARK,可以使用基於網格的密碼學,可以使用 32 位 STARK,可以使用各種不同的技術。
問題是,我們能在多大程度上優化簽名聚合?這就是點對點安全,人們對點對點網絡考慮不夠。這是我要特別強調的一點,我認為,在加密領域,人們往往傾向於在點對點網絡之上創建 花哨的結構,然後就認為點對點網絡可以正常工作。
這裏隱藏著很多⻛險,對嗎?我認為這些⻛險將變得更加復雜,點對點網絡在比特幣中的工作方式,在比特幣中的工作方式。所以在 2010 年代,每個節點都能看到一切。你肯定可以進行一些攻擊有日蝕攻擊,有拒絕服務攻擊,有各種各樣的攻擊。
但是,當你有一個非常簡單的網絡,而網絡的唯一任務就是確保每個人都能得到所有東⻄時, 問題還是相當簡單的。問題在於,隨著以太坊規模的擴大,點對點網絡變得越來越復雜。今天 的以太坊點對點網絡已經有 64 個分片了,對吧?
為了進行簽名聚合,為了像現在這樣每個時段處理 30,000 個簽名。我們有一個點對點網絡, 它被分成 64 個不同的子網絡,每個節點只屬於其中的一個或幾個網絡。在數據可用性采樣中,這是以太坊用來為區塊提供數據空間以實現可擴展性的技術。這只是你的兩個項目,允許rollups的費用非常低。
這也取決於更為復雜的點對點架構。在這裏,你看到的是一個對等節點圖;在這種設置下,每個節點只能下載所有數據的 1/8。那麽問題來了,這樣的網絡真的安全嗎?你能保證它的安全 性嗎?你能盡可能提高保證率嗎?我們怎樣才能保護並提高以太坊所依賴的點對點網絡的安全性?
基本上,我認為在這一點上,我們需要關註的是,我們需要能達到加密技術極限的協議,我們的加密技術已經比十年前強大得多,但還可以更強大,在這一點上,我認為我們真的需要開始研究什麽是上限,我們如何才能真正達到上限。
這裏有兩個同樣重要的領域。其中之一是繼續提高效率,我們希望實時證明一切。我們希望看 到這樣一個世界:在去中心化協議中,每一條在博客中傳遞的信息都會默認附加一個 zk- SNARK,以證明該信息以及該信息所依賴的一切都遵循了協議規則。
第二個前沿領域是提高安全性。從根本上說,就是要減少出錯的幾率,讓我們的世界裏,這些 協議所依賴的實際技術可以是非常強大、非常值得信賴的,人們可以盡可能地依賴它。盡管這 些項目存在漏洞,但人們不會依賴加密技術,而是會繼續依賴人。
但是,正如我們多次看到的那樣,Multisignature(多重簽名)也會被黑客攻擊,有很多這樣的例子,這些所謂的Layer2項目。這一兩個項目中的幣實際上是由一個多重標識控製的, 但不知何故,九個項目中有五個同時被黑客攻擊,導致大量資金損失,如果我們想超越這個世界,那麽我們就需要相信什麽是真正能夠使用的技術,並真正通過加密技術來執行規則,而不是相信一小群人來確保規則得到遵守。
但要做到這一點,代碼必須值得信賴。
問題是,我們能讓代碼可信嗎?我們能讓網絡值得信賴嗎?我們能讓這些產品、這些協議的經濟性值得信賴嗎?我認為這些都是核心挑戰,希望我們 能繼續共同努力,不斷改進,謝謝。