演講:郭宇,安比實驗室創始人兼 CEO
整理:Amber,Foresight News
今天我主要是跟大家分享一下關于 ZK 的學習心得和一點體會。因為在以太坊接下來的幾個升級中,都包含了很多最新的 ZKP 或者是 zkSNARK 的技術。最近有很多人在學習這些知識,我們也參加了一些公學的小組,在這里深度講一下其中很共性的問題。
首先我們能感受到 ZK 的項目是很 FOMO 的,我更想從技術層面講一下我們為什么要有 ZKP 和 zkSNARK。當然,它自身本來就是密碼學里一個非常重要的分支,但我認為它在以太坊的發展過程中發現這個東西異常強大,包括 Vitalik 自身也做過一些布道的工作,所以說得到了非常長足的發展,也解決了以太坊未來的發展途徑。
從最早期的 Sharding 發展到現在以 Rollup 為中心的新方向上,我認為 zkSNARK 或 ZKP 在其中起到了非常重要的作用。在我看來,首先它是「產生信任的機制」。比特幣為我們帶來的,像共識協、POW 協議和一些分布式算法,能夠產生一些信任,但這種信任是有存在 51% 誠實的前提假設的。另一種是我在從事區塊鏈相關研究之前,做了十幾年的 formal logic 和 formal verification 的工作,本質上是通過 formal logic 保證代碼的執行滿足某種預期,但我認為這也是一種信任,只不過它的假設是通過邏輯系統本身的一致性去保證信任。ZKP 和 zkSNARK 是我第一眼看到的時候,就覺得和我研究了很長時間的領域不一樣的信任創造方式,因為他們從另外一個角度,幾乎正交地提供了另外一種創造信任的方式,就是通過交互進行概率性證明,同時提供信任。正如 Vitalik 所說,他們是正交于共識協議的另外一種非常重要的區塊鏈核心技術。
第二點我覺得可能很少有人提到,但是我認為是非常重要的,就是可組合性。我們聽到這個詞大概是 19 年,以太坊還處在 DeFi 早期探索過程中的時候,大家提出來的概念。因為以太坊上的所有智能合約都部署在一個平臺上,這些合約之間可以沒有任何調用的障礙和壁壘,就像沒有農田里沒有橫亙在里面的籬笆一樣。正是這種可以無障礙調用的可組合性讓 DeFi 有了現在這樣的繁榮。雖然可組合性不是一個特定的編程語言,但它是一種更高維度的編程,是一種可編程的手段,本質上是更抽象的編程。其實在 zkSNARK 里,可組合性是肉眼可見的。且不用說最近兩年 zkSNARK 技術本身的發展,當我們去看 paper 的時候,我們已經可以非常清晰地看到一個協議,是通過很多子協議的排列組合構造出來的,并且這種可組合性以肉眼可見的速度擴大,這也就意味著 zkSNARK 不再是我們想象中的某一種算法,比如 Groth16 或者 PlonK。它們本身也很復雜,拆開來看,每個算法都由一些精巧的小組件構成,這些精妙的算法之間又可以構成一個更大一點的協議,甚至比我的描述更加復雜,它不是嚴格的、有層級的劃分,它甚至更靈活一些。
以太坊上海升級后已有超38萬枚ETH解除質押:金色財經報道,據Token Unlock數據顯示,自以太坊完成上海升級后,已有38.13萬枚ETH解除質押,22.25萬枚ETH新存入質押。此外,當前有144萬枚ETH處于待提款狀態,驗證者數量約為46.43萬名。[2023/4/16 14:05:57]
這些可組合性的發展、爆炸很有可能帶來新的空間。而且這個空間能有多大?我覺得基本上可以說大到無法想象,尤其是最近一兩年關于遞歸零知識證明技術的一些突破,帶來了非常大的創新空間。而至于它是不是下一個「big thing」,我覺得冠上「之一」,可能是一個比較穩妥保守的說法,但我仍然覺得這是一個非常讓人激動的領域,尤其是在 Blockchain 或 Crypto 的圈子之外,目前注意到的人還很少,因此我覺得這是非常好的機會。
說到體會,我先談一談我自己是如何入坑開始做 ZK 研究的。首先,我在 17 年買了很多 Zcash(ZEC),當然,從投資回報角度來看,這就是非常糟糕的一筆投資。但我覺得也正是這個舉動讓我深入地了解 zkSNARK,并不務正業地用業余時間讀了一些東西,但我發現非常難懂。當時網上也很少這樣的文章能作參考。同時當我去翻傳統密碼學的書時,也失望地發現幾乎都沒有提及到這類知識。
在一些國外的教材里面,可能在整個教科書的最后一章會花兩三頁講解一下,就已經很不錯了。但很幸運的是,我在 2017 年年底發現了 Dan Boneh 和 Victor Shuop 寫的教材,雖然還沒有完全寫完,卻已經出現了一部分關于 zkSNARK 的講解。我覺得如獲至寶,因為在資料很少的情況下,居然有一本書能從最簡單的概念講起,這本教材我認為是非常好的密碼學入門教材。于是在 18 年的時候,我就開始慢慢讀那本書,學習一些基本概念。
然后在 18 年年底到 19 年的一整年中,我們創立了安比實驗室,早期我們一直在做 smart contract audit,去幫一些朋友解決智能合約的安全問題,但是我們同時還是用了大量的時間去學習基礎的密碼學知識。在 19 年我們開始著手做一個用于 data trading 的協議,叫做 zkPoD。20 年,我們講之前的工作總結了一下并發表在了 CCS2021 上,也得到了一些密碼學學者的幫助。而在 2021 年之后,因為整個密碼學領域發展太快了,我們的很多想法跟不上整個領域的理論工具的發展速度,所以我們之前的工作就暫停了。那時候真的特別感慨,我們之前面臨的很多技術困難,很快就會被人解決,甚至還有好多種解決辦法,我們就不得不去看全這些解決方案,可能還沒有完全理解,又有新的工具被創造出來。所以說我們這幾年基本上都在不斷學習,學習速度還遠遠趕不上創新的速度,說這是一個寒武紀大爆炸,我覺得一點都不夸張。我覺得它的威力可能不亞于 ChatGPT 對整個社會的影響,只是說現在還沒有那么明顯,沒有特別殺手級應用出來,但我覺得這個是必然的。
流支付協議Superfluid推出無代碼代幣歸屬解決方案:金色財經報道,流支付協議Superfluid在博客上宣布了一種無代碼的代幣歸屬解決方案Superfluid Vesting,Superfluid使用Superfluid設置歸屬計劃有五個主要好處:簡單的用戶界面、充分的流動性和可組合性、降低的波動性和增強的安全性。[2023/2/22 12:21:21]
另一點感想就是,在早期的時候,我們讀的資料都是來源于學術界,來自于專門長期從事密碼學理論研究的教授和專家學者的論文。但是從 2020 年往后,我們其實發現大量資料來源于工業界的工程師。因為在 Crypto 領域,大家迫切的想要使用密碼學去解決 Blockchain 和 Crypto 中非常核心的問題,有些快速的工程應用甚至領先了理論的發展。我就舉幾個例子,首先是 Halo,Halo 最早是由 Zcash 團隊創造出來的,然后學術界從中獲得了啟發發展出了 accumulation scheme,包括最新的在遞歸零知識證明里非常重要的技術。它最早的起點就是在工程實踐中發現的一些一開始不起眼的一些小規律。
第二個就是 PlonKish Arithmetization,最早也是在工業應用領域從 Aztec 團隊慢慢發展起來的,之前有很多 code,但是它真正的理論研究是后來逐步補上的。但現在為止基本上以 PlonKish Arithmetization 為主導的很多學術研究已經慢慢擴散開來了。很像我右邊圖上的幾棵樹,當然這幾棵樹我只是借用了 slides 中的,zkSNARK 就像一棵很大的樹,并且在不斷成長,于是就有了 zkEVM 和 zkVM 這樣的概念。我經常感慨在 19 年,預想 zkEVM 或者 zkRollup 之類的概念,都要是 10 年之后才有可能出現的東西,因為在當時我們能感受到 zkSNARK 能做的應用是非常有限的。但是沒想到這三年來,Halo 和 PlonKish 的發展能夠讓 zkEVM 基本上成為現實。這是非常恐怖的,包括像 Lookup Arugment 還有一些很有意思的技術,反過來對學術界都有很大的推動能力。
第三點就是這整個過程是非常愉悅的,不管里面遇到了多大的困難,或者是解決了一些小問題所帶來的成就感,都讓我們感到非常有趣。
我覺得絕大多數人對這個東西的印象就是特別難學的月球數學,但實際上從我們的經歷來看其實也不是那樣。
它其實要求的前置數學基礎并不多,但它最難的部分其實是關鍵概念超級多,而且這些概念還在隨著時間演化,也就是說你可能從別人嘴里聽來了,或者在某個地方講到的,或者是在一個文檔里看到的東西,過了 3 年之后可能需要重新去審視它,它又可能表述都不一定準確,或者是它在表達另外一層意思。
Alameda Research貸款給SBF本人33億美元:11月17日消息,根據法庭文件, Alameda Research貸款給SBF本人33億美元。(Bitcoin Magazine)[2022/11/17 13:18:15]
第二個就是協議相對復雜,因為它屬于密碼學協議,可以說密碼學這個分支,整個大方向上都是屬于內部協議比較復雜的這類,于是它的形式化定義特別多。不同的學者去寫形式化定義使用的符號體系也不盡相同,公式也是量多且復雜,即使背了也記不住,可能睡一覺醒來就忘。
第三點是,核心代碼很短,但內部結構足夠復雜,密碼學有一個很有意思的點,就是你無法通過看代碼去學習算法,因為你看他弄來弄去,都不知道他想干什么,還是需要一些理論的指引才能讀懂代碼。
第四點就是,很多朋友還是會按照論文上的算法去實現一遍,但能實現就證明真的懂了嗎?這顯然還是相去甚遠的,這個我們會稍后討論的。
零知識證明的學習曲線還是相對陡峭的,陡峭的原因并不在于 zkSNARK 或 ZKP 有多難,而是在于,首先開發工具很缺乏,也就是說想直觀地體驗一下并不容易,還需要做很多工作,去搜去看相關理論知識之后才能下手。第二就是學習資料其實更缺乏,現在跟 4 年前相比還是多了很多資料的,但要知道資料的增加速度遠遠趕不上創新的速度,也就是說有大量新的理論技術并沒有被總結成文章,有的甚至都沒有行文寫下來,它們存在一些系統的角落里,或者說它只有代碼但沒有理論。因為是寒武紀大爆發,導致了學習資料相對更少,即便是需要的數學基礎并不多,前置知識覆蓋秒依然很廣。所以有些朋友認為自己數學不好,并不是根本性問題。還有一點是論文挺難看懂的,這是我在早期學習時的感觸,有些套路需要慢慢適應。
下面想給各位朋友再講一些心得和經驗。
首先給第一類想要快速入門的新手朋友,或者說看過一些非常簡單的概念,無論出于哪種目的想要快速入門的朋友們。首先,有訣竅嗎?誠實一點說時沒有的,但確實可以把幾個地方作為切入點。其一,寫代碼是一件很重要的事,這里的代碼可以分很多種,我認為現在很多可用的 library 都是很不錯的。比如 Circum,可以在網頁端試著寫一些電路代碼。第二類的 Halo2,我認為如果想要深入學習的話,可以用 Rust 嗎,Halo2 也恰好是 Rust 的一個 library,也是在社區中廣泛使用的。現在以太坊基金會也在基于 Halo2 進行一些工作,可以去看一下這個 library,并根據它去寫一些基礎的 demo 或者例子。第三個是 Gnark,是 Consensys 開發的用 go 語言寫的庫。如果你對 Rust 不熟悉或者沒有寫過 Rust 的話,可以優先選擇 Gnark,因為它是用 Golang 寫的,上手更簡單一些。最后,還有 zkSNARK 社區的 Cairo,雖然我自己沒有寫過 Cairo,但我已經看到不少人已經成功啟動了,所以我認為 Cairo 的效果應該是不錯的。
花旗銀行:以太坊一旦啟動升級,它可能會導致能源強度降低:金色財經報道,花旗銀行的研究聲稱,以太坊一旦啟動升級,它可能會導致能源強度降低,將以太坊轉變為通貨緊縮資產,并可能通過分片實現更可擴展的未來路線圖。花旗表示,向股權證明 (?PoS?) 的轉變也可能會使以太坊的總體發行量每年降低 4.2%。研究指出,一旦以太坊成為一種通貨緊縮資產,加密貨幣作為價值儲存手段的地位將更加突出。
花旗還預測,作為一種通縮資產,以太坊不太可能成為吞吐量最高的區塊鏈。該報告補充說,隨著合并,以太坊的出塊時間將從 13 秒下降到 12 秒,這意味著費用大幅下降和速度增加。花旗指出,作為 PoS 網絡,以太坊將吸引現金流,從而允許使用區塊鏈目前無法使用的不同估值方法。總的來說,花旗指出,在合并后,以太坊可以被認為是一種節能環保的加密貨幣,因為能源消耗將降低 99.95%。[2022/8/8 12:10:14]
關于代碼圍繞什么去寫,我認為可以基于 KZG 多樣式承諾、IPA、Baby SNARK、Sumcheck 等非常簡單的密碼學協議,是可以做一些實現的。因為,實現了之后,可能會獲得一些教科書上所不能提供的很直觀的概念。比如,代碼運行的速度,對稍大一點的例子電路是否能夠正常使用,瀏覽器最大能承受的電路等等。
我覺得手動寫代碼這一方面,首先有助于大家理解很多概念,比如,到底什么是電路。相信不少朋友都聽說過電路,就是挺難寫的,如果動手寫一下電路就會發現,它其實不算是在寫正常的程序,而是在寫一個證明過程,因為本身零知識證明就是一個證明過程,因此寫電路其實就是寫證明,而非寫計算。寫證明的過程有一些特定的套路和經驗模式,這個需要慢慢熟悉和思考的。
第二個我覺得是有助于對運營效率有所感知,就是知道運行的速度能有多快,以及假如說你想去 build 一個應用,他大概能用在什么地方。比如說你在以太坊一層的合約里做一個電路的 verify,你大概需要多少 gas。事實上這些都是需要你實際操作完之后才能有的一個初步印象。
第三個就是對協議借口、協議流程有一個基礎的了解和大概的感覺。
第四個就是你能對基礎的數學原理有初步的認識,但不需要去學很多,不需要去重新找一本代數的書去翻,因為一本完整的教材包含太多內容了。我覺得通常情況下是沒有必要的,但是可以通過 Google 或者 ChatGPT 去快速學習一下基礎的數據原理。直接通過編程學習的話,感覺是完全不同的,特別是對于使用的參數、輸出的結果,以及如何在代碼中 encode,用什么樣的數據結構,都會有非常直接的認識和理解。
NFT投資組合管理平臺Evaluate.Market完成400萬美元種子輪投資,新增支持以太坊:5月18日消息,NFT投資組合管理平臺Evaluate.Market宣布完成400萬美元種子輪投資,Rho Capital的Ignition Fund領投,Driveby Draft Kings、CastleIsland Ventures、Arca、Notation Capital、Flamingo Capital Syndicate、Dapper Labs、Visary Capital、Niche Capital和Dan Nova等參投。此外,Evaluate.Market宣布將擴展到Flow之外,已添加了800多個以太坊項目,還將添加數千個以太坊項目。Evaluate.Market還增加了對NFT交易市場LooksRare的實時支持。[2022/5/18 3:24:14]
這里我想要推薦 zkiap.com 的課程,它是一個注重實踐的簡單代碼學習課程,每周花點時間就基本上可以慢慢明白是怎么一回事,推薦給所有能寫代碼的朋友們。
但有些朋友可能會問,假如說我不會寫代碼,或者說我沒有時間寫代碼,但是我仍然想快速入門,那該怎么辦呢。我認為第一點就是要準確地理解相關概念,所謂的準確理解就不是一些模模糊糊的理解,比如,我們說零知識有 zero-knowledge,那么到底什么是 knowledge?我覺得是需要搞很清楚的,這些關鍵概念搞得越清楚,看文章就會越順利,包括還有像 witness 這種概念。還有像 Random Oracle 還有 Commitment 之類的概念。為了搞懂 Random Oracle 是什么,我前后可能花了一年時間去看各種東西,慢慢嘗試理解,但但是的資料很少,我覺得現在的資料已經足夠豐富了,已經有一些教科書能夠吧這些概念講的相當清楚了。然后還有一些概念,像 CRS、SRS 是什么,如何用 Polynomial IOP 做一些 plunk 應用。其次像 extractability 還有 preprocessing,這個適合具體應用開發相關的。我認為對這些基礎概念有必要有非常精確的理解,如果不是很理解或者模糊的話,我的建議是先去看這些概念,Google 和 ChatGPT 能夠在這里起到很大的作用。對于基本概念的掌握程度,我認為首先需要能看懂科普文章中的一些密碼,一些黑話。
第二個是能夠對 zkSNARK 有一個清晰的抽象的認識,也就是說能大概知道它是什么,能用一句話去講一下什么是 zkSNARK,而不是只是將它描述為一個 library,或者用一個方式函數調用一下,或者說就是一段代碼,真正的掌握是要比這些都再深入一層。
第三個就是如果好奇的同學或者有更多時間的朋友可以去看一下學術論文,如果第一節能看懂的話,我覺得已經是相當不錯了,這意味著很多密碼學黑話都已經理解了。如果有一些頻繁出現的黑話不理解,就可以去 Google 或者 ChatGPT 弄明白,有些實在很難懂了就可以先放一放。最后就是能初步理解 zkSNARK 的一些應用,如果能做到這一點的話,對一個不會寫代碼的人,已經是對 zkSNARK 已經又了相當深的認識了。
接下來我說的這一類朋友,他們不滿足于一些基礎概念的理解,始終對內部工作原理感到好奇,關于黑盒如何運行,為什么能 work,為什么能提供信任,他的信任又基于哪些東西,應用條件是什么,等等。我這邊的建議是,需要先充分理解一個算法代碼,就是先把一個算法吃透,其實非常重要。因為在算法之間就好比再學一個編程語言一樣,如果 Java 用得很熟練了,再去切換到其他語言,其實并沒有很復雜。前提是,這個語言需要用得特別熟練,如果只是淺淺地能寫一些 Hello World,可能差距還比較大。我覺得可以先針對一個算法,比如說我覺得像 PlonK 是首選的,因為它比 Groth16 簡單很多。PlonK 是我認為我見過的所有算法里最簡單的,雖然 Groth16 的科普文章更多,但事實上它是一個復雜難懂的算法。然后還可以選擇 zkSTARK,Marlin,Spartan,他們的對看論文的要求可能會更高一些。總之,我推薦先學 PlonK。
第二個就是去閱讀一些 Github 上的開源代碼,現在有非常非常多的有意思的項目,幾乎每兩三天都能發現一個很不錯的開源項目,并且代碼質量不錯,我在這里就不給大家推薦了。
第三個點就是如果你想了解內部工作原理的話,你不可避免地要去理解這些公式,但對于初學者的最大問題是,公式無法理解或者并不能記住。我認為這里的核心竅門就是,多抄公式。不停地重復抄公式,同時再思考,在這個過程中就會有神奇的力量,能讓人不知不覺中就明白了一些東西。
在這里推薦一個 MOOC,叫做 zk-learning.org,他們的課程深度不錯,也會涉及到內部的工作原理,也會用非常簡單的語言去抽象地解釋一個或者一類算法是如何工作的。我認為如果能看懂并實現一個最簡版本的代碼并且能看懂 70% 的相關論文,且能不需要任何輔助地手推公式,并能夠大致理解 Soundness 思路,我覺得已經達到了理解 zkSNARK 的要求了,但在這個階段還是不要自行修改和優化協議,這是非常危險的動作,除非有非常多的經驗,否則千萬不要自行修改優化協議,因為密碼學協議中有非常多沒有寫出來的東西。相關的反面教材有很多,我覺得最著名的就是 BCTV14,它是 14 年的一篇論文,他們的論文在做了一次修改優化之后出了一個 bug,然后修了 bug 之后又是一個 bug,而且都是非常嚴重的 bug,也就是說這些頂尖的密碼學家都會犯這樣的問題,那更不要說一個初學者。對初學者而言,你可以自己去設計一個協議,但是你一旦去修改別人的時候,你還要確保對這個東西有足夠清晰的理解。
接下來對于更高階的朋友,可能你是在 build 自己的項目,想用 ZK 去解決一些必要性的問題,需要自己設計協議。首先,我覺得你需要反反復復地讀大量的論文。第二個就是需要補最基礎的計算理論,而不是代數或者射影幾何,或是那些數學概念。我覺得這里面其實最重要的是計算理論,我在這里推薦兩本書,一本是《Computational Complexity: A Modern Approach》,另一本是《Computational Complexity: A Conceptual Perspective by Oded Goldreich》。第三點就是要跳出兔子洞,關注基本問題。因為有些算法還是很深、很燒腦的,有時候需要在一個非常小的細節卡上好幾個月。但我覺得這里面的核心點是為了理解它為什么 work,有些時候你要跳到最外面來問一些最簡單、最直接也最基礎的問題,再去反思這個細節。就是你需要不斷進到一個非常小的細節,同時又要不斷地跳到外面去反復對比思考,這樣就很容易弄懂這一點細枝末節的東西。第四個就是逆向思考,因為很多協議的設計是非常精巧的,有時候需要我們去理解而不是簡單地 follow。但事實上理解又是一件很困難的事,多數情況下我在理解算法的過程中所用到的方法論是逆向思考,也就是說如果將原來的算法換成另外一種,又會產生怎樣的效果。大多數情況下,它是不 work 的,那么它為什么不 work?這是很重要的。
最后,給大家說一下讀論文的心得,因為論文確實比較難讀,都是些非常學術的文章。第一,請務必反復仔細閱讀論文第一節,因為論文第一節通常是論文最精華的部分,他通常描述了這篇論文最主要的貢獻,包括他和前人的不同以及他的新協議或者新算法最重要的特點。通過讀很多論文的第一節,能夠快速找到一個知識網絡。
第二點就是,你需要把論文的參考文獻這幾頁,特地打出來,有助于形成一個知識網絡,就可以沿著參考文獻,找到更多的資料,而不單純是通過 Google 或者 ChatGPT,而是通過這個論文所依賴的前置論文,形成一套理解體系。
第三點是要從歷史的角度看概念的變遷、算法的演化和技巧的組合,這里面能發現非常非常有意思的故事。我覺得也可以找機會和大家分享一下,但這需要很多時間去準備。雖然密碼學已經歷經了 40 年的發展,但是從歷史的角度看,它經過了一個非常快速的發展與變遷的過程。
第四點是,一篇論文需要反復看,大概看懂其中的 90%,需要好幾個星期甚至好幾個月。我最開始去學習這個東西的時候,一開始非常難受,非常有挫敗感的一點是有篇論文我看了半年都還看不懂。但突然有一天,我看到一個密碼學家他的分享里面說他看論文也是要幾個星期才能看完,這時候我才如釋重負,我才覺得原來他們也是這樣。所以說一篇論文看不懂其實是非常正常的一件事。
第五個是,我認為參與社區討論特別有用。
最后一點,找一個 Crypto 領域的問題點,找一個你覺得有意義的工作,然后 get hands dirty,這個能驅動你把關注點集中到一些點上面,更容易做出一些突破性的工作成績。
安比技術社區
企業專欄
閱讀更多
金色薦讀
金色財經 善歐巴
Chainlink預言機
白話區塊鏈
金色早8點
Odaily星球日報
歐科云鏈
深潮TechFlow
MarsBit
Arcane Labs
喜馬拉雅山脈山腳下的不丹,曾被稱為“世界上最快樂的國度”,但不斷擴大的貿易赤字和不斷上升的進口成本之下,這個現實秘境的香巴拉正拉響經濟“警報”.
1900/1/1 0:00:00作者:kenyou 由 Gwei Research 編譯Ordinals NFT 和 BRC-20 代幣的出現.
1900/1/1 0:00:00目錄 一、項目簡介 二、項目愿景 三、特色和優勢 可擴展性 高速度的交易和低Gas費等效以太坊虛擬機(EVM)適用于 Web3 的 AWS 四、發展歷史 五、團隊背景 六、融資信息 七、發展成果.
1900/1/1 0:00:00在《Empire》最新一期播客節目中,邀請到了 MultiCoin 兩位創始合伙人 Kyle Samani 和 Tushar Jain.
1900/1/1 0:00:00Midjourney的風格是簡單、直接、高效,所有精力集中在模型上,不做app,也不做網站。如今,不知道Midjourney這家公司,似乎就不配談AIGC.
1900/1/1 0:00:00在 ChatGPT 的影響下,目前 OpenAI 成為了全球最火爆的 AI 公司。然而回顧過去,它與馬斯克之間的恩怨從創立之初就埋下了.
1900/1/1 0:00:00