為什麼說模塊化是必然的?以及它對我們的啟示

此前PANews在文章《Layer2之後該怎麼擴容,深度解讀Celestia的數據可用性模塊》中簡單介紹過什麼是模塊化,但這次希望在此基礎上,談談為什麼區塊鏈需要被模塊化。

首先來複習一下模塊化是什麼。在這個概念中,一條公鏈可以被分解成安全層,數據可用層和執行層。安全層通常是承載共識的,也就是負責讓最終交易結果上鍊。數據可用層則可以被簡單理解成幫助執行層“自證清白”,防止執行層作惡的。我們常掛在嘴邊的Rollup,或者Layer2就是執行層,它是一個模塊,同時也是區塊鏈模塊化的產物,負責執行交易。

這三項功能原本被放到一整條公鏈中,直到鏈上的節點越來越多,區塊越來越大,交易越來越忙不過來,最後的結果就是,不但Gas費爆炸了,出塊速度還很慢。於是就有我們常說的區塊鏈“不可能三角”理論,即如果用加大區塊大小來提高數據流通量,就得拉高節點的門檻,淘汰掉算力不達標的節點同時,也降低公鏈的去中心化程度。如果想要保住去中心化,只有增加更多更強大的節點,可節點一多,交易速度又慢了,只得繼續增加區塊大小,就又回到了最開始的問題。這個故事有很多種講法,核心是只能靠犧牲一部分來成全另一部分,就像Solana,價格低,速度快,但是中心化程度高,它賭的是摩爾定律,賭算力和帶寬的成本增長追不上鍊上交易給它帶來的收入增長。

到這裡,模塊化的必然性就已經出現了,現在我們甚至不必再討論擴容的方法將會有哪些,Layer2已經從一種可能性坍縮成了現實,將公鏈解耦的模塊化就是答案。我們可以把上述三項功能中,其中至少一項單獨外包出去的公鏈稱為模塊化公鏈,比如以太坊,它把執行層外包給了Layer2。也比如Polkadot和Near,它們有分片驗證的外包設計。而Avalanche則像一個偽模塊化公鏈,它看到了模塊化的好處,於是做了一個單片鏈的組合,也讓公鏈的基本功能在自家門內做了解耦,缺憾是目前還沒有做好共享安全性。 Cardano則處在一個臨時狀態,儘管沒把已經解耦的功能外包出來,但從路徑圖上看也只是時間問題了。這些都是公鏈在模塊化上所做的嘗試,而模塊化的最終願景可能是Celestia與Evmos合作的那樣——一個Rollup套娃,具體在開頭所提文章中有展開闡述。所以,長遠來看,模塊化是公鏈擴容的必經之路,即便是“反對模塊化”的Near其實反對的也只是“別人來做我的模塊”,因為它要“我自己做我的模塊”。

目前不僅執行層在模塊化之後的成就有目共睹(Arbitrum和Optimism的體驗明顯好過Solana或是Fantom這類的Layer1公鏈,因為前者只需要一個算力足夠強的節點來做Sequencer就夠了,而後者哪怕是犧牲了去中心化來提升節點性能,也需要至少21個節點來做Sequencer),數據可用性也因此需要和執行層解耦。只有這樣,當Layer2出問題時,用戶才能藉助數據可用性來提出“挑戰”(針對OP)或是強行把自己的資產從Layer2上拉回Layer1(針對ZK)。這樣的一個數據可用層,放在Layer2上(或是Layer2提供的鏈下第三方驗證機構),你會不放心。放在Layer1上,你會心疼錢。分片並且放在一個單獨的鏈上,隨用隨取,可能是目前最好的答案。這就是模塊化開始快速發展的背景,長期趨勢仍在醞釀,短期痛點已然出現。

模塊化背後的——遞歸思維

考慮到這個話題對大多數人是無意義的,就像我們吃雞蛋,卻不必知道沒心情下蛋的母雞該怎麼哄。所以我希望能和大家講講模塊化背後的抽象思維,也許再聽完後,你會發現這種思維其實無處不在,並且在理解後,能幫我們解決不那麼抽象的問題,就像樂事薯片的“雙曲拋物面”如此堅固,背後的道理卻和蛋殼結構相同。

這種形狀是刻意為之,不是受熱不均,不信你自己炸一下

“模塊化”的概念在web2.0已經被實踐了很多年了,甚至可以說,從打有計算機開始,我們就在想辦法把一類問題,做成一個模塊。坦白講計算機的本質是機械運動,就像算盤,我要去撥動算珠,算盤才能執行運算,我每撥動一下,算盤運算一次,所以這個時候真正在執行計算的是我,不是算盤。我今天遇到了一個算數問題,我撥了100次才把這個問題解決,但我沒有把這個問題的答案記下來。如果第二天,我遇到了同樣問題,我還是需要撥100下算盤。相信各位讀者都有投資的經驗,不難看出,我這兩天一共撥了200次算盤,解決了兩次問題,這是我用時間換來的基礎收益。可如果我在第一次計算這個問題的時候把答案記下來了,那無論我遇到這個問題幾次,我都只需要撥最開始那100次算珠。資源的複用,才能帶來超額收益。在這個例子裡,被復用的是“時間”。 “把答案記下來”就是我得到的最基礎的模塊。在此之後,我還可以把更多計算公式也做成一個個模塊,這樣當計算機收到我的提問後,會找到對應的模塊執行,最終把執行的結果反饋給我。此時在執行計算的是計算機,不是我。這個過程,就叫遞歸,所有的Rollup本質也是一種遞歸,它們通過不斷的調用自身,來滿足數據可用層的驗證要求,這種資源的複用,是我們在大多數時候覺得計算機比人類效率更高的主要原因。

