以太坊性能問題可以用什么來解決
2月26日21:00,BlockMania AMA 51期繼續(xù)進(jìn)行,本期主題為《零知識證明如何解決以太坊性能問題》,分享嘉賓為安比實(shí)驗(yàn)室工程師p0n1,他為大家解讀了零知識證明在以太坊擴(kuò)容問題上的發(fā)展現(xiàn)狀和未來方向,以下為本次分享的文字整理。
關(guān)于安比實(shí)驗(yàn)室
安比(SECBIT)實(shí)驗(yàn)室專注于區(qū)塊鏈與智能合約安全問題,全方位監(jiān)控智能合約安全漏洞、提供專業(yè)合約安全審計(jì)服務(wù),在智能合約安全技術(shù)上開展全方位深入研究,致力于參與共建共識、可信、有序的區(qū)塊鏈經(jīng)濟(jì)體。
當(dāng)我們談?wù)搮^(qū)塊鏈性能時(shí),我們談些什么?
很多人喜歡用「不可能三角」這種模型來討論一個(gè)系統(tǒng)面臨的設(shè)計(jì)難題。區(qū)塊鏈也不例外,大家一定聽過關(guān)于安全、去中心化、高效這三個(gè)方面的不可能三角或者說三元悖論吧。
在這個(gè)很流行的說法中,「高效」其實(shí)就是我們常說的「性能」,也叫「可擴(kuò)展性」或者 Scalability??梢哉J(rèn)為,以太坊和比特幣從設(shè)計(jì)上更側(cè)重于「安全」和「去中心化」這兩點(diǎn),因此不可避免地顯得不是很「高效」。
尤其是以太坊,作為擁有最多開發(fā)者和應(yīng)用的區(qū)塊鏈平臺,越來越多的人在上面嘗試開發(fā)好玩有用的應(yīng)用,但平臺能提供的性能支撐極其有限,因此大家長期以來都在高喊「以太坊需要擴(kuò)容」!?。?/p>
這也是為什么在以太坊之后,市場上又出現(xiàn)了很多「以太坊殺手」——許多想從性能層面超越以太坊的項(xiàng)目。
怎么超越以太坊呢?
其實(shí)超越的方法其實(shí)也不難,「只需要」?fàn)奚豢赡苋侵械牧硗鈨牲c(diǎn)即可。
但可能大部分人還是覺得「安全」和「去中心化」是不能放棄的,選擇繼續(xù)留在以太坊。這導(dǎo)致「以太坊殺手們」冷冷清清凄凄慘慘無人問津,能開飛機(jī)的公路上卻沒有車,性能「優(yōu)勢」完全沒有空間展現(xiàn)。
所以當(dāng)我們談?wù)搮^(qū)塊鏈性能時(shí),我們還是希望區(qū)塊鏈的兩大根基不動搖——「安全」和「去中心化」盡量少受影響。
以太坊性能到底怎么樣?
以太坊目前性能十分有限。對于普通區(qū)塊鏈用戶來說,手續(xù)費(fèi)和交易確認(rèn)時(shí)間很大程度決定了使用體驗(yàn)。而以太坊目前的使用體驗(yàn)波動非常大。打個(gè)比方,整個(gè)網(wǎng)絡(luò)空閑的時(shí)候就好比最近疫情期間的高速,而擁堵的時(shí)候就像國慶黃金周時(shí)候的旅游景點(diǎn)。
從性能參數(shù) TPS 上看,國際信用卡 Visa 交易處理速度至少 2000 筆/秒,而以太坊則不超過 30 筆/秒,這個(gè)數(shù)值只能說比老大哥比特幣 7 筆/秒好了一些。
并且,造成以太坊網(wǎng)絡(luò)擁堵的成本非常低。
大多數(shù)時(shí)候,一個(gè)熱門 dApp 就會讓整個(gè)網(wǎng)絡(luò)變得擁堵不堪。說實(shí)話目前這個(gè) TPS 水平讓以太坊很難真正大規(guī)模應(yīng)用。隨著更多的人使用,以太坊網(wǎng)絡(luò)交易手續(xù)費(fèi)注定會越來越高,并且普通交易的確認(rèn)時(shí)間會越來越久。
以太坊社區(qū)在可擴(kuò)展性上做了哪些努力?
以太坊令人尷尬的性能現(xiàn)狀讓其核心開發(fā)團(tuán)隊(duì)和社區(qū)一直在探索各類擴(kuò)容方案。于是大家經(jīng)常聽到一系列花哨的名詞:分片(Sharding)、支付通道、狀態(tài)通道、Plasma、Truebit、ZK-Rollup、OptimisTIc Rollup 等等,以及一個(gè)概念 Layer-2。
上面提到的大部分方案都屬于二層擴(kuò)容方案。其中 ZK-Rollup 和 OpTImisTIc Rollup 則是最近最熱門的。我們今天要重點(diǎn)討論的就是 ZK-Rollup,而它的核心就是零知識證明技術(shù)。
零知識證明為什么有用?
零知識證明,可能是目前最具應(yīng)用前景和想象力的密碼學(xué)黑科技,可以在不泄露任何其他信息的前提下證明一個(gè)命題的正確性。兩個(gè)關(guān)鍵詞——「不泄漏」和「證明」,一結(jié)合可以說威力無窮,可以實(shí)現(xiàn)很多反直覺的炫酷特性。
在擴(kuò)容方向上,我們并不需要太關(guān)注零知識證明技術(shù)的「不泄露」特性,這個(gè)往往跟隱私保護(hù)相關(guān),我們重點(diǎn)關(guān)注其「證明」的能力。
簡而言之,鏈上資源或者說帶寬是有限的,我們需要把大量計(jì)算遷移到鏈下進(jìn)行,因此需要技術(shù)能夠「證明」這些計(jì)算在區(qū)塊鏈鏈下真正發(fā)生過。
關(guān)于零知識證明的更多背景知識和技術(shù)細(xì)節(jié)這里就不再展開介紹了,歡迎大家關(guān)注我們安比實(shí)驗(yàn)室的系列文章,如《初識「零知識」與「證明」》https://mp.weixin.qq.com/s/XQL_taBhPkCHGZOBc24MyQ。真正要理解零知識證明可能會有些燒腦,但真心很有趣,大家感興趣不妨試試。
好了,回到今天的主題上來。
為什么說基于零知識證明擴(kuò)容方案可能是更好的方向?
我們不妨回顧一下開始的第一個(gè)問題,當(dāng)我們談?wù)搮^(qū)塊鏈性能時(shí),我們還是希望區(qū)塊鏈的兩大根基——「安全」和「去中心化」盡量少受影響。如果有擴(kuò)容方案能做到這個(gè),就是真的是非常難能可貴的。
基于零知識證明的二層擴(kuò)容方案 ZK-Rollup,就居然真的可以在不犧牲「安全」和「去中心化」這兩點(diǎn)的前提下,很好地解決區(qū)塊鏈性能問題!
不熟悉的同學(xué)可能會問:零知識證明擴(kuò)容代表方案 ZK-Rollup 到底是什么?
首先我們最好來理解下什么是 Rollup。
Rollup 顧名思義,有「卷起」和「匯總」的意思,可認(rèn)為是一大類 Layer-2 擴(kuò)容方案的統(tǒng)稱。
Rollup 特指先在鏈下進(jìn)行復(fù)雜的計(jì)算和狀態(tài)維護(hù),再將與狀態(tài)更改相關(guān)的數(shù)據(jù)通過合約調(diào)用的方式,利用更便宜的 CALLDATA 在鏈上保存數(shù)據(jù),將大量交易「卷起/匯總」打包成一個(gè)交易,最終在保證了「數(shù)據(jù)可用性」的前提下提高 TPS。
Rollup 方案的共同點(diǎn)是強(qiáng)調(diào)鏈上「數(shù)據(jù)可用性」,即任何人都能根據(jù)鏈上保存的數(shù)據(jù),復(fù)原出全局的狀態(tài),從而消除數(shù)據(jù)可用性問題帶來的安全風(fēng)險(xiǎn)。
這一特點(diǎn)讓Rollup 方案(data onchain)相對于 Plasma 這類 data offchain 的方案設(shè)計(jì)更簡潔且更易實(shí)現(xiàn)。
Layer-2 這個(gè)概念其實(shí)特別好,因?yàn)檫@類方案的設(shè)計(jì)思路就是以太坊的底層幾乎不需要任何改動,底層還是向往常一樣處理交易,所以不會影響底層的安全性,讓各種各樣的海量交易在二層來處理,從而減輕底層鏈的壓力。
Plasma 是前兩年最火的以太坊二層擴(kuò)容概念,整個(gè)社區(qū)花費(fèi)了非常多的精力來討論和實(shí)現(xiàn),過程中演變出來一系列方案,比如 Plasma MVP、Plasma Cash、Plasma Debit、Plasma Prime.。..。.
Plasma 家族的中間方案非常多,理論上都可行,但是就是遲遲不能落地。這里面的核心原因就在于 Plasma 各類方案都沒有保證「數(shù)據(jù)可用性」,從而使協(xié)議變得比較復(fù)雜,實(shí)現(xiàn)難度很大,顯得很不實(shí)用。
而 ZK-Rollup 方案起源于 18 年下半年,由 Barry Whitehat 和 Vitalik 先后提出。
其關(guān)鍵就在于 ZK(Zero Knowledge),每一次的狀態(tài)轉(zhuǎn)變都需要提供零知識證明,由主鏈上的合約進(jìn)行驗(yàn)證,只有驗(yàn)證通過才能更改狀態(tài)。即每一次狀態(tài)轉(zhuǎn)變都嚴(yán)格依賴密碼學(xué)證明。
ZK-Rollup 方案利用了目前最流行的零知識證明技術(shù) zkSNARK 在壓縮鏈上計(jì)算量的同時(shí)保障了數(shù)據(jù)正確性。
利用一棵 Merkle Tree 存儲賬戶狀態(tài),合約只保存 Merkle Root。Operator(運(yùn)營者)收集用戶的交易,批量打包這些交易,并生成 zkSNARK 證明,具體會證明交易的合法性(比如驗(yàn)證簽名),以及前后狀態(tài)下的 Merkle Root。
Operator 把 Merkle Root 連同各交易數(shù)據(jù)和 zkSNARK 證明提交至合約,合約驗(yàn)證通過才將新的狀態(tài)寫入。
由于所有交易的計(jì)算過程不用在合約中執(zhí)行,無需將大量狀態(tài)寫入合約 storage,并且 zkSNARK 證明大?。ê苄。┡c驗(yàn)證時(shí)間(很快)是常數(shù),不跟隨交易數(shù)量增長,因此 ZK-Rollup 可以極大地提高交易 TPS。
ZK-Rollup 的鏈上性能限制僅依賴于 CALLDATA 存儲數(shù)據(jù)的成本。隨著以太坊 Istanbul 升級,CALLDATA 使用成本降為原來的 1/4,ZK-Rollup 的性能則獲得 4 倍提升,TPS 可達(dá)到近 2000!
TLDR,ZK-Rollup的原理其實(shí)可以用一句話講清:鏈下進(jìn)行復(fù)雜的計(jì)算和證明的生成,鏈上進(jìn)行證明的驗(yàn)證和關(guān)鍵狀態(tài)的維護(hù)。
上面提到 Rollup,可能有同學(xué)會問:ZK-Rollup 與其他 Rollup 方案的核心區(qū)別是什么?
的確還有其他多個(gè)Rollup 方案,比如 OpTImistic Rollup 就是當(dāng)中較為熱門的一個(gè),它與 ZK-Rollup 的核心區(qū)別在于具體如何保證狀態(tài)更改的正確性。
Optimistic Rollup 方案形成于 19 年下半年,由 John Adler 首次提出,后面主要由 Plasma Group 從 Plasma、ZK-Rollup、shadow chain 等方案中借鑒,進(jìn)一步完善和擴(kuò)展。
與 ZK-Rollup 的最大區(qū)別在于,每次狀態(tài)轉(zhuǎn)變無需嚴(yán)格驗(yàn)證,先樂觀地假設(shè)每次轉(zhuǎn)變都是正確的,這就是 Optimistic 一詞的由來。然后在一定時(shí)限內(nèi)可以對某次轉(zhuǎn)變進(jìn)行挑戰(zhàn),如果挑戰(zhàn)成功就證明了之前的提交有問題,會懲罰提交者并將狀態(tài)回滾??梢哉J(rèn)為 Optimistic Rollup 最終依賴經(jīng)濟(jì)激勵和博弈來約束狀態(tài)正確轉(zhuǎn)變。
兩種方案的差別還可以從證明模型角度來對比:ZK-Rollup 為 Validity Proof(正確性證明),只有提供了「正確性證明」的狀態(tài)才會被寫入主鏈合約;而 Optimistic Rollup 為 Fraud Proof(欺詐證明),用戶需要在挑戰(zhàn)期內(nèi)對異常提供「欺詐證明」,負(fù)責(zé)舉報(bào)不正確的狀態(tài)。
關(guān)注以太坊的同學(xué)對 Plasma 一定不會陌生。
Alex Gluchowski 和 Ryuya Nakamura 這兩位研究人員分別提出了在 PoW 和 PoS 共識下,對 Optimistic Rollup 或基于 Fraud Proof 的二層擴(kuò)容協(xié)議的攻擊模型, 且攻擊成本并不高:這類二層方案必須在挑戰(zhàn)期內(nèi)進(jìn)行投訴舉報(bào),而當(dāng)合約中聚集了大量資產(chǎn)時(shí),則有希望構(gòu)造一個(gè)場景(配合者分享攻擊收益),讓礦工配合做惡,在挑戰(zhàn)期內(nèi)拒絕掉所有提交 Fraud Proof 的投訴交易,這樣不正確的狀態(tài)轉(zhuǎn)變會被確認(rèn),最終可從合約中盜取所有資金。這種攻擊對 ZK-Rollup 無效,因?yàn)楹霞s中始終有正確性校驗(yàn)做保障。
ZK-Rollup的發(fā)展現(xiàn)狀究竟如何?
目前已有多個(gè)團(tuán)隊(duì)基于 ZK-Rollup 方案開發(fā)新一代產(chǎn)品,毫無疑問 ZK-Rollup 是目前落地速度最快、最有前景的二層擴(kuò)容方案,在眾多擴(kuò)容方案中獨(dú)占鰲頭。
例如 Loopring 團(tuán)隊(duì)已經(jīng)率先上線了基于 ZK-Rollup 的去中心化交易所(DEX),無需用戶抵押資產(chǎn),在性能上卻能媲美中心化交易所(CEX),不再受底層鏈性能制約,訂單交易 TPS 達(dá)到了驚人的 2025!
另外 Matter Labs 發(fā)布了無需信任的擴(kuò)容和隱私方案 ZK Sync。
ZK Sync 底層也依賴 ZK-Rollup,目標(biāo)在確保安全性的前提下提升交易性能。產(chǎn)品路線為先專注提高簡單轉(zhuǎn)賬的性能和易用性,再實(shí)現(xiàn)通用智能合約的擴(kuò)容,最后再加上隱私保護(hù)。目前擴(kuò)容的目標(biāo)也接近達(dá)成,至于隱私保護(hù)則依舊是憑借零知識證明技術(shù)。
ZK Sync 中還包含一個(gè)新的 SNARK 方案 Redshift,和零知識證明合約編程框架 Zinc,這兩者或是其未來實(shí)現(xiàn)通用隱私智能合約的關(guān)鍵。
可以說 ZK-Rollup 目前在以太坊發(fā)展的勁頭十足。
零知識證明在以太坊擴(kuò)容方向上具體有哪些發(fā)展趨勢?
我們再次回顧一下,零知識證明二層擴(kuò)容方案最大的優(yōu)勢在于不犧牲「安全」和「去中心化」,也不需要對以太坊底層做任何改動,卻能獲得巨大的性能提升。
這一切源于零知識證明技術(shù)近年來的快速發(fā)展,以及以太坊團(tuán)隊(duì)大概在四五年前就在底層鏈層面為這一切做好了技術(shù)準(zhǔn)備,提供了必要的密碼學(xué)運(yùn)算支持。
零知識證明技術(shù)真正讓以太坊擴(kuò)容從理論走向了實(shí)際,我相信未來這個(gè)方向還會有更多新的突破。
而以太坊社區(qū)很可能會從解決智能合約通用性問題、降低零知識證明應(yīng)用開發(fā)難度、嘗試更多類型的應(yīng)用等方面來進(jìn)一步探索擴(kuò)容。
二層擴(kuò)容概念下,各類普通的或者追求性能的交易可以在高效地跑在二層,享受更快的響應(yīng)速度和低廉的使用成本,而一層也就是主鏈則專門負(fù)責(zé)承載更高價(jià)值的交易,并為此付出更高的成本。
另外,零知識證明還是解決區(qū)塊鏈隱私問題的唯一解決方案。這一方面以太坊社區(qū)也有著很棒的進(jìn)展。
我覺得 ZK-Rollup 在安全性上更有優(yōu)勢。
所以我覺得以太坊即使不升級 2.0 也能再戰(zhàn)好幾年。