之前PANews在文章《為什麼說模塊化是必然的?以及它對我們的啟示》中介紹了公鏈的模塊化趨勢,有了這些知識的鋪墊,現在終於可以和大家聊一聊以太坊自己的模塊化了,或者換個說法——聊聊ETH2,和它當前的進度。
相信對以太坊發展史了解較多的讀者,早在2018年的時候就對以太坊的POS計劃有所耳聞。坦白講這項計劃最開始,也對模塊化公鏈將信將疑,然而這三年多的時間裡發生了很多事,消除了很多不確定性。在以太坊最後一個POS測試鏈即將發布的當下,PANews將從歷史的重要事件出發,圍觀以太坊這場曠日持久的模塊化升級之路,並展望以太坊2022年的進展。
ETH2.0路線圖與Layer2擴容
對於今年之前的事,本文只闡述關鍵的部分。 2018年,以太坊核心開發人員王小偉在台北交流會上公佈了著名的以太坊2.0的路線圖,這件事在當時的主要意義是將POS與分片的概念合併到了一起。 (分片很有趣,詳細說來大有可講,它涉及到的分治思想,在非常多的行業中有體現。大家可以關注PANews後續為大家專門帶來的分享。)而要讓分片開始工作,就必須要有一個“總節點”能像雲計算裡面的MapReduce那樣為分片分配任務,也充當分片的索引。對應到以太坊2.0第一階段的任務,就是讓“信標鏈“上線,信標鏈可以承載所有分片的映射,且能夠執行驗證,相當於分片的“火車頭”。隨後是加入分片,讓分片保存數據。直到第三步,在分片上部署虛擬機(注意是VM,不是EVM),使每個分片都能夠執行計算,而不僅僅是儲存。彼時的分片還頗受爭議,有很多人並不支持第二、三階段的設想。
於是從2018年到2020年底這段時間,以太坊基本是在一邊建設信標鏈,一邊探討如何用現有的EVM鏈替代分片的作用。這對以太坊上的應用是好消息,POS遷移不用麻煩它們了。另外其中還有一項重點是對POW的修修補補,比如沉澱一些冷數據,好騰出一些執行空間。這些討論最終沒有沒執行,但為後面的Layer2打了些基礎。畢竟,一方面以太坊的採用率越來越高了,另一方面以太坊2.0的計劃還需要執行很多年。
時間來到2020年底,那時的信標鏈即將啟動,無狀態分片(不能計算的分片)的進展也不錯,可要想讓分片從普通火車變動車(還記得上文提到的火車頭麼),需要解決的問題還有一大堆。首當其衝,就是如何讓VM替代EVM,這在中心化的系統中不是問題,但在去中心化系統中,VM要做到的不僅僅是虛擬機的分治與運算,還要對這個過程建立共識,以防有節點作惡。林林總總的困難加起來不少,哪怕有人說以太坊2.0能在兩年內實現,在當時都像是在吹牛,然而時間不等人,以太坊交易費很快初具規模,擴容的壓力與日俱增。
於是Vitalik在那時發了一篇長文,來說明Layer2擴容是當前最重要的事。他呼籲開發者們把分片放到一邊,抓緊時間讓Rollup接入主網。從邏輯上說,只有Layer2代表的執行層成立,信標鏈提供的共識層,和分片提供的數據可用性才能派上用場。
如上文所說,這種想法已經鋪墊了近兩年,所以Vitalik的提議很快受到了大家的認可,並帶來的新的發現,如果Rollup可以被作為一個模塊拿出來提前實現部分以太坊2.0的功能,那信標鍊和以太坊目前的POW主網不也是個模塊麼?而且有了Rollup提供的執行能力,以太坊現在就可以把信標鏈用起來,而不必等分片上的虛擬機被建成。於是the merge計劃被順理成章的提出並採納,這項計劃將允許信標鏈作為安全層,承載共識,並直接接入主網,讓現有的以太坊主網和Layer2構成執行層。於是從2021年初起,以太坊就可以質押挖礦了。
但這對於散戶來說,門檻依舊不低。首先你要下載一個客戶端,每個客戶端都包含兩個軟件。第一個是節點軟件,它負責處理網絡共識,與外部世界連接,並發送和接受區塊。第二個是驗證者客戶端,它與你的節點連接,並負責證明與提議區塊。每個驗證者客戶端上都可以有多個質押了32個ETH的驗證者。但是在The merge實現之前,你每運行一個POS節點,都必須同時運行一個POW節點,並且在無法在POW節點被最終停用之前,取消自己的ETH質押。 POS質押還有很多罰沒規則,客戶端設置有誤,網絡延遲,或是供電不穩,都可能讓你遭受損失。所以本文會跳過對各種客戶端優劣的對比,建議大家如果考慮質押挖礦,優先選擇代理質押,下文會給出一些參考。
以太坊計劃用信標鍊和主網的融合來完成從POW到POS的過度,那麼過度的時間點怎麼確定呢?這就是難度炸彈解決的問題,相信大家都聽過這個概念,就是當POW節點一旦發現了超過難度炸彈的區塊,節點就會進入過渡狀態,並開始從信標鏈獲取對這個區塊的共識,一旦共識被確認,這個區塊就將是最後一個由POW生成的塊,以後所有的新塊都將由POS,也就是信標鏈產生。節點中質押的ETH和驗證獎勵,也就可以被解鎖了。但這個難度炸彈並不是合併的前置條件,它只是一個用來完成合併的工具,而工具聽人的指揮,以太坊的開發者可以讓它提前,也能讓它延後。
去年一整年,以太坊的開發團隊細化了上述方案,並且先後發布了三版測試環境,用來探討信標鏈與主網合併之後的樣子,可以看出此時以太坊還是計劃讓安全層來兼容數據可用性,執行層需要上傳完整的數據到安全層的全節點裡做驗證,這是對安全層性能的浪費,是為數據可用層的解耦埋下的伏筆。當時的這些設想,被信標鏈負責人Danny Ryan繪製成示意圖,並作為NFT發售,其售賣收入將用來給開發團隊發紅包。
發布最新版測試環境,給Layer2“開小灶”
在元旦之前,以太坊發布了最新版的測試環境Kintsugi ,這是首個允許外部用戶體驗的測試環境。以太坊上個月也終於考慮給Layer2“開小灶”了,經過優化之後的Rollup將不必和Layer1上的其它應用競爭資源,其成本可能會降到之前的五分之一。與之關聯的是EIP-4488,以太坊上海昇級的一部分。是的,現在Layer2運行的不錯,The merge的進度也沒太多好擔憂的,以太坊的開發者終於有精力想想他們之前的計劃了。
由於Kintsugi對所有人開放,上個月也出過一次問題。這得歸功於Marius和推特上的#TestingTheMerge 大軍,前者發布了一個名為Fuzzer的東西用來生成一些特殊的隨機數據,隨後這些數據被志願者們用來製造一些奇怪的用例,導致部分客戶端由於驗證區塊的方法不同,出現了一些問題,雖然很快被修復了,但還是造成了一些影響。這些客戶端的開發團隊事後解釋說,反正是測試鏈,可以不那麼急著修復故障,讓子彈飛一飛,看看是不是能引出更多他們沒注意到的威脅。
無獨有偶,ETH2去年的測試網Pyrmont,棄用之後被Nimbus客戶端團隊中的程序員拿來“瞎玩”,今年他突發奇想,用了一種POS獨有的網絡攻擊(類似於POW中的51%攻擊)。大家有興趣可以去這裡看看https://twitter.com/jcksie/status/1485574681688223745 , 這次攻擊讓測試環境產生了一個分叉,叫Insecura,並且由作惡的節點主導,有點鳩占鵲巢的意思。不過要想在現實世界複製這種攻擊,其成本可以高到難以想像。但至少,它提醒了我們要注意一個致命的問題——ETH2的客戶端多樣性。
這個問題在近兩年被以太坊開發者無數次高高舉起,又輕輕放下,所有開發者都對“一個客戶端掌握了三分之二的驗證人權重”感到不安,卻也感到無可奈何。以太坊在設計時,有多個相互獨立的團隊,以不同的語言,開發和維護了一系列客戶端。其目的是為了分散風險,減少單個客戶端被攻克時,對主網造成的影響。然而,這需要以每個客戶端都均勻的獲得用戶數量為前提。可現實很殘酷:
Prysm上個月控制了60%以上的ETH2總質押代幣(現在是66%),也就是說,只要它想,它可以對以太坊的共識層做出毀滅性打擊(雙花,然後所有誠實節點會損失最多16個ETH,再被踢出驗證隊伍),開發人員在這些錯誤的交易數據被永久的記錄在以太坊之前,只有13分鐘的響應時間。而如果這個佔比能被降到50%,則開發人員有3~4週的時間挽回結果。可即便挽回,也要付出不少代價,這件事短期內怕是沒法解決。 (對多樣性感興趣的朋友,可以到這裡了解https://clientdiversity.org/)
本文應該會在2月下旬發稿,也就是說Kintsugi的V2版本應該就在這幾天內發布,我目前還沒看到具體的命名在此之後再過上幾週,可能最多也就兩個月,ETH2的最後一個(希望是)測試環境Klin就該上線了。
以太坊的難度炸彈,應該會在今年7月出現,如果開發團隊能在此之前完成The merge,當然是皆大歡喜。這從工作量上來看,也並非完全不可能,只是會壓榨掉所有的緩衝時間,Klin鏈的測試必需一氣呵成,事實上以太坊的開發團隊也確實是這樣計劃的。可我們作為普通的旁觀者,樂觀來估計,這次的難度炸彈怕是至少再推遲一次。
可能為了督促各個客戶端團隊加快進度,大家現在有兩份進度表可以查看,一份是以太坊如何關閉POW的勾選單(https://github.com/ethereum/pm/blob/master/Merge/mainnet-readiness.md),大部分的空位都已經被勾上了,關於壓測和執行層的進度落後也能夠理解。另外一個是Klin的進度表(https://notes.ethereum.org/@timbeiko/kiln-milestones#Milestone-tracker),6步中的前3步都是在為新的測試環境制定規則,後三步才開始下場做事,最後一步是把節點和客戶端發佈出來。目前是執行層的客戶端比較拉胯。從以太坊的路線圖來看,現在的執行層,也就是以太坊主網,最終會變成信標鏈的核心部分,所以它的客戶端表現也必然會影響到共識層,希望落後的進度可以被盡快追趕上來。
除此之外,擴容解決方案Dank sharding這個概念也是最近提出來的。 PANews此前轉載過一篇文章,專門介紹這件事《“Danksharding”是什麼?為何值得V神在情人節科普》在原先的分片設計中,每個分片都需要獨立向信標鏈上的驗證者發布和自己有關的任務,就連作為他們數據索引的“信標塊”也是一樣。這些數據會被拆成碎片,單獨分發給負責認證數據可用性的委員會成員,像BT下載一樣安全、高效。但這個過程同樣也會給礦工帶來收益,發布任務的礦工,同時會負責出塊。這樣一來,那些成熟的礦池會獲得非常多的機會來發布任務。可如果我們把出塊權和任務發布解耦,驗證者就可以挑選那些出價最好的礦工來出塊。為了實現這個目標,Dank 提議把一個“信標塊”關聯的所有分片“Rollup”到一起,打著包去找驗證委員會,負責打包的新角色可以有很多,而且會嚴格服從命令(有技術手段)。我不得不為這種別出心裁感到佩服,真是萬物皆可Rollup。同時這種設計也兼具“模塊化”特點,首先無論是驗證者還是執行層現在都可以在一個打包好的模塊中,找到它們所需的一切數據。這就好比搬家問題,有的時候你知道自己要穿的某件衣服在哪個箱子裡,但為了把這件衣服拿出來,你先是需要調整箱子的順序,然後在把箱子裡的東西都倒出來,好找到自己的衣服。你搬家的箱子越多,每個箱子的容量越大,這個過程就越複雜。而讓信標塊把分片打包起來,無疑可以減輕這個工作量。同時由於糾刪碼的存在,你可以在模塊內刪除掉多餘的重複數據,讓模塊變小,優化帶寬和計算資源的佔用。最後,別忘了Dank分片也是分片,所以他可以讓驗證者僅靠數據樣本就能完成數據可用性的證明,後期以太坊的開發者可以利用這種特性搭建起輕節點+欺詐證明的模塊化結構,也可以兼容ZK的Rollup,後者甚至可以做到從執行層到數據可用層的瞬間同步。
我有種感覺,Layer2是執行層的過渡狀態,信標鍊是共識層的過渡狀態,而現在這個Dank sharding是數據可用層的過渡狀態。以太坊幾乎給所有ETH2能帶來的好處都找到了過渡狀態,卻遲遲沒有發布ETH2,讓人有些感慨。
感謝所有能看到這裡的讀者,我接下來說一個大家都關心的問題,ETH2會不會帶來費用的變化,首先來看官方回答
簡單說,官方認為ETH2是以太坊的共識層,而共識層雖然是POS,但不會處理你的交易,所以在ETH1(ETH主網在合併後並不會消失)上的交易並不會受到價格影響,但將數據可用層和安全層轉向ETH2的的方案,會在這方面大大節約成本(因項目而異)。此外由於合併後的以太坊出塊速度會從13秒變成12秒,這可以帶來一些肉眼難以觀察到的費用降低。
如此看來,想要讓執行層的費用變低,還得靠Layer2。
索性除了上文中提到的EIP-4488,以太坊還有更多步驟來優化Rollup。我們已經看到Optimism 在1 月份將交易費用降低了30%,不久將再降低30%。 Arbitrum 也在1 月份削減了費用,Arbitrum Nitro 估計將費用削減50%。隨著Layer2上的交易越多,它的手續費會變得越來越便宜。 L1雖然還是那麼貴,但已經不重要了,就算幾年之後以太坊真的做到了它所說的ZK-EVM,也還是要比L2貴。 Dank sharding的作用就像是以太坊原生的Celestia,和L2搭配起來有多強,可以參考PANews之前對Celestia的報導。總之在不久的將來,我們也許會突然想到幾年前在加密世界中還曾經存在過Gas fee這個概念,那時的我們會在懷念與釋然的氛圍中,對這個想法付之一笑。
其實ETH2雜七雜八的小進展真的很多,比如對秘鑰的優化,數據冗餘的優化,但我想這些過於底層的東西對大家而言意義不大,以後有機會在說吧。
關於ETH2 staking的小貼士
首先回答兩個問題:
Q: 要不要自己運行節點?在質押池裡質押與運行節點分別有什麼風險與好處?
A: 在質押池裡質押的好處就是你不需要履行任何職責。風險還是那句老話“控制不了你的密鑰就控制不了你的幣。”
Q: 有沒有去中心化的第三方運營方案?
A: 有,但所有的第三方託管方案都要求你信任第三方。舉例,如果第三方託管了你的驗證私鑰(你保留自己的取款私鑰),你還是必須信任該第三方會妥善運營驗證者,不會導致你被罰沒(所以你跟第三方之間必須實現分配好責任)。如果你直接把錢交給第三方,連取款私鑰都不保留,則信任程度更甚(與把錢存入中心化交易所等同)。
如果你選擇運行屬於自己的節點,可以在以太坊官網找到詳細的中文引導。如果你選擇質押池來委託,請注意質押池有兩種:
中心化質押池:一般指交易所的質押池,優點是使用方便,無論進出都沒有難度,因為交易所本身就有ETH的儲備池,以滿足立即提款的需求,類似於銀行T+0。甚至它還能拿用戶提供的ETH賺取更多資金沉澱的收益,類似小黃車。現階段因為其中心化的托底能力(對抗一切意外),對用戶來說很有吸引力。但收益通常較低,雖然它不會額外收取費用,但也沒有額外的DeFi收入了,並且交易所因為對商譽的考慮(吃相),不會把以太坊的MEV壓榨到極限。大家可以在stakingrewards查詢相關數據,由於這些數據有一定時效性,所以在文章中不額外提供參考。
去中心化質押池:Stakewise、Rocket Pool、Lido和SSV Network都是這方面的佼佼者。這是以太坊開發者們最推薦的參與方式,雖然這可能是因為有不少以太坊的開發者,本身也是這些礦池的開發者,但真心不建議大家這樣去考慮問題。去中心化的質押池,最大的不同在於它可以為你創造DeFi收益,參與質押的用戶,可以用ETH換取一種質押憑證,而這個質押憑證,可以被用來抵押、交易或是藉貸,大家把它當做一種衍生品就好了。衍生品的流動性越強,質押的機會成本就越低,也就能吸引更多人去質押,如此一來,以太坊的POS機制也會越安全。對於普通用戶來說,你可以以質押者的身份參與,也能以節點運營商的身份參與,目前Stakewise的開箱體驗有了很大提升,而且隨著DAO的成熟,這種模式對秘鑰管理也有的更新的解決方案。充提同樣也很靈活,可我覺得還是沒有中心化的方便。
此外,Teku的產品經理曾在自己的日誌中多次推薦過beaconcha.in的移動端質押App,我想這背後的苦心,應該是盡可能拉低參與質押的門檻,讓ETH2的客戶端多樣性逐漸建立起來。最後建議大家關注EthereumPools ,實時了解關於質押池的最新變化。