人類對這個世界的認識是由近及遠、從少到多,一點點擴展來的,這就是人類固有的認識和思維方式,根植於我們的基因中。這樣的認識和思維方式讓我們很容易理解具體的事務,但是限制了我們的想像力和大局觀。當需要思維觸達那些遠離我們生活經驗的地方時,我們就會出現理解障礙。

和人不同,計算機在一開始就被設計用來處理規模大得多的問題,因此計算機有條件採用與常人完全不同的方式來解決問題。如果一個人能夠站在計算機的角度想問題,就可以被算作擁有“計算思維”,這就如同我們說某個人具有科學思維或者工程思維一樣。如果一個人在做事情的時候,採用的是計算機解決問題的方法,這個人就具有計算機的方法論。在計算機的思維中,最重要的是一種自頂向下,先全局後局部的逆向思維,它被稱為遞歸(Recursive)。與之相對的,是人類採用的自底向上,從小到大的正向思維,它被稱為遞推(Iterative)。

在擴容的問題上,假如我們用現在的常規思維去想,交易變多了,那我需要給礦工更多的費用,而且我收到的交易費一定要高於我給礦工的費用,否則就會虧損,但我現在沒這麼多錢,所以我只能提高交易費,可這樣一來交易量會縮小,於是我只好增加吞吐量,同時讓節點數量減少,在安全性上做妥協。這種情況下,如果不減少節點數量,又不提高交易費,就只好發行更多的代幣,用來支付礦工,這樣做的結果就是這條公鏈的通脹越來越嚴重。比如Solana,至今為止,它一共執行了562億次交易,按照其官網公佈的,每筆交易手續費為0.00025美金,其收取的手續費總額為1400萬美金左右。如果我們去Stakingrewards上看一下,可以查到它目前的Staked Value在455億美金左右,按照較低一檔的APY 5.88%計算,Solana最近三十天內要分給質押者約2.2億美金。也就是說自其主網上線至今收到的所有交易費,僅相當於最近一個月支出的6.2%。以至於Solana需要15.4萬TPS的吞吐量才有可能做到收支平衡,儘管我們知道它賭的就是摩爾定律能把帶寬和算力成本拉下來,但這種規模的虧損,怕是禁不起一場熊市。這就是遞推的思維,我遇山開山,遇水架橋,直到走進一個“死胡同”裡。

以太坊沒有採用這種通脹模型,其結果就是交易費用爆炸,但它在一天裡收取的交易費用,甚至比Solana和Polygon一年的交易收入加起來都多。如果我們逆向去想這件事,礦工收取用戶手續費,僅僅是因為礦工執行了交易麼?交易人人都能執行,之所讓礦工幫忙上鍊,無非是因為用戶希望自己的交易能得到去中心化的安全保障。那讓一條鏈把安全和交易全做了,豈不是自找不痛快? Solana收取交易的費用,付給礦工的是安全的錢,那它肯定虧本啊;用戶交給Eth交易的任務,Eth收的卻是安全的錢,那用戶顯然也不痛快。所以為什麼要把安全和交易混為一談呢?假如把數據可用性和分片從公鏈上分擔出來,那節點越多,數據吞吐量就越大,而且節點門檻可以做到和手機一樣,憑著這種可以無限增大的性能和與Layer1上礦工收入完全無關成本,我可以讓這條鏈上的Rollup少說增加一個數量級。眾多的Rollup,收取的也僅僅是交易的費用,提供的也是交易的服務。 Rollup的數量上來了,能交給Layer1和數據可用層的費用就也增加了,前者的礦工這下任務輕了,把數據壓縮上鍊就行了,後者也有錢買更多節點了,於是這下又增加了Rollup的空間。重複執行這項“遞歸”,公鏈將得益於全局思考的模塊設計,走上一個正循環。

模塊化的深化,Web3加強組合性

