訪談者:Nickqiao & Faust,極客Web3
受訪者:YeZhang,Scroll聯創
編輯:Faust & Jomosis
6月17日,極客Web3和BTCEden在Scroll的DevRel——Vincent Jin的幫助下,有幸邀請到了Scroll的聯創張燁,來解答關於Scroll和zkEVM的諸多問題。
期間雙方不僅談到了許多技術話題,還談到了Scroll的一些趣事,以及其賦能亞非拉實體經濟的宏大願景。本文為本次訪談的文字版記錄,超過1萬字,共包含至少15個主題:
- ZK在傳統領域的應用空間
- zkEVM和zkVM在工程難度上的差異
- Scroll在實現zkEVM過程中遇到的難題
- Scroll對Zcash的halo2證明系統所做的改進
- Scroll是怎麼和以太坊PSE小組展開合作的
- 在程式碼審計層面Scroll如何確保自己的電路安全可靠
- Scroll對未來的新版zkEVM及證明系統的簡單規劃
- Scroll的Multi Prover設計以及其Prover生成網路(zk礦池)的建造方式等。
除此之外,張燁老師在最後談到了Scroll將紮根在非洲、土耳其、東南亞等金融系統落後地區,打算為該地區人民創造實體經濟場景以「脫虛入實」的宏大願景。本文可能是讓更多人更理解Scroll的絕佳資料之一,推薦大家仔細閱讀。
1.Faust: 請問張燁老師對於ZK在Rollup之外的應用怎麼看?不少人習以為常認為,ZK的主要用處在混幣器、隱私轉帳或ZK Rollup和ZK橋這些地方,但在Web3之外,例如傳統產業裡對ZK的應用還是很多的。您覺得未來ZK最有可能在哪些方向上被採用?
YeZhang :這是個好問題,傳統產業裡做ZK的人,在五、六年前就在探索ZK的各種場景,區塊鏈中用到ZK的場景其實非常小,這也是為什麼Vitalik覺得十年後,ZK的場景會和blockchain一樣大。
我覺得在那些需要信任假設的場景中,ZK會有很多用途。假設你現在需要處理一些繁重的計算任務,如果你在AWS上租伺服器,運行自己的任務並得到結果,相當於你在自己控制的設備上做計算,然後你要支付租伺服器的錢,但這筆錢往往不便宜;
但如果我們搞運算外包的模式,很多人可以用自己閒置的設備或資源分擔你的運算任務,你付出的成本可能比自己租伺服器便宜。但這裡有信任問題,你不知道別人回傳給你的計算結果是否正確。現在假設你在做一個很麻煩的計算,然後你把計算交給我來做,再給我錢。我過了半小時後隨便交給你一個結果,你也沒有辦法相信這個結果是有效的,因為我可以隨便編個結果。
但如果我能向你證明,交付的這個計算結果是對的,那你就可以放心了,並且也敢把更多計算任務外包給我來做。 ZK可以把很多不可信的資料來源變成可信的,這個功能非常強,透過ZK,你可以把不可信但很便宜的第三方運算資源更有效率的運用起來。
我覺得這個場景非常有意義,可以催生類似外包計算的商業模式。在一些學術文獻裡,稱之為可信計算(verifiable computation),就是把一個計算變得值得信任。除此之外,ZK可以應用在資料庫領域,假設在本地運行資料庫太貴了,你決定走外包的路子,剛好一個人有富餘的資料庫資源,然後你把資料儲存在他那邊。你會擔心對方更改你託管在他那的數據,或者說你一個SQL query後得到的結果對不對?
對此,你可以讓對方產生一個proof,如果這件事能做到,你可以把資料儲存也外包出去,並且得到一個trustworthy的結果。這和前面的可信計算彼此都是一大類應用場景。
另外還有很多應用實例,我記得有篇論文講了Verifiable ASIC,在生產晶片的時候,可以把ZK演算法寫到你的晶片上,當你用晶片運行程式的時候,產生的結果預設會帶一個Proof。這樣一來我覺得很多東西都能代理給任何一台設備,產生可信的結果。
還有一個有點扯的東西,叫Photo Proof照片證明。比如說很多圖片,你不知道是不是P過的,但我們可以透過ZK去證明照片沒有被篡改過,比如可以在相機軟體中加一些設置,自動生成一些數字簽名,你拍完照片後,這個簽名相當於照片蓋了章。如果有人把你拍的照片拿去PS,搞“二次創作”,我們驗證下簽名就能識別出圖片是被改動過的。
這裡面我們可以引入ZK,當你對原圖進行了些許改動後,你可以用ZK Proof向別人證明自己只是對照片做了旋轉、平移等簡單操作,並沒有篡改照片的原始內容,證明自己微調後的圖片和原版圖片基本上一樣,也就是證明自己沒有竄改圖片的核心內容搞「二次創作」。
這個場景還可以拓展到視訊音訊上,透過ZK,你不必告訴對方自己對原版影片做了哪些改動,但可以證明自己沒有篡改原版的核心內容,證明自己只做了一些無傷大雅的調整。另外還有很多有趣的應用,都是ZK能插腳的。
目前,我覺得ZK的應用場景還沒有被廣泛接納的原因,在於其成本太高,現有的ZK證明生成方案,還不能做到對任意計算都實時生成證明,因為ZK的開銷一般是原始計算的100倍到1000倍,當然我說的數字已經是壓的比較低的了。
所以你想像一下,一個計算任務本來要算1小時,你現在給它生成個ZK Proof,Overhead可能是100倍,也就是要花100個小時來產生證明,雖然你可以用GPU或ASIC把這個耗時給縮短,但還是要付出巨大的計算開銷,如果你要求我算一個很麻煩的東西,還要求我為此生成ZK Proof,我可以拒絕這麼做,因為這要額外耗費100倍的計算資源,最後落實到經濟帳上就很不划算。所以對於一對一的場景來說,產生一次性的ZK證明很昂貴。
不過,這也是為什麼對Blockchain來說,非常適合用ZK,原因是區塊鏈做的是冗餘計算,有很多1對多的場景。區塊鏈網路中不同節點做的是相同的運算任務,如果有1萬個節點,那麼相同的任務就會執行1萬次。但如果你在鏈下完成任務,生成ZK證明,1萬個節點只驗證ZK證明而不重跑任務,就不必再把原始計算重播1萬遍了,相當於你用自己1個人的計算成本,和1萬台節點搞冗餘運算的成本做了置換,從整體的角度來看,可以讓更多人節省資源。
所以,其實鏈越去中心化越適合搭配ZK,因為任何人都能近乎零成本的驗證ZKP,我們只要在初始生成證明的時候付出一定成本,就可以換來對大多數人的解放,這就是為什麼區塊鏈的公開可驗證性非常適合ZK,因為區塊鏈裡有許多1對多的場景。
還有一個上面沒提到的點。現在區塊鏈領域用到的Overhead比較大的這種ZK證明,都是非互動式的,就是你給我一個東西,我給你證明,然後就結束,因為在區塊鏈中,你不可能反复的去跟鏈上互動。但有一種更有效率、開銷更低的證明產生方式,也就是互動式證明。比如說,你給我發一個Challenge,我給你發一個東西,你再給我發一個東西,我再給你發一個,通過這種雙方多次交互的方式,有可能把ZK的計算量級再降低下來。如果這種方式可以,就有可能解決大型的ZK應用場景的證明產生問題。
Nickqiao:如何看待zkML,也就是ZK和機器學習結合的發展前景?
YeZhang :zkML也是一個很有趣的方向,能把Machine Learning給ZK化,但我覺得這方面還是缺乏殺手級的應用場景。大家普遍認為隨著ZK系統的效能提升,未來能夠支援ML這個等級的應用,目前zkML的效率能夠支援gpt2這種等級的應用,在技術上能做到,但只能做ML中的推理。歸根究底,我覺得大家還是在摸索這塊的應用場景,也就是到底什麼樣的東西才需要你證明其推理過程是對的,這個事情是挺刁鑽的。
2.Nickqiao: 想請教下張燁老師,zkEVM和zkVM在工程實現難度上的差異具體有多大?
YeZhang :首先,無論是zkEVM還是zkVM,本質都是為某個虛擬機的操作碼/指令集產生定制的ZK電路,而zkEVM的工程落地難度取決於你實現它的方式,在我們剛啟動專案時,因為ZK的效率還沒那麼高,透過為EVM的每個操作碼都寫一個對應的電路,然後把電路組合起來,定制一個zkEVM是最高效的方式。
但這種方案的工程實現難度肯定很大,比zkVM大很多,畢竟EVM的指令集有超過100個操作碼,每個操作碼都要定制一套東西,然後組合起來,一旦有EIP為EVM增添新的操作碼,例如EIP-4844,zkEVM都要相應的加新東西。最後你要寫很長的電路並進行漫長的審計工作,所以開發難度和工作量要比zkVM大很多很多。
反之,zkVM是自己定義了一套指令集/操作碼,它自訂的指令集可以做的很簡單,可以很ZK friendly,你做出來一套zkVM後,不必頻繁的更改底層程式碼,就能支持各種升級和預編譯。所以zkVM的主要工作量和後續升級維護的難度,就放在了編譯器也就是把智能合約轉換為zkVM操作碼的那一步,這和zkEVM有很大不同。
所以,從工程難度來看,我覺得zkVM要比客製化的zkEVM更容易實現,但是如果要在zkVM上跑EVM的話,整體性能比定制化的zkEVM低很多,因為後者是專門定制的。但目前,Prover生成證明的效率在過去兩年間有了至少3~5倍甚至5~10倍的飛躍,zkVM的效率在隨之提升,現在用zkVM去跑EVM,整體效率已經慢慢提上來了,未來zkVM在性能上的劣勢可能被它易於開發維護的優勢給掩蓋住。畢竟對於zkVM和zkEVM而言,除去性能外的最大瓶頸就在開發難度上,必須要有一個非常強大的工程團隊,才能維護好這樣一套複雜的系統。
3.Nickqiao: 能否講一下Scroll在zkEVM落地的過程中,是否遇到一些技術難題,又是怎麼解決的?
YeZhang :一路走來的話,最大的挑戰還是在於,最初啟動專案時的不確定性太大。我們剛啟動專案時,基本沒有其他人做zkEVM,我們是最早探索zkEVM從不可能變成可能的團隊。在理論層面,專案剛開始的6個月就基本上確定了一套可行的框架,而在後續實現的過程中,zkEVM的工程量非常大,還有一些非常技術性的挑戰,比如說你怎麼動態的支援不同的Pre-Compile(預先編譯),怎麼去更有效率地聚合操作碼(opcode),這牽涉到很多工程上的難題。
而且我們是唯一一個,也是最早支援EC Pairing橢圓曲線配對這個Pre-Compile的,像Pairing這種電路實現起來難度非常大,涉及到很多數學等錯綜複雜的難題,對寫電路的人的密碼學/數學功底,以及工程能力要求都很高。
然後在後製發展上,還要考慮技術堆疊的長期可維護性,以及要在什麼樣的時間節點,升級到下一代的zkEVM 2.0。我們有一個專門的研究團隊,一直在研究這類方案,例如透過zkVM的方式來支持EVM,我們也有相關的論文去做這方面的一些討論。
總結下來,我覺得之前的困難在於把zkEVM從不可能變成可能,面臨的難題主要在工程落地和優化上。而下一階段,更大的困難是在什麼時候、透過什麼樣的具體方式,切換到一個更有效率的ZK證明系統,以及我們怎麼把目前的這套程式庫過渡到下一代zkEVM身上,以及下一代的zkEVM可以提供我們什麼樣的新Feature,這裡面有大的探索空間。
4.Nickqiao: 聽起來Scroll已經考慮切換到別的ZK證明系統上了。據我了解,目前Scroll用的是基於PLONK+Lookup的一套演算法,那麼這套演算法在目前是否是最適合實現zkEVM的,以及未來Scroll打算換用什麼證明系統?
YeZhang : 首先我來簡單回答下關於PLONK和Lookup的問題,目前這套還是最適合實作zkEVM或zkVM的系統,大部分的實作跟具體的PLONK和Lookup是綁定的。一般提到PLONK時,其實更多是用PLONK的arithmetization,也就是電路的算術化表達方式去寫zkVM的電路。
Lookup是寫電路時用到的一種方式,一種約束類型。所以當我們提到PLONK + Lookup,指的是寫zkEVM或zkVM電路時,使用PLONK的約束格式,這種方式目前是最常見的。
而在後端方面,PLONK和STARK的界線已經變得模糊,它們只是用了不同的多項式承諾方式,但其實很類似。即使採用STARK + Lookup的組合,跟PLONK + Lookup也是類似的,大家看的只是演算法,兩者的差別主要體現在Prover的效率、證明大小等方面。當然,就前端而言,Plonk + Lookup來實現zkEVM還是最適合的。
關於第二個問題,就是Scroll未來打算切換到什麼證明系統。因為Scroll的目的是永遠讓自己的技術和鏈的框架保持在zk領域裡最頂尖的位置,所以我們肯定會用最新的一些技術。我們一直以安全性、穩定性作為最優先的目標,所以不會過於激進地切換自己的ZK證明系統,可能先透過一些Multi Prover做過渡,一步一步的摸索遞進,來完成下一版的升級迭代。 Anyway,要保證說這是一個平穩的過渡流程。
但就現在來說,切換到新的證明系統還很早,這其實是下一階段例如未來6個月到1年的發展方向。
5.Nickqiao: Scroll在目前基於PLONK和Lookup的證明系統上,有沒有一些獨特的創新?
YeZhang : 目前在Scroll主網上運行的是halo2,halo2最早源於Zcash這個專案團隊,他們最早做了一個能支援Lookup,支援靈活地寫電路格式的一套後端系統。然後,我們和以太坊的PSE小組一起改造了halo2,把它採用的多項式承諾方案從IPA換到了KZG,把Proof Size變小了,從而能在以太坊上更有效率的驗證ZK Proof。
然後我們在GPU硬體加速上做了很多工作,跟著CPU生成ZKP來比較的話,能讓ZKP生成速度快5~10倍。整體來說,我們把原版halo2的多項式承諾方案替換成了更易於被驗證的版本,並做了很多關於Prover的優化,在工程化落地上下了不少功夫。
6.Nickqiao: 所以Scroll現在是和以太坊PSE團隊共同維護KZG版本的halo2。您能否跟我們講一下,你們是怎樣和PSE團隊合作的?
YeZhang :Scroll在啟動專案前,我們本來就認識一些PSE團隊的工程師,我們就有和他們聊,說自己想做zkEVM,我們估計了一下這個效率是ok的。剛好在同一個時間節點,他們也想做同樣的事,然後大家一拍即合。
所以,我們是從以太坊社區,從Ethereum Research那邊認識了一起想做zkEVM的人,大家都想把zkEVM產品化落地,都有為以太坊服務的想法,所以很自然地開始了開源合作的模式。這種合作方式更像開源社區,而不是商業化的公司,比如我們每週都會通一次電話,同步一下進度,討論遇到了哪些問題。
我們以這種方式去開源地維護了這套程式碼,從改進halo2到實作zkEVM,這中間有很多探索的過程,我們互相會幫忙Review程式碼。你從Github的程式碼貢獻量能看出來,PSE他們寫了一半,Scroll這邊寫了一半,後續我們完成了程式碼的審計,並實現了一版真正產品化落地並在主網上運行著的程式碼。總結下來,我們和以太坊PSE的合作模式,更像是開源社群的路徑,是自發性的形式。
7.Nickqiao: 您剛才提到,要編寫zkEVM的電路,對數學和密碼學的要求非常高,既然如此,能摸清楚zkEVM的人估計很少。那麼Scroll怎麼保證電路編寫的正確性以及少出bug?
YeZhang :因為我們是開源的程式碼,基本上每一個PR都會有我們的人和以太坊的一些人,以及一些社群成員去Review,有比較嚴格的審計過程。同時我們在電路審計方面也花了很多錢,超過100萬美元,找了這個行業裡最專業的密碼學和電路審計機構,比如Trail of Bits,Zellic等。我們鏈上智能合約的部分也找了openzepplin來審計,基本上所有和安全相關的東西都動用了最高檔的審計資源。我們內部還有專門的安全團隊去做測試,持續提升Scroll的安全性。
Nickqiao: 除了這種審計方式,有沒有形式化驗證等在數學上比較嚴謹的方式?
YeZhang :我們其實很早就看過就Formal Verification(形式化驗證)這個方向,包括以太坊最近也在思考,怎麼給zkEVM做形式化驗證,這其實是一個很好的方向。但就目前來說,要給zkEVM做完整的形式化驗證還比較早,只能從一些小的模組開始摸索,因為Formal Verification運行是有成本的,例如你要給一套程式碼去運行Formal Verification,你要先寫一個spec,但寫spec並不容易,這套東西要完善需要很久。
所以我覺得目前還沒有到給zkEVM做完整的形式化驗證的階段,但我們會持續的跟以太坊在內的外部合作者去積極探索怎麼做zkEVM的形式化證明。
目前來說,最好的方式其實還是人工審計,因為你就算有了spec,有了Formal Verification,如果spec寫錯了,那你還是會出問題。所以我覺得,目前最好還是先通過人工審計,然後透過開源和漏洞懸賞的方式,確保目前Scroll程式碼的穩定性。
但是,在下一代zkEVM中,關於怎麼做形式驗證,怎麼去設計一個更好的zkEVM進而更容易的寫出來spec,透過形式化驗證的方式去證明它的安全性,是以太坊的終極目標。是說,當一個zkEVM被形式化驗證以後,他們就可以徹底放心地將其實施到以太坊主網上。
8.Nickqiao: 關於Scroll採用的halo2,如果要支援STARK等新的證明系統,開發成本會不會很大。能否實現一個插件化的體系,同時支援多個證明系統?
YeZhang : halo2是一個非常模組化的ZK證明系統,你可以替換它的域、多項式承諾等,只要把它用的多項式承諾從KZG換成FRI,基本就可以實現一個halo2版本的STARK,這個事也確實有人做了,所以halo2要支援STARK,這種相容是完全ok的。
然後在實際落地中會發現,如果你要追求極致效率的話,越模組化的框架越可能導致一些效率問題,因為你為了模組化犧牲了定制化的程度,會有付出一些代價。我們持續專注在一個問題,就是未來的發展方向該是模組化的框架,還是非常客製化的框架,尤其像我們有足夠強的ZK開發團隊,可以維護一個獨立的證明體系,然後讓zkEVM 變得更有效率。當然上述問題需要做出一些權衡,但就halo2而言,它可以支持FRI。
9.Nickqiao: 目前Scroll在ZK方面主要的迭代方向是什麼?是優化目前的演算法、增加一些新的feature之類的?
YeZhang :我們的工程團隊核心在做的事情,還是要把目前的Prover效能再提升一倍,然後EVM相容性也要做到最好。在下一版升級中,我們會繼續保持自己在ZK Rollup裡最EVM相容的這樣一個位置,現在其他所有的zkEVM應該都沒有我們的相容性好。
所以這是Scroll工程團隊一方面在做的,就是繼續優化Prover和Compatibility,並且要降低費用。我們現在已經投入了很多人力,去研究下一代zkEVM,大概投入了一半的工程力量,以實現分鐘級甚至秒級的ZK證明生成,讓Prover的效率變得高起來。
同時,我們在探索新的zkEVM執行層,我們的節點之前用的是go-ethereum,但現在有效能更好的Rust版本以太坊客戶端Reth。所以我們在研究,怎麼把下一代zkEVM跟Reth客戶端更好結合,把整個鏈的效能給提升上來。我們會考察zkEVM如果圍繞著新的執行層,該用什麼樣的實現方式和過渡形式最好。
10.Nickqiao: 那麼像Scroll在考慮支持的多樣化證明系統,有沒有必要在鏈上實現多個Verifier合約呢?例如做交叉驗證
YeZhang :我覺得這是兩個問題,首先就是說,有沒有必要去做模組化的證明系統和多樣化的Prover,我覺得這麼做是有意義的,因為我們從始至終,就是開源專案。你把開源出去的這套框架做的越通用化,會吸引來越多人幫你造輪子,你的社區也會因此壯大,後面在項目開發或者工具使用上,可以自然而然的引用外部力量。所以我覺得,如果能做一個不光給Scroll自己使用,還能給其他人用的ZK證明框架很有意義。
然後第二個事情,就是在主網上做交叉驗證這個事,這其實和證明系統本身是否是多樣化的,是否支持STARK或PLONK是正交的話題。一般很少有專案把同樣的zkEVM用PLONK驗證一遍,再用STARK驗證一遍,這是很少的,因為這麼做對安全性的提升不大,反而會讓Prover付出更高成本,所以一般不會出現這種交叉驗證的情況。
我們其實在做一個東西叫Multi Prover,可以有兩套Prover一起證明相同的一個Block,但是會在鏈下把兩個Proof聚合到一起再放到鏈上去驗證。所以,並不會在鏈上做STARK和SNARK之間的交叉驗證。我們的多Prover方案,是為了確保在其中一套Prover的程式碼出問題時,另一套程式碼可以兜底,一套系統出了bug另一套能照常運行,所以這和交叉驗證是另一個話題。
11.Nickqiao: Scroll的Multi Prover,每個Prover執行的證明程式會有什麼不同?
YeZhang :首先,假設我有一個正常的、用halo2寫的一套zkEVM,有一個正常的Prover生成ZKP再去鍊上做驗證,但這裡有個問題,zkEVM很複雜,有可能出現bug。如果出現bug,例如被駭客或專案方拿去利用這個bug產生一個Proof,最後能把大家的錢提走,這一定是不好的。
Multi Prover的核心思想,其實是Vitalik最初在Bogota活動上第一次提出的。意思是說,如果一個zkEVM可能出現bug,那你可以同時跑不同種類的Prover,比如說可以用TEE的基於SGX的Prover(Scroll目前用了這套),或是基於OP,或用zkVM運行EVM的方式去跑一個Prover。 Anyway,這些Prover要同時去證明一個L2 Block的有效性。
假設有3個不同類型的Prover,當且僅當它們產生的3個不同Proof都通過驗證,或者說3個Proof中至少2個通過驗證時,你才能在以太坊鏈上敲定Layer2的最終狀態。 Multi Prover可以保證在一個Prover出問題時,其他兩個Prover 能夠頂替,最後整個Prover系統的穩定性會很好,使ZK Rollup的安全性得到提升。當然這也會引入其他缺點,例如Prover的整體運作成本會提高,我們有一篇專門的Blog介紹了這些概念。
12.Nickqiao: 那現在關於Scroll的ZK證明生成這塊,其證明生成網絡(ZK礦池)是怎麼建設的,是自建的,還是會把一些計算外包給如Cysic的第三方?
YeZhang :就我們目前來說,整個設計其實很容易,我們想讓更多的GPU持有者或礦工參與進我們的這個證明網絡(ZK礦池)裡,但目前來說,Scroll的Prover Market還是我們自己經營的,我們會和第三方的一些有GPU叢集的人合作,他們去運行Prover,但這是為了主網的穩定性,因為你的Prover一旦去中心化後,會有很多問題。
比如說,你的激勵機制設計不好的話,如果沒有人給你產生Proof,網路就會在效能上受到影響。前期我們選擇了相對中心化的方式,但是整個介面和框架的設計,非常容易切換到去中心化的模式。人們完全可以用我們的技術框架做一個去中心化的Prover網絡,再加一些激勵就行了。
但目前來說,為了Scroll的穩定性,我們的Prover生成網路還是中心化的,未來我們會更大範圍的把Prover網路給去中心化,每個人都可以去運行自己的Prover節點,包括我們也在跟諸如Cysic,Snarkify network等等第三方平台合作,看看如果有人想透過我們的技術棧去啟動自己的Layer2,可以去接到第三方的Prover Market裡去直接調用對方的Prover服務。
13.Nickqiao: Scroll在ZK硬體加速方面有沒有什麼投入或產出成果?
YeZhang :這其實就是我之前提到的,Scroll最初做的兩大方向,第一個就是把zkEVM從不可能變成可能,第二個就是我們為什麼能把它從不可能變成可能,是因為ZK硬體加速的效率提升了。
我其實在做Scroll 之前的3年,就開始做ZK硬體加速的工作,我們也有關於ASIC或是GPU硬體加速的論文。我們對zk硬體這塊非常了解,無論從晶片還是從GPU,無論是從學術還是從實踐上,都有非常強的Credibility。
但Scroll自己會專注於GPU方面的硬體加速,因為我們沒有專門做FPGA或是做硬體的資源,也沒有流片的專門經驗。所以我們會選擇跟Cysic這類硬體公司合作,他們去專門做硬體這塊,我們就專注在GPU加速這樣一個偏軟體的領域。我們自己的團隊會GPU硬體加速做最佳化,然後將成果開源,外部的合作夥伴可以去做專門的如ASIC等晶片,我們也會經常的討論交流一下彼此遇到的問題。
14.Nickqiao: 您剛才提到,Scroll未來會切換到其他的證明系統。那像是一些新的證明系統,比如說Nova或其他的一些演算法,您能不能給我們科普一下?他們有什麼優點?
YeZhang :對。我們目前正在內部探索的一種方向,是使用更小的域,能跟我們目前的這些證明系統結合,比如說像PLONKy3這樣的一些庫,它可以很快的實現小域上的一些運算。這是一個Option,怎麼能從我們原來的大域切換到小域,這是一種。
我們內部也在看一些方向,例如一個叫GKR的證明系統,它產生證明的耗時是線性等級的,在複雜度上面比其他的Prover要低很多,但目前沒有特別成熟的工程落地方式。這塊要做的話,要投入更多的人力物力。
但GKR的好處是,在處理重複計算時效率很高,比如說一個簽章計算了1000 次,GKR可以很有效率的給這樣的東西產生證明。 ZK橋Polyhedra就是用GKR去證明簽章的,效率很高。然後,EVM有很多重複的計算步驟,可以透過GKR更好的把生成ZK證明的成本降低下來。
然後還有一些好處,就是說GKR這套證明系統,它需要的計算量確實比其他系統小很多。比方說,你透過像PLONK或STARK這樣的方式,去證明一個keccak哈希函數的計算流程,你需要把中間所有的變數、keccak整個計算過程中產生的所有東西,全部Commit一遍、全部算一遍。
但GKR的話,你只需要Commit它很短的輸入那一層,它可以把中間的這些參數全部透過傳遞關係給表示出來,不需要你去Commit中間的這些變量,會讓計算成本降低很多。 GKR背後的這個sum check協議,也被Jolt或Lookup argument或比較火的一些新框架所採用,所以這個方向是比較有潛力的,我們也在認真研究這個方向。
最後就是你提到的Nova。感覺Nova在幾個月前大火了一陣,因為Nova也比較適合處理這種重複計算,例如你本來要證明100個任務,對此的overhead是100。但Nova的做法是,我可以把這100待證明的任務一個疊一個,一個疊一個,每兩個隨機進行線性組合,最後組合出來一個最終要證明的東西,然後只要證明最終這個任務,就可以證明前面那100個任務都有效,這樣的話可以把原本100的證明overhead大幅壓縮。
然後,後續的一些Hyper Nova之類的工作,可以把Nova擴展到除了R1CS以外的一些證明系統,一些其他的寫電路的格式,可以支援lookup或是別的東西,這樣才能讓一個VM更好的被Nova這類ZK證明系統給證明。但目前來說,Nova和GKR的產品化完善程度不夠,目前市面上沒有很好的關於Nova的高效的庫。
並且因為Nova是這種折疊的方式,它的設計想法和其他的證明系統不太一樣。我覺得它還很不成熟,只是一個比較有潛力的替代方案。但目前來看,從Production Ready的角度來說,還是最常見的那幾套ZK證明系統更早被投入市場,但長期來看說不好說哪個最好。
15.Faust: 最後想聊聊價值觀的問題。記得您去年說去了一趟非洲後,覺得區塊鏈最有可能在非洲這種經濟落後的地方被大規模採用,可以談談這方面的想法麼?
YeZhang :我其實一直有個非常強烈的信念,就是區塊鏈在經濟落後的國家真的有應用空間。其實你現在看到,區塊鏈這個產業裡各種Scam比較多,讓很多人對產業的信心都動搖了,就是為什麼要在一個沒有實際價值的產業工作,區塊鏈這個東西到底有沒有用。除了炒幣或說賭博行為外,有沒有一些更實際的應用場景?
我覺得去一些經濟落後的地方,尤其像非洲,你更能感受到區塊鏈的潛力。因為在中國或西方國家生活的人,其貨幣體系、金融體系非常健全,例如中國人民用微信和支付寶就很開心,人民幣也相對穩定,你沒有必要透過區塊鏈的方式去做支付。
但在像非洲這樣的地方,他們真的對區塊鏈和鏈上穩定幣有需求,因為他們的貨幣通膨真的非常嚴重,舉個例子,某些非洲國家的通膨率每半年就能達到20%,這樣的話每次隔半年買菜,價格就要提升20%,如果是一年就可能提升更多。這樣的話它們的貨幣是一直在嚴重貶值的,資產也在貶值,所以很多人都希望拿美元拿穩定幣或是拿其他發達國家的穩定的貨幣。
但非洲人很難去申請已開發國家的銀行帳戶,穩定幣對他們來說是一種剛需,就即使沒有區塊鏈,他們也想拿著美元這類東西。顯然,對非洲人來說,持有美元最好的方式就是拿穩定幣,他們每次一發工資,就可以去幣安把這個錢趕緊換成USDT、USDC,需要用錢的時候再把它取出來,這樣的話會導致他們有對區塊鏈的真實需求和實際應用。
其實你去了非洲後,會明顯感到像幣安很早就在非洲佈局了,做的非常的紮實,在那裡很多非洲人真的對穩定幣有依賴,就是大家寧可信任交易所,都不一定信任自己本國的貨幣體系,因為很多非洲人在本地可能都申請不了貸款。假設你要藉100塊錢,銀行會開出各種手續和條件,最後你可能搞不到貸款,但在交易所或者其他的一些鏈上平台,對此要靈活的多,所以我覺得在非洲,人們對區塊鏈有更多更實際的應用和需求。
當然,我說的這些大多數人並不太了解,因為大多數用Twitter的人不關心這個,或者也不會在Twitter上看得到這些。像非洲這樣比較落後的地區有很多,包括在幣安的用戶量比較多的一些國家,如土耳其、一些東南亞國家、阿根廷,你會發現這些地區的人用交易所的次數非常多。所以我覺得,在這些地方,幣安的案例已經證明了人們對區塊鏈有非常強烈的需求。
所以我覺得這些地區的市場和社區是真的很有必要去做的,包括我們也有專門在土耳其的團隊,我們在土耳其有一個非常大的社區,然後我們要去慢慢的在前面提到的非洲、東南亞、阿根廷等國家去過渡。而且我覺得,在所有的Layer2裡面,Scroll最有可能成功的在上述國家紮根,因為我們的團隊文化就相當多元,雖然三個創始人是華人,但我們整個team大概包含至少二三十個國家的人,雖然我們總共也就七、八十人,每個地區基本上都有至少兩三個人,所以整體文化很多元。相較之下,你能想到的其他Layer2,基本上都是西方人為主,像OP、Base和Arbitrum就是完全西方化的。
綜上,我們希望能在非洲這種經濟落後、對區塊鏈有實際剛需的地方,給這些地方的人做一套真的有實際應用場景的基礎設施,有點像「農村包圍城市」的感覺,去慢慢地把Mass Adoption給做起來。所以我覺得,我在非洲之行中的感觸還是很深的,但目前來說,Scroll對於某些人而言使用成本還是有些貴,所以還是挺希望能進一步地把成本降低,比如說十倍或者更多,然後透過一些其他的方式,把用戶帶到區塊鏈裡。
其實還有一個前面沒提到的、可能有些不恰當的例子,就是波場Tron。大家對它可能有一些不好的印象,但確實很多經濟落後的國家的人都在用它,因為HTX之前的交易所策略和很多其他的營銷策略,慢慢的讓波場真的有自己的網路效應。我覺得,如果以太坊生態裡面能有一條鏈,能把這些用戶帶到以太坊生態裡,就是一個非常大的成就,而且也是在給這個行業做一些非常積極的事情,我覺得這是很有意義的。
現在很多以太坊二層在卷TVL數據,捲來捲去,你是6億美金,我們可能7億美金,它是10億美金,但我覺得相比於這些東西,更震撼的消息是,泰達突然說我在這個二層或哪條鏈上又增發了10億枚USDT,或者說發行了多少多少錢的穩定幣。一條鏈如果自然增長到了這樣一個程度,不需要透過空投預期來捕獲用戶需求,那個時候才算是比較成功的狀態,至少是我比較滿意的一個狀態,就是能讓用戶的真實需求大到一定程度,使得越來越多的人真的在日常使用你這條鏈。
最後我其實想插個題外話,接下來Scroll生態會有很多活動,希望大家多關註一下我們的後續進展,多參與一下我們的defi生態。