解讀 Aztec:將隱私帶入 DeFi 的 L2
作者:echo_z,鏈茶館
近期,鏈茶館發布了L2系列文章,從L2概覽到StarkWare、ZKSync等具體項目,分別做過詳細介紹。除了之前介紹過的龍頭項目外,L2中還有個較為特殊的項目Aztec,實現了隱私交易。隱私交易並不新鮮,但是Aztec即將上線的新功能可以實現隱私Defi,彌補了隱私賽道的缺口。本文將對Aztec進行分析。
市場概覽
在現實世界中,「隱私」幾乎是默認選項,沒有人希望自己的信息泄露。但在區塊鏈世界中,由於鏈上信息的透明性,用戶大多數時候無法享受交易行為的隱私保護。對於現階段的散戶來說,尚且無傷大雅,但是隨著行業發展,隱私也必然會成為重要功能。鏈茶館判斷,用戶需求可能會集中在兩方面:
其一,大戶對於交易隱私保護的需求。大戶如果公開自己的大筆餘額和交易行為,無異於帶著家產招搖過市,容易吸引黑客或者暴露身份。從目前已有的隱私交易項目來看,資金也多集中於大戶交易。
下圖為Tornado Cash的每月取款數據,其中數字代表取款次數,區間代表提款份額(Tornado的機制為通過0.1ETH、1ETH、10ETH、100ETH四種面額來存提款),計算可得100ETH的提款總額最大,以6月為例,占全部提款額的87.6%。
來源:https://dune.com/poma/tornado-cash_1
其二,當Web3發展到投資之外的範圍,如通訊社交等場景時,隱私的需求一定也會凸顯。相信沒有人希望自己的賬戶不斷被垃圾信息干擾,也沒有人會希望自己和密友間的聊天內容被公開。
總結而言,由於Web3當前的使用場景集中於交易投資,僅大戶對於隱私有較強需求;而隨著Web3功能場景的拓展,隱私需求也會拓展到散戶。
從目前的供給來看,實現了隱私功能的項目絕大多數只能滿足簡單的轉帳功能。隱私賽道的頭部項目包括:FDV~21億美元的Monero和~11億美元的Zcash,二者都是獨立的L1公鏈,不支持智能合約;FDV~2.3億美元的Tornado Cash則是建立在以太坊上的智能合約,只能支持按照有限面額的存提款。除此之外,個別項目如Secret Network可以支持智能合約,FDV~1.7億美元,然而其核心的隱私功能依賴於硬體設備,安全級別太低[1]。
因此,隱私賽道缺乏功能完備、且安全級別足夠高的項目。Aztec作為新興的隱私項目,具有補足這一缺口的潛力:作為ZK Rollup的項目,可以共享以太坊的安全性,且項目的中短期目標就是實現Defi交互的隱私性,能夠為隱私賽道帶來新的體驗。
產品機制
Aztec的產品體系為:基於底層的PLONK證明系統,實現賬戶間的匿名交易,並通過網關合約的嫁接來實現和Defi項目的隱私交互。除了網關的部分外,Aztec的隱私實現方式其實和Zcash很相似,類似一個通過Rollup技術共享以太坊安全性的Zcash。下文將對其隱私架構及Defi交互方式進行詳述。
隱私架構:UTXO模型與隱私證明
Zcash的記帳模型遵循比特幣的UTXO(未花費交易支出)模型,每一個UTXO被稱為一個Note(票據),記錄了每筆交易的變化。舉個例子,如果我的賬戶中有10元的票據,而我此時給其他人轉帳5元,那麼這張10元的票據就會拆分成2張5元的票據,其中一張的所有者是被轉帳者,另一張的所有者就是我自己。而對於一個賬戶地址而言,餘額的全部就是所有UTXO的總和。
來源:https://medium.com/aztec-protocol/an-introduction-to-aztec-47c70e875dc7
與此相對的,則是以太坊基於賬戶的記帳模型:每個賬戶對應一個餘額,轉帳時需要在雙方的地址數上做加減法。由於每個賬戶的餘額都已經清晰記錄在最近一次交易中,不像UTXO那樣需要加總賬戶下的所有UTXO,因此對於較複雜的智能合約來說,賬戶模型更易於計算,是較主流的記帳模型,而UTXO則多見於比特幣等簡單轉帳網絡。
來源:https://medium.com/aztec-protocol/fully-confidential-ethereum-transactions-aztec-networks-privacy-architecture-274f968b13d4
UTXO模型和賬戶餘額模型有各自的優劣勢,而在隱私方面,UTXO適於存放於同一賬戶的不同地址下,更能夠混淆交易之間的聯繫[2],這大概是Zcash和Aztec都選擇了UTXO的原因。
在這樣的記帳模型下,用戶的每一次交易,本質上是銷毀了一張或N張票據,生成了另外總和相等的一張或N張票據,並轉讓了部分票據的所有權。
在Aztec的數據結構中,所有票據的狀態存儲在兩個Merkle Trees中,其中一個是note tree(票據樹),存儲著所有生成過的票據,另一個則是nullifier tree(廢棄樹),存儲所有被銷毀過的票據。所謂「擁有」一張票據,即在note tree中存在對應票據、而在nullifier tree中不存在對應票據[3]。
來源:同上圖
那麼,用戶的隱私是在哪一步實現的,又有哪些信息經過了Rollup(打包)呢?這就涉及到多層證明生成的過程。
當用戶要進行一筆交易的時候,需要銷毀並生成相應的票據,再將票據的所有權轉移,而對於這筆私密交易,用戶需要在本地生成一個「隱私證明」(privacy proofs)。隨後,28筆私密交易將會聚合為內部Rollup證明( "inner" rollup proof),之後又有32個這樣的內部Rollup證明聚合為外部Rollup證明("outer" rollup proof),外部Rollup證明將會最終被提交到L1上,供節點驗證。
下圖中顯示的是4個內部Rollup證明聚合為1個外部Rollup證明,總共112筆交易,而在今年3月更新的SDK中,提升為32個內部Rollup證明,換言之一個最終提交的Rollup證明中可以包含28*32=896筆交易。
來源:https://medium.com/aztec-protocol/privacy-for-pennies-scaling-aztecs-zkrollup-9f2b36615cc6
需要注意的是,只有用戶在本地生成的隱私證明,是真正不泄露信息的零知識證明,也是整個系統中唯一為隱私負責的部分[4]。而在其之上的內部Rollup、外部Rollup證明,都和StarkWare、ZKSync等通用ZK系L2一樣,並不必然是零知識。BTW,StarkWare團隊曾提議,將ZK Rollups改名為Validity Proof,以免混淆概念[5]。
Aztec的Rollup方式和StarkWare、ZKSync等ZK系L2還有一個很大的不同:通常ZK系Rollup都是將多筆交易打包,生成聚合證明,而Aztec為了實現隱私,需要將每筆交易分別生成證明,再將證明打包生產證明。這大概也是Aztec的gas fee高於其他所有Rollups的原因。
在整個過程中,可以看到多個源自Zcash的做法,包括UTXO記帳模型、兩種Merkle Trees的設計、用戶在本地生成隱私證明的方式,都和Zcash相同。此外,Aztec還提供內部轉帳的功能,也就是一個匿名賬戶可以給另一個匿名賬戶轉帳,這能夠隱匿兩個地址之間的交易聯繫,避免由於某個錢包地址餘額不足、需要輸入礦工費等場景下,和另一個錢包產生公開聯繫。如此,會比Tornado Cash這類僅僅通過面額池存提款的方式更能保護隱私,而Zcash也提供這一功能。
Zcash提供的多種轉帳模式,紅框為匿名到匿名,也就是Aztec中的內部轉帳功能。來源:https://z.cash/technology/
至此,我們基本可以理解Aztec的隱私架構:採用UTXO的記帳模型,以「票據」的分拆和所有權轉讓實現轉帳,由用戶在本地生成隱私證明來實現隱私交易,再通過雙層Rollup實現多筆交易的聚合證明,提交到L1驗證。底層隱私架構有不少設計取自Zcash,而通過Rollup的聚合證明方式則借用了以太坊安全性,有些類似一個Rollup版的Zcash。
Aztec Connect:通過網關實現Defi隱私交互
上述隱私架構實現了用戶的私密交易,但到這一步為止只是將隱私交易遷移到了L2,相對原來的解決方案並沒有顯著進步,仍然只能實現簡單的轉帳。Aztec的目標也不止於此,長期希望能夠支持所有智能合約的隱私交互,而其中短期目標是實現L1上Defi的隱私交互。
Aztec實現隱私Defi的方式比較討巧。由於採用了UTXO模型,不適用於複雜的智能合約,因此Aztec沒有試圖在L2上推廣智能合約,而是通過「網關」的方式,將交易聚合到L1。
其具體的方式是:當用戶要進行一個Defi交易時,Aztec會把同類型的交易打包,並把這些交易傳遞給Aztec Bridge Contract------一個部署在L1的合約,再通過這個合約聚合資金並調用相應的Defi功能,最後將交易完成的資金按比例返還給L2上的賬戶[6]。
這有點類似一個金庫策略,將同類的交易行為打包完成,在實現隱私的同時也能夠分攤gas fee。
對於L1的Defi項目來說,遷移變得非常簡單,不再需要重新部署合約,只需要和Aztec Connect完成接口即可。不過,這也降低了項目部署的靈活性,只有同類型的交易足夠多才能夠攤薄費用,否則單筆交易仍然會比較貴。如此看來,這一方式短期內大概只適合操作單一、資金密集的項目。
運營現狀
Aztec的隱私設計基於UTXO模型,不適於複雜的智能合約開發,目前的產品僅限於團隊自己開發的zk.money,對於其他項目的集成主要通過Aztec Connect網關合約來實現。
zk.money最早發布於去年3月,目前正在新版和舊版的分叉階段,新版仍未上線。
舊版zk.money只能實現簡單的轉帳支付,支持ETH/DAI/renBTC三種資產。用戶每次連接時,需要通過ETH錢包進行簽名,之後可通過「Shield」存款,再通過「Send」進行內部轉帳、或提款到L1賬戶。
來源:https://old.zk.money/asset/ETH
由於功能簡單、手續費較高,舊版zk.money的使用率較低,目前TVL僅在~500萬美元,高峰時也僅為~1,400萬美元。
來源:https://defillama.com/protocol/aztec
新版zk.money將會上線Aztec Connect,實現隱私Defi,是Aztec項目的重要里程碑,原定於6月初上線,但目前仍在處理問題,還沒有明確的上線日期。根據今年4月的官方博客,初期應該會集成Element.fi和Lido,作為最早上線的隱私Defi[7]。
整體來看,Aztec的設計可以方便地接入L1的Defi,但是沒有提供項目自由部署的選項,如此則較難建立獨立的公鏈生態,更像是為L1的Defi項目集成了一個隱私選項。
團隊及融資
Aztec的核心團隊有較強的技術能力,其底層證明系統PLONK的三位合作者中的兩位均在Aztec。
CEO Zac Williamson,牛津大學粒子物理學博士,PLONK發明者之一,曾在CERN(歐洲核子研究中心)和T2K(日本一個粒子物理學實驗)擔任物理學家。
CPO產品總監Joe Andrews,倫敦帝國學院材料科學工學士,曾在矽谷的餐飲創業公司Radish擔任CTO。
首席科學家Ariel Gabizon,以色列魏茲曼研究所(Weizmann Institute)計算機博士,曾在Zcash擔任研究員和工程師,也是PLONK的發明者之一。
截至目前為止,Aztec披露過的融資金額累計1,910萬美元。2018年11月公布了由Consensys領投的210萬美元種子輪融資;2021年12月公布了由Paradigm領投的1,700萬美元融資,其他參投者包括IOSG Ventures、Variant Fund、Nascent、imToken、Scalar Capital、Defi Alliance、ZK Validator及天使投資人Anthony Sassano、Stani KulecFhov、Bankless、Defi Dad、Mariano Conti、Vitalik Buterin,且上輪投資方 a_capital、Ethereal Ventures和Libertus Capital也繼續加注。此外,2019年9月也曾公布過一輪種子輪融資,但未披露金額。
優勢與挑戰
鏈茶館認為,Aztec的核心優勢為:產品實現了安全級別較高、且能夠和Defi項目交互的隱私功能,而當前隱私賽道絕大多數產品僅能支持簡單轉帳功能,Aztec有效填補了賽道空缺。不過,這一功能仍未上線,需要觀測上線後的功能表現。
然而一體兩面,特殊的隱私功能也在很大程度上限制了項目。
一方面,Aztec依靠集成網關合約來實現對Defi項目的操作,在降低部署難度的同時也降低了靈活性,短期來看更適合操作單一、資本密集的項目。
另一方面,為了實現隱私,要求給每一筆交易都生成隱私證明,雖然項目通過雙層Rollup方式分攤了存儲空間,但Aztec的手續費在所有L2中仍然是最高的,對用戶而言門檻也較高,更適合大戶。
總體來看,Aztec的產品功能簡單直接,預計如果功能表現尚可,會在L2中佔據一席之地;但就目前與Defi的標準化集成方式來看,更像是為L1的Defi項目所做的功能補充,可能天花板不會太高。
Aztec的遠期目標不止於此,最終是希望實現所有智能合約的隱私交互,而要實現這一目標,大概需要全新的方案。