我甚至認為模塊化在佔領區塊鏈底層後依然不會停下腳步。 Web3.0才剛剛開始形成概念,我們就已經看到有個GameFi項目Metasport,用ETH做資產層,Starkware做P2E激勵層,用Internet Computer做遊戲玩法和邏輯層,IPFS做存儲冗餘層。模塊化不應該被如此簡單地定義在底層技術上。虛擬世界與現實之間的主要不同,在於虛擬世界更加穩定,不會因為一場突如其來的疫情,就讓各國之間的供應鏈斷裂,生產者被迫囤積大量庫存,或乾脆自己做自己的供應商。虛擬世界最大的風險不過是熊牛轉換,在現實世界面前不值一提,所以我們也希望看到越來越多的應用開發者,在自己保留部分基礎能力的同時,將實際任務外包給其它生態成員。畢竟虛擬世界的干擾因素少,所以我們有能力實現理論上的效率最大化。唯一需要考慮的就是安全問題,這個問題的難度等價於現在的跨鏈問題,但說到底也沒什麼大不了的,既然是技術問題,就總有解決的時候。

我想說的效率,其實還有另外一層。就是在區塊鏈世界逐漸被大眾所熟悉的今天,會有更多的優秀人才和資本被吸引進來。在web3.0概念中,供應商們很難像web2.0那樣把用戶留存在自己的生態裡。如果是這樣,這些“增量”會選擇以一種什麼樣的方式進入到區塊鏈世界中?我能想到的方式有兩種,一是做賣鏟子的人,他們將是模塊的供應方,在現有的基礎設施中找到可以被改進的點,唯有這樣才能不依賴“流量”,同時利用模塊化打造出自己的長板,與所在生態拼接成一個“木桶”。還有一種方式是將自己在鏈下的流量導流到鏈上,流量的入口仍然在鏈下,他們將作為模塊化的需求方,需要的是開箱即用的體驗,以及快速的應用搭建速度。

而模塊化的區塊鏈世界無疑能進一步拉低創新的門檻,我們甚至可以期待一個效率遠超web2.0的區塊鏈世界。只有當低水平的重複工作被模塊化工具所終結,真正的創新才能開始,對區塊鏈來說是這樣,對我們每個人來說也一樣。遠的不提,大家有沒有發現幾乎所有DEX的前端頁面全都長得像一個樣子,幾乎每個Solidity初學者做的第一個完整項目都是把Uniswap的代碼複製一遍。對於開發者而言,這些常被拿來“學習”的內容,本身就是一個個封裝好的“模塊”,很多人就是在“學習”的過程中,站在前人的肩膀上,發現他們之前沒有解決好的漏洞,做出一點點改進,然後成為其他人可以站上的肩膀。

現在開始,世界各地,從瑞士到馬耳他到塞舌爾到新加坡到舊金山,會有更多一無所有的年輕開發者每天晚上捫心自問:

和尚摸得,為什麼我摸不得?別人可以簡簡單單的在前人的代碼上改進出新的項目,為什麼我不可以?既然模塊化已經提供了足夠的基礎組件,我為什麼要花時間自己再重新寫一遍?當更多開發者發出這樣的問題後,區塊鏈上的創新將會指數增長。

總結

模塊化是擴容的答案:現有的公鏈要么已經開始模塊化的嘗試,要么仍處在幣價漲幅難以支付礦工費用的虧損中。安全保護和計算執行是兩種服務,理應分開收費。而這些仍在掙扎的公鏈,越早一天接入Layer2,其原始價值能被保留的越多,否則只能在無盡的通脹中被稀釋殆盡。當然,將自己直接轉化為某條公鏈的Layer2也是個可取的思路,我們不需要太多的公鏈用獨立的安全層承載屬於自己的共識,過度分散的共識對效率沒有幫助,而自由的市場,終究會毀滅“更高效率”面前的所有阻礙。

商業競爭促成模塊化:只有資源的複用能帶來超額收益,誠然公鏈可以開發自己的模塊化來解決自己的擴容問題,但在同等勞動付出下,完全獨立的模塊化項目會服務更多的用戶,商業法則會淘汰那些得不到超額收益的競爭者。而模塊化無論對需求方還是供給方而言,都是效率最高的方式。

安全問題很嚴峻,但不要被嚇倒:web2.0解決安全性的方式能給我們帶來一定啟示,組件化在一開始帶來的問題,比它解決的問題還要多。很多人一看到某些項目因為採用了多個供應商提供的模塊組件,結果被黑客找到機會,給用戶帶來了損失,就認為這個方向本身不對。實際上這可能僅僅是因為時間太短,我們還看不出效果。在區塊鏈世界中,模塊化的概念仍在早期,實踐的步伐要慢,但既然已經邁出了第一步,在想要改變這個方向之前,要更慢。同理對於那些堅持單片設計的公鏈,大家也要多一些耐心。

任何方向的改變在一開始都會有很大的下行的不確定性。比如我們常常講免稅可以刺激經濟發展,從長遠來講能夠獲得更高的稅收,但是幅度太大的免稅會使得政府一下子入不敷出,然後不得不推高債務,成為經濟發展的負擔。牢記萬事皆有滯後性,夏至來臨的時候,往往還不到一年中最熱的時候,把一克冰融化成水的能量,卻能把這一克水從1度加熱到80度。 Web2.0的組件化花了很多年才初見成效。安全問題雖然是web3.0模塊化的桎梏,但我相信它終有一天會被打破。

Total
0
Shares
Related Posts