甚麼是模塊化? 你這慢吞吞的臭公鏈(二)
此篇文章的名詞與用語是幫助大家容易理解,並非學術上精確的定義。
▍前言:「你這慢吞吞的臭公鏈」系列文章
這系列文章的第一篇《公鏈如何擴容?》已經發布,用底層邏輯來解釋公鏈的擴容原理,可以先去看那篇,再回頭看今天的文章,應該能更好理解整個脈絡。
今天的文章主要來解釋「模塊化是什麼?」,而未來的文章,會進一步說明以太坊的升級路線、如何評估公鏈等等,最終目的,是建立足夠的公鏈背景知識,然後投資公鏈代幣,而我除了公鏈的基本面分析,我也會研究總體經濟、鏈上數據、地緣政治等等,從宏觀到微觀,做出完整的投資決策,這些內容都可以在我的 Matters 部落格裡看到,我也不定時會錄製 Podcast 直接表達我的觀點,有興趣可以看看。
▍公鏈的分類
公鏈裡面負責記帳的角色叫做「節點」,而這些節點他們在做的事情可以簡單分為【運算交易】【排序交易】【確定交易】【儲存交易】這四件事,詳細情形可以看我上一篇文章《公鏈如何擴容?》。
時至今日,沒有一條公鏈足夠成熟,所以開發者們為了改善現有公鏈的問題,就依照學術理論與自身技術,去實作各種公鏈架構,大家各自努力,期待自己所開發的公鏈能夠獨佔鰲頭,成為幣圈的霸主。
而主流的公鏈擴容架構可以分為三種,分別為「單片化」「多鏈化」「模塊化」,以下簡單介紹這三個公鏈種類。
公鏈種類(一):單片化公鏈
單片化公鏈的代表為 Solana、ETH 1.0、Bitcoin。
單片化的意思,就是單一的節點必須獨力完成【運算交易】【排序交易】【確定交易】【儲存交易】這四件工作,做個比喻,這就像廚師除了烹飪之外,還要自己耕田、養雞、餵牛,連餐廳建築都要自己拿磚頭蓋,所有事情一手包辦,這樣效率一定很差,這就是單片化公鏈的困境,節點做的事情太複雜。
公鏈種類(二):多鏈化公鏈
多鏈化公鏈的代表為 Avalanche、Cosmos、Polkadot。
多鏈化公鏈提升速度的邏輯是,既然一條單片鏈容易塞爆,那就建立千千萬萬個單片鏈來分流,就像高速公路直接從單線道,拓寬成 100 條車道,這樣就不容易壅塞了吧?
多鏈化公鏈是由一條底層鏈(Layer 0)當做基底,讓建立其上的「應用鏈」能夠把「底層鏈」當作跨鏈橋樑,這樣就能串連整個多鏈生態系,而應用鏈與底層鏈都是獨立個體,只有需要跨鏈的時候才進行交互。
公鏈種類(三):模塊化公鏈
模塊化的意思是【運算交易】【排序交易】【確定交易】【儲存交易】這四件工作,分給不同的節點來做,每個節點只負責其中一種工作,就很像工廠的流水線,利用分工合作的方式,運作速度就快很多。
模塊化公鏈的代表為 ETH 2.0,這邊說明一下,原先的以太坊是 ETH 1.0,是一條單片化公鏈,近年來開始轉型,往模塊化發展,變成所謂的 ETH 2.0,至於什麼是模塊化,就是今天文章的重點。
▍模塊化就是分工合作
模塊化就是把工作內容切割開來,交給不同的節點去負責,這些節點各自把事情做完之後,再把成果組合起來。
我們可以用一本書的生產流程來比喻:
步驟一:「作家」寫出文字內容。
步驟二:「編輯」將內容排版,讓文字更通順。
步驟三:「印刷廠」將文字印在紙張中,並製作成冊。
步驟四:「書店」將書本賣給顧客。
以上的四個流程,包含了四個角色,他們分工合作、各有各的專業,而且不用理解其他角色的工作也能把事情做好,例如,書店不用知道怎麼寫出優美的文字,只要把時間精力放在如何賣書、如何行銷,這樣能夠創造多贏的局面,最大化利潤。
▍模塊化的分層結構
在公鏈的世界,工作內容可以切分為四個【運算交易】【排序交易】【確定交易】【儲存交易】,不同的節點負責不同的工作,就能把公鏈的速度提升。而這四個工作,在區塊鏈的結構中可以分為對應四層【執行層】【共識層】【結算層】【數據可用性層】。
以下簡介模塊化的分層。
【運算交易】執行層 (Execution Layer)
當執行層的節點收到用戶傳來的交易時,要去運算交易結果,例如 A 給 B 一個 ETH,就要把 A 的戶頭減去 1 ETH,B 的戶頭增加 1 ETH。
如果用戶送來的是智能合約的使用要求,節點就要去運行智能合約的程式碼,將結果算出來。
以上兩件工作「運算交易結果、運算智能合約結果」就是執行層節點的主要工作。
【排序交易】共識層 (Consensus Layer)
共識層的節點,要決定下一個新區塊要包含哪些交易,以及這些交易的先後順序,通常會用 POW、POS、DPOS、PBFT 等等的投票機制決定出來。
Q:為什麼要「挑選」與「排序」交易?
因為大多數公鏈,每秒只能處理幾百到幾千筆交易,如果一次送進來數萬筆交易,只能從中挑選優先處理的交易,並且把交易做先後順序的排列,而「挑選」與「排序」就是共識層節點的主要工作。
【確定交易】結算層 (Settlement Layer)
附註:「結算層」與「共識層」的工作性質比較相近,許多文章會把這兩層視為同一層。
當交易寫入區塊鏈,並經過多個區塊確定,不會因為分叉而被取消,就能確定交易是不可竄改的,這樣不可竄改的交易數據,我們用「最終狀態 (Finality)」來稱呼,結算層的節點只要把這樣的「最終狀態」記錄下來,就能保持這條公鏈的穩定,未來其他層的節點,如果對過往的交易歷史有爭議,只要向結算層的節點詢問「最終狀態」是甚麼,就可以消除爭議,跟大法官釋憲很像,當法律條文有爭議時會做出裁示。
*名詞解釋:「分叉」是什麼?
POW、POS、DPOS、PBFT 這些共識機制,都存在投票結果不止一個的問題,所以會讓區塊鏈分叉成很多條結果不同的鏈,通常要等到某一條分叉鏈特別長,其他分叉才會被消除,而那些被消除的分叉,裡面所包含的交易也全部被取消。
【儲存交易】數據可用性層 (Data Availability Layer, 簡稱 DA 層)
所有的交易數據,通通都可以交給 DA 層的節點來儲存,而儲存的方式與 IPFS 類似,會把全部的交易數據做切割,每個節點只需要儲存部分數據即可,而且被切割過後的數據,會同時由多個節點儲存,這樣就不會因單一節點出錯導致資料遺失。
DA 層的節點最重要的事,就是確保數據永遠存在,並且在其他層的節點想查閱數據時,能迅速提供。
▍模塊化的實際應用
模塊化應用(一):【執行層】Rollup
在公鏈中,交易數據越小,手續費就越便宜,Rollup 除了計算交易結果之外,最重要的就是將多筆交易數據,壓縮成小小的容量,然後將壓縮過後的數據上傳到以太坊主鏈,數據變小了,手續費也便宜了。
可以想像成一部 2GB 的電影被壓縮成 100MB,這樣不但儲存很方便,想把電影傳給朋友也快很多。
Q:數據是如何被壓縮的呢?
舉個例子,今天有一句英文「 nana like banana and banana cake 」,這樣有 27 個字母,如果 nana 用 # 符號代替,就變成 「 # like ba# and ba# cake 」,這樣句子就縮短成 18 個字母,比較不佔儲存空間。
以模塊化的角度來看,Rollup 的節點是負責執行層的工作,運算用戶的交易結果,或是運算智能合約,然後把結果壓縮,最後上傳到以太坊主鏈上。
模塊化應用(二):【執行層】OP-Rollup
優點:容易達成 EVM 兼容。
缺點:交易的「最終狀態(Finality)」要經過 7 天才能真正被確認,超級久。
Optimistic rollup,中文翻譯成樂觀匯總,OP-Rollup 是所謂的先上車後補票,把用戶送來的交易全部丟到以太坊主鏈上,並鎖在一個智能合約中暫時保留 7 天,這 7 天當中,如果沒有人去檢舉交易有錯,就默認交易沒問題,並且把交易寫進主鏈 (Layer1) 中,再也無法竄改,反之,7 天內若能抓出其中的錯誤交易,那筆交易就會被刪除,不會寫進主鏈。
模塊化應用(三):【執行層】ZK-Rollup
優點:交易的「最終狀態(Finality)」比 OP-Rollup 更快確認,並且能保有隱私性。
缺點:需要研發電路硬體,才能達成 EVM 兼容,這十分困難。
Zero-Knowledge rollup,中文翻譯成零知識匯總,其中的零知識 (ZK) 是一個相當複雜的演算法,功能有三種:壓縮數據、產生證明、保護隱私,
ZK 功能一:壓縮數據
這是 Rollup 的主要特色,而 ZK 演算法剛好可以做到這件事。
ZK 功能二:產生證明
ZK 演算法會將交易做計算,生成一個 ZK 證明,這個 ZK 證明是用來跟大家宣告說,這筆交易已經驗證過了、這筆交易是正確無誤的,就跟房屋的契約書一樣,由政府發出這樣的契約證明,來宣告房子屬於誰的。
而經過 ZK 演算法確認過的交易,是「概率性」正確的,例如有 99.99999999% 的機率是正確的,雖然不到完美,但在現實應用中已經近乎完美了,如果這條公鏈每 1000 年才會有 1 筆交易出錯,你應該可以接受吧?
ZK 功能三:保護隱私
ZK 演算法可以在原始交易數據不公開的情況下,產生一個 ZK 證明,而且大家看到這證明就可以 99.9999999% 確認交易是正確的,不用理會原始數據到底是甚麼,這樣原始數據就被保護起來,擁有隱私性。
模塊化應用(四):【執行層】Validium
優點:速度比 ZK-Rollup 快,手續費比 ZK-Rollup 低。
缺點:數據安全性比 ZK-Rollup 低。
Validium 是 ZK-Rollup 的特殊形式,運作方式和 ZK-Rollup 幾乎都一樣,差別在於「交易數據沒有上傳主鏈」。
一般的 ZK-Rollup 會將「交易數據」與「ZK 證明」同時上傳到主鏈(Layer1),但交易數據是很佔儲存空間的,傳到主鏈上手續費很貴,所以就延伸出 Validium 這樣子的做法,只將 ZK 證明傳到主鏈上,而交易數據就上傳到其他鏈外空間,例如 IPFS、雲端伺服器,或是後面會講的 DA 層,這樣就能降低手續費,並且加快交易速度,但缺點就是數據安全性會降低。
額外補充:
Validium 很適合鏈遊,因為鏈遊需要高速的交易與低廉的手續費,而且遊戲數據價值不高,通常只是遊戲道具的交易,不需要花費昂貴的手續費上傳到主鏈,存到鏈外空間更加適合。
模塊化應用(五):【數據可用性層】Celestia
Celestia 在模塊化分工當中,負責數據可用性層 (DA層),用途是儲存 Layer 1、Layer 2 傳來的交易數據,只負責儲存而不進行驗證。
所有的數據是由一大群 Celestia 的節點共同儲存,當其他層的節點向 Celestia 要求查閱數據時,Celestia 能夠將數據輕量化,然後快速的回傳數據。
總之,Celestia 能降低 L1、L2 節點的硬碟需求,L1、L2 的節點不再需要儲存龐大的歷史交易數據。
此外,配合前述所介紹的 Validium,能夠讓模塊化發揮到淋漓盡致,不但交易速度提高,安全性也很高。
上圖就是 Celestia 配合 Validium 的模式,Validium 將數據較小的「 ZK 證明」上傳到以太坊,並把數據較大的「交易數據」上傳到 Celestia,這樣能有效降低手續費,並提高交易速度。如果以太坊的節點想要查閱歷史交易數據,只需要向 Celestia 提出要求,Celestia 就會把「輕量化」的數據回傳,不但維持數據的正確性,也降低網路傳輸的負擔。
▍模塊化的重大缺點
分工合作是模塊化的特色,能藉此大幅提高交易速度,但模塊化有個重大缺點就是「生態撕裂」,我們以執行層來舉例,目前的執行層項目有 Optimism、Arbitrum、zkSync、Starkware 等等,但這些執行層項目是難以互通的,假如我所有的資產都放在 Optimism,今天心血來潮想去 Arbitrum 參與一個空投活動,會發現我無法參與,因為資產轉移過去要跨鏈,不但手續費很貴,而且跨鏈需要時間,最慘的狀況是跨鏈要等待 7 天,這在使用體驗上是相當糟糕的。
這樣的生態撕裂,我相信未來也會發生在數據可用性層,所以模塊化時至今日都還很難用,只能等待更好的跨鏈服務出現,或是某個 Rollup 吃下所有的執行層市場。
順帶一提,多鏈化公鏈就比較沒這問題,多鏈化公鏈雖然是由多個獨立的應用鏈組成,但他們在創建之初,就已經設定好通用的跨鏈標準,所以跨鏈體驗是相當順暢的,也是我個人很看好的公鏈種類,關於多鏈化公鏈,未來也會寫文章來解釋。
▍以太坊與模塊化
模塊化這樣的技術,不單是為了以太坊而開發,也能夠應用在其他的公鏈,但以太坊的用戶很多,而且以太坊的速度很慢,因此,模塊化應用在以太坊能發揮最大的效果,所以目前多數的 Rollup 與 DA 層,都是圍繞著以太坊。
我們先看上圖,2014 年以太坊建立時,以太坊的節點包辦了「執行、共識、結算、數據可用性」這四層的工作內容。到了 2022 年,Rollup 幫以太坊分擔了執行層的工作,藉此提升「以太坊生態」的速度。2023 年底 Celestia 主網上線,幫以太坊分擔 DA 層的工作,近一步增加「以太坊生態」的靈活性。
Q:模塊化的成長,會持續到何時?
以太坊這條 Layer 1,自己一直在做升級與開發,通稱為 ETH 2.0,包含了 Verkle tree、Dansharding、zkEVM 等等的擴容技術,當所有的開發都完成,會進化成「以太坊完全體」,從「模塊化公鏈」再回歸成「單片化公鏈」,不用模塊化的幫助也能達到百萬級的 TPS,到這時,模塊化的應用已經不是必須,而我猜測這樣的時間點會在 2030 年左右(希望能這麼樂觀)。
Q:以太坊完全體出現後,模塊化應用還會存在嗎?
模塊化會一直存在的,以太坊完全體雖然厲害,但不可諱言的,沒辦法符合所有的使用情境,有些應用需要零元手續費,有些應用需要極高速的交易速度,有些應用需要保留中心化的控制權,這些都比較難在以太坊完全體上實現,這時候,模塊化還是有應用場景的。
關於以太坊 ETH 2.0 的所有升級路線,會在未來的文章繼續解釋,這部分非常硬核,容我花點時間撰寫。
▍結語 - 模塊化的現在與未來
今天講了模塊化的分層,可以看出這樣的區塊鏈結構是很複雜的,但也是相當巧妙的,每個層都能夠獨立開發、獨立優化,不再像單片化公鏈那樣,想升級卻難以升級,因為單片化公鏈所有功能都綁定在一起,很難單獨優化。
所以在理想的狀態下,模塊化的進步速度會比單片化公鏈快很多,能大幅提高公鏈的使用情境,但實際上,目前的執行層項目實在太多,各種 Rollup 充斥在市面上,導致以太坊的使用者還在觀望,不太願意把資產轉移到 Rollup 上。
另一方面,數據可用性層目前只有 Celestia 這一個項目,因為數據層的開發是很困難的,如果沒有其他競品來分瓜市場,Celestia 或許會在模塊化市場中佔有一席之地。
未來要關注的模塊化發展:
1. Layer 2 的通用跨鏈方式何時出現。
2. 數據可用性層,有沒有除了 Celestia 之外的項目出現。
3. 以太坊 ETH 2.0 開發進度多快。
整體來說,模塊化生態是很有潛力的,但「有潛力」與「幣價上漲」是兩回事,像是現在的 Rollup 所發行的代幣,並沒有實際的應用場景,公鏈代幣最重要的「剛性需求」就是應用在「手續費」,而模塊化生態中,手續費都是 Layer 1 在做收取,Rollup 很難從中賺取手續費,除非用戶數量夠多,但 Rollup 在生態撕裂的狀況下,用戶分散在不同項目,Rollup 自然而然賺不到錢,所以在「剛性需求」這方面,Rollup 是很脆弱的,只剩下「市場期望」去撐起幣價,對我這種長週期投資者來說,風險比較大,所以我個人比較想押寶在 Layer 1 與早期的 DA 層的項目上。
公鏈的投資,除了今天所講的區塊鏈架構,還有代幣經濟、開發者生態、項目坊運營、社群經營等等,有許多面向要去研究,未來我會再慢慢分享。
【歡迎參加】線上語音活動 - 如何評估公鏈?
12/10 (日) 晚上 8 點,我在 Matters 的 Discord 將分享「加密貨幣投資 - 如何評估公鏈」,歡迎有興趣的夥伴可以來參與。