Manta 創始人 Shumo 對話清華密碼學博士,ZK 賽道深度探討
北京時間7月23日21:00,Manta Network 聯合創始人 Shumo Chu 受清華大學學生區塊鏈協會(THUBA)邀請在 Twitter Space 與密碼學博士 Sputnik 進行了一場對話,話題涉及 ZK 基礎知識、ZK 科研及應用,以及 Manta 如何利用 ZK 解決 Web3 隱私問題,以下為對話全程文字實錄:
Yiki(主持人):
大家好我是清華區塊鏈協會(THUBA)的 vice president , Yiki。從 2017 年成立至今,我們已經有了 5 年的歷史,舉辦過近 200 場的活動。在即將到來的 8 月還會舉辦首次的黑客松,歡迎大家關注和報名參加。那麼下面可不可以請 Shumo 來簡單地介紹一下 Manta 是做什麼的以及您的自我介紹。
Shumo:
大家好,非常榮幸參加這個活動,我是 Shumo,Manta Network cofounder。首先介紹一下 Manta,我們大概是 2020 年 10 月份成立。當時我們成立 Manta 的原因是覺得區塊鏈(Web3)有很大的問題,就是隱私。我們當時就非常看好 Web 3 這個行業的前景,但是如果這個行業走向主流的話,所有的鏈上交易都是明文,這是非常不好的。我們覺得隱私是人們最基本的權利。如果大家稍微看所有現在公鏈的架構的話,可以發現所有的公鏈都基本上是沒有隱私的,除了極少數的像 Monero 或者 Zcash。
所以我們的初衷就是解決這個隱私問題,那具體怎麼解決呢?我們首先做了鏈上的隱私支付產品------ MantaPay,目前已經上線了兩版測試網。然後你可以把它想像成是一個 bring-your-token 版本的 Zcash,這個產品是在 Polkadot 生態上線的,但是我們之後也會走向多鏈。我們即將開始的第二步是做隱私資產上的智能合約,已經研發了差不多半年左右,但是還沒有正式發布。我覺得 Manta 用一句話概括就是我們是做整個 Web3 的隱私層。我們希望未來在所有 Web3 的傳統操作裡面,你可以有一個選項------privatize by Manta,然後你的交易就會自動變成隱私的交易。
關於我自己,我之前在華盛頓大學讀 PhD,做數據庫系統和形式化驗證。畢業之後在 Algorand 做了一年的 research scientist,之後在加州大學聖巴巴拉分校做助理教授,現在全職做 Manta Network。
Yiki:
好的感謝。Sputnik 你可以也簡單介紹一下自己,以及你現在在科研關注的一些領域。
Sputnik:
各位好,我是 Sputnik,現在的身份是在 THUBA 負責 ZK research 方向,我個人在清華攻讀密碼學的博士,主要是研究區塊鏈上隱私保護技術的一些內容,包括算法和應用,零知識證明技術。我們的 ZK research 目前主要是面向大眾建立一個 ZK 的討論組,包括產業和學術的交流,也歡迎大家一起參與。很高興今天能夠和 Shumo 一起,來討論 ZK 的應用,歡迎大家。
ZK 是什麼
Yiki:
首先請 Shumo 來簡單地介紹一下什麼是 ZK,它的原理和應用,用一個小白的話來概述一下。
Shumo:
ZK 的全稱是 zero knowledge proof(零知識證明)。它最初被理論上研究很多年,最早的研究至少是在二三十年前,是 GMR (Goldwasser Micali Rackoff)那篇論文。然後大家覺得理論上這個東西是可行的。一個很重要的里程碑是 Zcash,當時好幾個學校教授合作做了第一版。大家以前都覺得這是一個理論上的東西,是不太可能實踐的。然後他們做了一個比較實際的 construction 叫 libsnark,當時支持了第一版的 Zcash,大家才意識到這個東西是可以實踐的。
我借用 Micali 講的,什麼是 ZK,你可以想像成是一個 encryption on computation。Encryption 一般是指數據加密,就是可以把 data 從明文變成密文,但是 ZK 它其實是一個相對更強大的東西。它是說 encryption on computation,就是把計算給加密了。具體來說,比如說假設你想證明你知道一件事情,比如 3 加 5 等於 8。然後希望證明你知道這個事情,但是你並不告訴具體的這個 3 加 5 和這個 8 的 input 是什麼。然後你有這個 3 的 commitment、5 的 commitment 和 8 的 commitment,你需要說服某人這是正確的。具體到區塊鏈裡,你需要用這樣的方式向所有的 validators 或者 node runners 證明就是非常非常 high level 的 ZK。
Yiki:
謝謝 Shumo。Sputnik,從你的角度,你覺得 ZK 的發展是怎麼樣的以及你會怎麼去定義 ZK 呢?
Sputnik:
從密碼學的角度來說,ZK 的這個協議其實非常簡單,一句話可以概括:它是一個兩方的密碼協議,然後有一個 prover 和一個 verifier,就是我們說的證明者和一個驗證者。他要完成的事是證明者需要零知識的向驗證者證明他知道一個秘密。
然後什麼是零知識的呢?就是我們從密碼學的角度,它可能需要用到一些信息論的知識,去嚴格地定義,就是 verifier 在和 prover 進行交互的過程之中不能獲知也不能獲得自己原本沒有的能力,或者說知識,就像剛才 Shumo 舉的一些例子,比如說要證明 3 加 5 等於 8,他知道這個式子,但是他不能夠公布。所以說可能需要用一個 commitment。commitment 就是我們講的一個密碼學的承諾,然後它具有一個綁定性和一個掩藏性,就是你可以看到我的 commitment,然後其內在的值就被它綁定住了,有點像哈希函數。
如果被綁定的值改變,commitment 也會改變,就是綁定性。掩藏性是說,看到 commitment 又不能確知裡邊是什麼,我將來可以打開,現在可以給你提供一個零知識證明,然後讓你相信我承諾的就是我的這個值。這就是從密碼學角度看待 ZK。
Yiki:
那正好你剛剛也從科研的角度來講 ZK 的一個定義和發展,那可不可以再簡單介紹一下現在科研領域是怎麼去研究 ZK 的,你們都會關注什麼?
Sputnik:
其實在科研領域,也有不同的方向,有很理論的,那就是可證明安全,那是非常密碼學理論的一套內容,它需要用一些形式化的方法,這個我們就不去詳細地展開,此外就是一些應用。應用的話也有在算法層面做的,就是提出一些新的優化的算法,可能性能會比之前的算法更好。然後就是像 Zcash 這樣,Zcash 也是剛才 Shumo 提到幾個教授設計的,協議是在 14 年提出的,然後系統是在 16 年上的。這種它其實就是相當於用算法來實現一個應用。大概就是這些方向。
Yiki:
那就是其實你在 THUBA 也關注 crypto 很長時間了,你覺得現在 ZK 的科研和 crypto 產業之間的關聯是怎麼樣呢?衔接地好不好?
Sputnik:
我覺得可能 ZK 要在科研方面可能已經有一些成果,有很多不同的算法,但是我覺得和產業結合的話,還需要再提高它的性能等等的一些優化。我的意思是現在可能有些算法我們在理論上可能有一些好的結果,但是在實現上可能不確定有沒有那麼好。我們請 Shumo 來跟我們具體講一講在產業應用方面,ZK 的應用具體達到一個什麼程度。
Shumo:
科研當然非常重要,我覺得科研和實際應用的鴻溝在於科研主要從複雜度角度研究,實際應用更關注實際性能。密碼學比較好的點是理論的性能和實際實現差別不大,不會有大的隱藏常數,另外是實現一個算法可能需要大型的工程和人員。
第二個就是 ZK 底層協議實現的工程量是非常複雜的,例如 R1CS 和 plonk 的電路。然後所以說包括我們 Manta 在 build 一個叫 OpenZL(開源零知識證明庫),相當於是 middle layer 能夠提高開發效率,我認為科研和產業之間的 gap 就是這個 middle layer abstraction,當然,對密碼學底層的了解非常好,也有益於工程的。
Yiki:
好的,好的感謝。那么剛剛也提到了一些 ZK 的應用,我想請 Sputnik 再詳細的梳理一下 ZK 在區塊鏈領域以及非區塊鏈領域都有怎樣的應用場景。
Sputnik:
在區塊鏈方面的應用,ZK 主要分為兩個部分,我認為一個是隱私,然後另一個是擴容。隱私的話包括剛才我們多次提到的 Zcash 項目,可能大家也大多都聽過大零幣這個名字。它主要實現的是在一個交易層面的隱藏,就是它通過零知識證明實現了交易三要素,也就是轉賬方、收款方還有交易內容三項方面的隱藏,比它之前 Zcoin 實現了改進。
此外的話是擴容。其實所謂說擴容,我們往往聽到區塊鏈擴容這個詞,它可能主要反映的是一個 TPS 的提高。然後像 layer1 的公鏈,怎麼進行擴容和 ZK 有什麼關係呢?剛才我們提到,一個零知識證明,那它首先是一個證明系統。然後所以如果說剛才保護隱私,用到是它零知識的性質。那么在擴容這邊,我們用到其實是它證明的一個性質。
像現在往往大家聽到很熟悉的一個詞叫做 ZK roll-up,以太坊現在也在進行這個 ZK roll-up 擴容的探索。它的邏輯就是我們希望讓這個公鏈回歸它本身,因為公鏈其實成本是很高的,大家要進行共識,所有人都要維護一套賬本,都要去重新跑一個計算,這個成本很高。所以說我們希望把這個計算成本拿到鏈下,然後鏈上只對最終的結果進行共識。
就是說我們這個區塊鏈其實是一個狀態,就是由大家的賬戶的 balance 來構成,然後每有一筆交易,balance 就會更新一下。那這其實就是一個計算的過程,我們就希望在鏈下進行這樣的計算,然後向鏈上提交經過計算之後的新結果以及我計算是正確的這個證明值。鏈上只需要驗證這個證明值,就可以直接把狀態更新,相比於直接計算,驗證證明值,它其實非常快的。所以這就是我們說的 ZK roll-up 它進行一個擴容。這就是 ZK 目前在區塊鏈方向的應用。
然後在非區塊鏈領域,其實我們說的往往是一些隱私計算。當然現在隱私計算也都在和區塊鏈進行結合。像隱私計算的話,比如說我們希望做到的多方安全計算,多方需要共同計算出一個結果。那在這個之中就有可能會用到一些 ZK 的協議,它往往是作為一個組件來進行出現。然後基本的應用情況就是這樣。
Yiki:
好的感謝。那么現在我想請問一下 ZK 它為什麼重要呢?就比如說如果想要對一些大學生來講解 ZK,Shumo 你會來怎麼解釋呢?
Shumo:
一個根本的角度是人与人的信任。整個區塊鏈系統就是在解決信任問題。就像剛才 Sputnik 講的,現在大家已經看到的 ZK 的應用非常重要了。第一個是鏈上隱私,基本上 ZK 是目前唯一解決方案,要在達成共識情況下隱藏信息。第二個事情是 rollup,就是對交易做打包提供證明來驗證。所以從大的趨勢上來講,我們整個社會發展方向是把人与人之間建立信任的過程去掉。ZK 現在從原來特有的一些協議,到目前已經可以對任意的計算做驗證,其實大家已經可以看到有一種摩爾定律式的提升了。
怎麼學習ZK:
Yiki:
了解,那就順著這個話題可以再問一下。Shumo 就是您可以結合你自己學習 ZK 的一個經歷。給大家一些小白怎麼從 0 開始學 ZK 的一些建議嗎?
Shumo:
我覺得首先是大家需要就是明確一個觀點,就是看第一個是說大家學習 ZK 的目的是什么?ZK 的技術栈很深,明確目的更有效率。第二點是如果大家想做 ZK 的 master 那麼需要從基礎的密碼學內容學起。然後年輕一代的密碼學家大家都是看一些比如說 斯坦福大學教授 Dan Boneh 的公開課開始學的,因為那就是密碼學最基礎的一些東西。
第二個就是可以去看 Github 上開源的庫,實際用起來我覺得基本上就是這兩個方面。一個是說你能讓學習就從密碼學最基礎的這些直接開始學習。第二個實踐上就是把這個程序開始寫起來。
Yiki:
明白,我覺得非常有借鑒意義,不僅要從理論上來學,然後寫代碼也非常必不可少。那么 Sputnik 你對這個問題有什麼看法嗎?因為據我了解的話,你是從大學就是學數學上來的,你會對一些同學學習 ZK 有什麼建議嗎?
Sputnik:
我本科是學數學,後來學習的子方向是信息安全,然後從大三開始接觸密碼學。如果說大家想要系統的了解,然後能夠去自己上手應用的話,那麼我也是建議需要學習一些密碼學的基礎概念,包括說簽名,哈希函數,MAC 等等一系列的概念,然後包括密碼學的方法,怎麼定義零知識。
如果想簡單的了解,那我覺得大家可以就是首先你要明確這個 ZK 協議他是在做什麼,我給大家推薦一篇文章,叫做 How to explain ZK protocols to your children,90 年代發表在美密會,美密會是密碼學的最權威的峰會之一。這篇文章裡邊用到一個大家比較熟悉的阿里巴巴與四十大盜的例子,以及零知識洞穴,都是出自這篇文章,它是一個講故事的方式詳細介紹了 ZK 的各種性質,以及它的一些密碼學工具,包括什麼叫做模擬器,模擬器是我們用來證零知識的一個工具。另外的話,大家也可以關注我個人的一個 Repo 還有一個播客,可以在小宇宙搜索零知識洞穴。然後裡面也介紹了就是這篇文章,還有關於 ZK 的一些應用。
ZK 賽道現狀與未來:
Sputnik:
那麼我們接下來的一個主題就是說聊了這麼多關於 ZK,以及 ZK 的學習,然後也希望聽一聽 Shumo 從產業的角度來看,為什麼我們說現在 ZK 應用的賽道它非常的卷,就是好像現在有很多 ZK 應用的項目,包括說 zkSync 等等,還有也包括剛才提到的 Zcash 等等,甚至以太坊基金會自己也在做。然後他們背後都有一個強大的密碼學團隊,然後包括像 Starkware 它的這個 cofounder Eli Ben-Sasson 他本身是這個以色列的教授,然後他也是 Zcash 的一個創始人,然後想問問 Shumo 對這個現象有什麼看法?
Shumo:
這個首先我覺得就看大家對卷這個詞怎麼理解。的確是我覺得是這樣的,無論是已有的項目,還是在創業階段的項目,我可以告訴大家的是只會更卷,不會變得不卷,就是肯定是越來越卷的。但我覺得卷這個事情對於包括 ZK 這個領域和包括我整個 web 3 是一個好的事情。Web3 是可以自由進出的領域。大家覺得自己都有機會,所以卷就開始了。其實卷之中,各個項目做的事情不完全相同,Starkware 就很有特色,有自己的編程語言。
然後還有一個問題就是,怎麼切入這個卷的過程,就是可能並不要看現在正在火的這些項目在做什麼,而是想說在這個領域還有哪些需求,我們怎麼來解決一些實際的問題。總而言之,我覺得卷是不可避免的現象。然後我覺得如果大家想在 ZK 這裡做事情,還是找到自己的切入點而不是模仿其他項目。
Sputnik:
關於這個 ZK 賽道的問題,還想請你談一談,ZK rollup 領域的幾家頭部公司包括 zkSync, Starkware, Scroll 等,他們都有一些什麼樣的區別呢?這可以談一談嗎?
Shumo:
就是首先我並不是自己做 ZK rollup 的,關於這個問題,我認為首先是 EVM 等效性,就是項目是不是能完全兼容 EVM。
第一種叫 evm compatible 這個是 zkSync 做的。他的做法是並不會把整個的 evm 放到電路裡面,而是自己做了一個 VM。因為把 EVM 放到電路裡這個技術難度太大了,然後會產生一些問題。這是 zkSync 的 approach,它的好處是可能上線會比較早,也就是說,在實際的主網裡面, zkSync 有可能是這幾家裡面主網上線最早的。但如果只在 Solidity 層面兼容,以太坊很多工具包括調試器是用不了的。
Scroll 和 Hermez 都是號稱有 EVM 等效性,這個我認為更好,能夠利用工具鏈。
Starkware 到目前為止 prover,就是證明器還是閉源的。然後您剛才說那個以太坊基金會在做的其實是一個純技術探索,應該大概率不會實際上線。
Sputnik:
然後那接下來就是關於這塊 ZK 賽道,我們還有最後一個問題就是說我們剛才講了他在 ZK 在隱私方面還有包括 rollup 方面的這樣一些應用。但是其實對於開發者而言,可能剛才說都是需要有專業的密碼團隊。然後應用的話其實像包括 rollup 這種,我們希望其實也做到一個,這個使用者透明,就是他可能感覺不到這個中間層的存在。我的問題是我們有沒有可能做出一些更接地氣的產品呢?就是讓普通人都能感受到的都能去用的,有沒有這種呢?
Shumo:
我覺得這問題非常好,我覺得當然是有的。就第一點關於 ZK rollup,它是沒有隱私的,可以直接在中間層上部署,比如 zkSync,不需要自己懂 ZK。但是如果是偏隱私的角度的應用,就需要自己懂 ZK。比如說舉個例子,比如 Manta 的隱私資產的平台,那你和這個隱私資產交互,那你就可能需要自己做這個 ZK 的編程。我覺得這是對於開發者來說非常有意思的一件事情。
第二點,我覺得在這個領域雖然有密碼學的背景非常好,但是高階語言和工具的發展使得開發者不再需要手寫底層的電路,就像高級程序語言的出現使得不用手寫匯編。所以我們可以看到用 ZK 編程門檻其實是越來越低的。我覺得這事情肯定是需要時間的,將來不需要開發者懂得每一個密碼學細節,ZK 編程的語言和庫也在不斷地出現。
Sputnik:
好的。謝謝 Shumo。我大概明白你關於 ZK 的一個展望。然後那接下來一塊我們可能想聊回關於 Manta。接下來可能想問的問題就是我知道我們 Manta 正在做這個 MantaPay,就是也是一個支付系統,也是具有隱私的性質,然後可不可以請 Shumo 介紹一下這個 MantaPay,然後同時講一講 MantaPay 和 Zcash 的區別?
Shumo:
首先是說從解決問題的角度。首先我們確實借鑒了 Zcash 很多成功之處,但是我協議很大的不同,就是 Zcash 只支持單個幣種,我們支持多個。我們在整體概念上也有區別,Zcash 是要從 0 build 一個東西。我們是想要把隱私作為一個可以賦能整個產業鏈的基礎設施,而不是只做自己的支付系統。
第二點從技術角度,我們比 Zcash 起步晚所以用到了更新的密碼學技術,包括 ZK 友好的哈希函數。我們的電路大小是 Zcash 的 1/10。性能更好,用戶體驗更好,這個是我們和 Zcash 的相同點和不同點,我們當然也是站在巨人的肩膀上,學習了 Zcash 的很多東西。
Sputnik:
好的,謝謝 Shumo 關於 MantaPay 的介紹。然後另外的話我還有一個細節問題,我個人比較好奇,在此之前我可能先向大家介紹一下這個概念,就是 trusted setup 這個叫做可信設置。就是說我們在一些算法當中,有的時候我們需要先通過一個 trusted setup 來生成一個算法需要用的參數,然後像在 Zcash 之中它最開始的設計,它的算法就是需要這麼一個設計的。像那個之前 Shumo 介紹,我了解到是不是我們 Manta pay 也需要有這樣的一个 trusted setup,我想聽一聽,因為現在可能也會有一些不需要的 trusted setup 的一些算法,但是我們依然採用了這點,是不是也有什麼好處呢?
Shumo:
對,就是這個肯定是有好處的,也是目前使用比較廣泛的。零知識證明系統有兩種,一種是我們現在用的叫 Groth16,另一種是 Plonk,各有優劣。前者需要 trusted setup,後者不需要(application-specific trusted setup),我們通過測試發現前者性能好。
從很多密碼學的細節上來看,二者電路有差別,證明系統不同,概括起來,我們現在用到 trusted setup 純粹是性能的考量。用戶設備不同,產生證明時間也不同,我們不能"歧視"慢的用戶。具體就是,證明生成的時間是 2 秒鐘還是 20 秒,這個其實是會對用戶的體驗產生本質影響的。這個是我們在性能上的考量。
然後第二點,trusted setup 安全性還是可控的。Manta 社區會有很多成員參加,我們可能也會應邀一些在圈內比較有聲望的人參加 trusted setup。所以誠實性可以保證,這就是我們用 trusted setup 的原因。
Yiki:
好的,謝謝 Shumo,今天我們這個 AMA 已經進行了一個小時,已經臨近尾聲。整體我們從什麼是 ZK 到小白怎麼學習 ZK 以及 ZK 的一些科研和產業的現狀都展開了非常深入的討論。我們嘉賓的環節就結束了,謝謝 Shumo 和 Sputnik 的分享。
關於 THUBA
清華大學學生區塊鏈協會 (THUBA) 是熱衷於區塊鏈技術研究的清華學生自發組建、自主管理的學生組織,旨在成為連接中外高校區塊鏈領域的橋樑,致力於教育和培養 Web3 的未來領軍人才。
Manta Network 致力於通過隱私保護構建一個更好的 Web3 世界。Manta 的產品設計從第一性原理出發,通過 zkSNARK 等領先的密碼學架構為區塊鏈用戶提供端對端的隱私保護。在保障隱私的同時,Manta 兼具互操作性、便捷性、高性能以及可審計性,允許用戶進行任意平行鏈資產間的隱私轉賬和交易。Manta 的願景是為整個區塊鏈世界提供更便捷的隱私保護服務。
Manta 的創始團隊由多位加密貨幣資深人士,教授和學者組成,他們的經驗包括哈佛大學,麻省理工學院和 Algorand。Manta 的投資機構包括 Polychain、ParaFi、Binance Labs、Multicoin、CoinFund、Alameda、DeFiance 以及 Hypersphere 等。Manta 也是波卡官方 Web3 基金會資助獲得者,Substrate Builder Program 成員,伯克利大學區塊鏈加速器成員。