以太坊共同創辦人 Vitalik Buterin 呼籲,人們需要有能達到加密技術極限的協議。本文源自 DeThings 的文章《Vitalik Buterin 香港 Web3 嘉年華演講實錄:Reaching the Limits of Protocol Design》,由wublockchain整理、撰稿。
(前情提要:V神喊「以太坊轉回PoW」?全網最完整解析文在這)
(背景補充:V神讚賞迷因幣:Memecoin有趣也要「有意義」!不能淪為少數人致富工具)
2024 香港 Web3 嘉年華期間,以太坊共同創辦人 Vitalik Buterin 在由 DRK Lab 主辦的 “Web3 學者峰會 2024” 上發表主旨演講《Reaching the Limits of Protocol Design》。
以下是 DeThings 帶來的中文現場實錄,略有刪減:
在過去 10 年中,我們用來建構協議的技術種類發生了很大變化。當比特幣在 2009 年誕生時,它實際上使用的是非常簡單的加密技術,在比特幣協議中你看到的唯一密碼學類型是雜湊和橢圓曲線 ECDSA 簽名,還有工作量證明 (Pow)。
工作量證明只是另一種使用雜湊的方式。如果你看看在 2020 年代用於建構協議的技術類型,你會開始看到一種更複雜的技術集合,這些技術真正出現僅在過去 10 年。
這些東西確實已經存在了很長時間,所以從技術上講,我們已經有 PCP 定理幾十年了。自從 2009 年克雷格・根特裡 (Craig Gentry) 的發現以來,我們就擁有了完全同態加密。幾十年來我們一直擁有混淆電路 (garbled circuits),這是一種雙方形式的計算。但是理論上存在這些技術和實踐中存在這些技術是有區別的。
實際上,我認為區塊鏈領域本身就有很大的功勞,它實際上帶來了大量的資源,把這些技術帶到了你可以在常規應用中使用它們的階段。
2020 年代建構區塊鏈時,假設雜湊值和簽名就是你所擁有的一切。而在 2020 年代建構的觀察協議,從一開始就將所有這些東西視為關鍵組件。
ZK-SNARKs 的重大改進
ZK-SNARKs 是這裡的第一件大事。ZK-SNARKs 是一種技術,可以證明你進行了計算,並從計算中獲得了一些輸出。你可以用這樣一種方式來證明:驗證的速度比你自己運行計算要快得多。你還可以在不透露原始輸入資訊的情況下驗證證明。
2010 年的 zK-SNARKs (理論階段) 和 2016 年的 ZK-SNARKs (在當年 12 月推出的 Zcash 協議中首次使用),與現在的 zK-SNARKs 相比,差別實在太大了,對吧?
因此,很多這些較新形式的加密技術,都是從幾乎無人知曉的東西到小眾興趣再到主流,再到如今幾乎成為默認設定。在過去十年中,這些東西發生了巨大的變化和改進。
因此,Z-SNARKs 在隱私方面非常有用,在可擴展性方面也非常有用。區塊鏈有什麼作用呢?區塊鏈給你帶來了很多好處,它們給你帶來了開放性,它們給你帶來了免許可訪問,它們給你帶來了全球可驗證性。但所有這些都是以犧牲兩件大事為代價。
犧牲隱私與擴展性
一個是隱私,另一個是可擴展性。ZK-SNARK 給你隱私以及可擴展性。
2016 年,我們看到了 Zcash 協議。之後,我們開始在以太坊生態系統中看到越來越多的東西。如今,幾乎所有東西都開始使用 zkSNARK、多方計算和全同態加密。
如今,人們對這些東西的瞭解少於 zkSNARK,但有某些類型的事情是無法用 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 分鐘已經是平均值了,對吧?仍然存在最壞的情況。舉個例子,如果你有一個以太坊區塊,整個以太坊區塊都在進行 zk-SNARK 計算,那麼它的證明時間就會超過 20 分鐘。
不過,與兩年前相比,我們還是走得更遠了。現在的目標是什麼?目標就是即時證明,目標是當一個區塊被建立時,在下一個區塊被建立之前,你就能得到該區塊的證明。
當我們有了即時證明,我們就有了什麼?基本上,世界上每一個以太坊使用者都可以輕鬆成為以太坊協議的完全驗證使用者,但擁有以太坊節點的人卻很少。實際上,一個存檔節點需要 2 TB,你可以這麼做,但效率很低。如果我們能讓每一個以太坊錢包,包括瀏覽器錢包、手機錢包,包括其他鏈上的智能合約的輕量級錢包,都能真正完全驗證以太坊共識規則呢?
一些人實際上並不信任 Infura。它們甚至不信任以太坊的權益證明驗證器,而是直接驗證規則,直接確保以太坊區塊的正確性。我們如何用 ZK-SNARK 做到這一點呢?要想真正做到這一點,zK-SNARK 證明需要是即時的,但需要有一種方法讓任何以太坊區塊都能得到證明,可能在 5 秒鐘之內。
問題是,我們能到達那裡嗎?現在,MPC 和 FHE 也有類似的問題。正如我之前提到的,MPC 和 FHE 的一個典型用例就是投票,而且實際上已經開始使用了。大約三週前,越南舉行了一次以太坊活動。在那次活動中,他們實際上使用了 MPC,也就是這些加密安全投票系統中的一種,在項目和駭客馬拉松中進行投票。
MPC 目前的問題在於,它的某些安全屬性依賴於一個中央伺服器。我們能將這種信任假設去中心化嗎?可以,但這需要 MPC 和 FHE。現在的問題是,保證這些協議的高效的開銷很大,在 ZK-SNARK 上又有 FHE。要想讓這些協議成為普通人默認使用的協議,就不能讓每一票的證明都要花費 5 美元的計算量,對吧?它必須能快速完成,甚至能即時完成大量投票。
如何提高 zk-SNARK 的效率?
那麼,我們如何實現 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 個不同的子網路,每個節點只屬於其中的一個或幾個網路。在資料可用性採樣中,這是以太坊用來為區塊提供資料空間以實現可擴展性的技術。
這也取決於更為複雜的點對點架構。在這裡,你看到的是一個對等節點圖,在這種設定下,每個節點只能下載所有資料的 1/8。那麼問題來了,這樣的網路真的安全嗎?你能保證它的安全性嗎?你能儘可能提高保證率嗎?我們怎樣才能保護並提高以太坊所依賴的點對點網路的安全性?
基本上,我認為在這一點上,我們需要關注的是,我們需要能達到加密技術極限的協議,我們的加密技術已經比十年前強大得多,但還可以更強大,在這一點上,我認為我們真的需要開始研究什麼是上限,我們如何才能真正達到上限。
這裡有兩個同樣重要的領域。其中之一是繼續提高效率,我們希望即時證明一切。我們希望看到這樣一個世界:在去中心化協議中,每一條在部落格中傳遞的資訊都會默認附加一個 zk-SNARK,以證明該資訊以及該資訊所依賴的一切都遵循了協議規則。
第二個前沿領域是提高安全性。從根本上說,就是要減少出錯的機率。讓我們的世界裡,這些協議所依賴的實際技術可以是非常強大、非常值得信賴的,人們可以儘可能地依賴它。
但是,正如我們多次看到的那樣,Multisignature (多重簽名) 也會被駭客攻擊,有很多這樣的例子,這些所謂的 Layer2 項目,其中一兩個項目中的幣實際上是由一個多重簽名控制的,但不知何故,九個簽名中有五個同時被駭客攻擊,導致大量資金損失,如果我們想超越這個世界,那麼我們就需要相信什麼是真正能夠使用的技術,並真正通過加密技術來執行規則,而不是相信一小群人來確保規則得到遵守。
但要做到這一點,程式碼必須值得信賴。問題是,我們能讓程式碼可信嗎?
我們能讓網路值得信賴嗎?我們能讓這些產品、這些協議的經濟性值得信賴嗎?我認為這些都是核心挑戰,希望我們能繼續共同努力,不斷改進,謝謝。
📍相關報導📍
V神:以太坊 blobs 走向大規模普及,L2 需往四大方向改進