menu-icon
anue logo
熱門時事鉅亨號鉅亨買幣
search icon

區塊鏈

區塊鏈擴容有沒有更優解?

BlockBeats 律動財經 2022-11-10 11:31

cover image of news article
律動財經圖片

今年以來,基於區塊鏈技術構建的各類 Web3 項目蓬勃發展,以 X to earn 及數字藏品為代表的諸多應用引爆了市場,吸引了大量傳統行業的用戶與資金進入 Web3 行業。

然而隨著上層應用交易量的逐漸增多,應用對底層區塊鏈系統的性能要求變得更加苛刻。因此,如果沒有強大的底層性能支持,這些上層 Web3 應用將很快遇到增長的瓶頸。而這,也就再次引出了困擾區塊鏈行業已久的擴容問題。

是的,自區塊鏈行業誕生以來,擴容幾乎是伴隨著整個行業一個永不過時的核心議題。然而經過了多年發展,除了通過犧牲去中心化而換取性能的折中方案,和以 Rollup 為代表的鏈下擴容技術,區塊鏈的底層性能似乎依然沒有得到本質的提升。

那麼,制約整個區塊鏈系統性能提升的主要瓶頸在哪裡,又有哪些方面存在繼續優化的空間呢?要回答這些問題,我們還要先從區塊鏈系統的基本特點談起。


區塊鏈系統的特點

區塊鏈系統存在的根本意義,在於給用戶提供一個可信任的協作平台,因此區塊鏈系統也被稱為「信任的機器」。這種最基本的目標決定了區塊鏈系統必須要滿足以下一些基本特點。

1. 可驗證

首先,信任不是憑空產生的,用戶之所以能夠信任區塊鏈中儲存的數據,不僅在於其無法篡改,更重要的是其可以被高效地驗證,這就是區塊鏈系統的可驗證性。

典型的區塊鏈系統如比特幣以太坊,其鏈中儲存的交易數據,都以各種「樹」型結構而存在。如果你曾嘗試閱讀過相關技術文檔,那麼你一定對諸如 Merkle Tree(默克爾數),或者 Merkle Patricia trie 這樣的名字有印象(這裡不需要讀者理解這些技術名詞,只要對名字有印象即可,其示意簡圖如下)。而之所以區塊鏈普遍使用這類「樹」結構儲存數據,其實是為了滿足其數據可驗證的基本需求。

雖然從理論上講,任何用戶只要下載了區塊鏈系統的所有數據並重新執行全部交易,就可以驗證任何想要驗證的數據,但是這種模式顯然極為低效,也無法滿足區塊鏈使用者頻繁驗證交易的需求。

而樹狀結構的好處就在於,系統只需要提供幾個關鍵節點的資訊,就可以證明交易的存在。舉個不太恰當的例子,就像同樣採用樹狀結構的住宅地址一樣,只要經過省、市、區等少數幾個關鍵節點的確認,就可以驗證一個地址的有效性,這種驗證方式相比遍歷式的搜尋效率顯然獲得了大幅提高。

這種可驗證的數據結構也就成為了區塊鏈儲存系統必須具有的特性之一。

2. 多版本

區塊鏈是一個活的系統,其系統中儲存的數據也隨時因為用戶的操作而產生變化。小到每個人的帳戶餘額,大到一個智能合約的最新狀態,都在隨著區塊鏈的不斷延伸而改變。

而所有這些不同版本的狀態,都要完整的保存在區塊鏈的儲存系統中,這便是我們所說的「多版本」。

3. 持續增長

區塊鏈系統的歷史數據會隨著運行時間的增長而持續增長,在公鏈領域也被稱為狀態爆炸。隨著區塊鏈不斷打包存入新的交易,整個全節點的儲存容量將會迅速提升。

目前這個情況在比特幣中表現的不明顯,畢竟比特幣每個區塊基本只儲存相對簡單的轉賬資訊。但是對於以太坊這種智能合約公鏈,由於需要儲存更多的智能合約代碼,歷史數據的增長速度就會更為迅速。

而對於比以太坊擁有更高 TPS 的高性能公鏈甚至聯盟鏈來說,其歷史數據的膨脹速度就會更加迅速。然而儲存容量的增加必然會導致整個系統的運行效率降低,以下便是儲存容量的增加對區塊鏈性能影響的示意圖。

可以看到無論是交易性能(TPS)還是儲存性能,都會隨著區塊鏈的持續增長而快速衰減。

簡單的數據儲存為什麼會成為區塊鏈系統的大問題?

從上面的性能衰減圖可以看出,對於很多典型的區塊鏈系統,只要儲存規模超過一定程度,其整體性能或者說 TPS 都會出現顯著的性能衰減。

而之所以目前的比特幣以太坊的用戶沒有明顯的感受到這個問題,一是受制於 PoW 之類的共識算法,另一個很大的原因在於其儲存容量尚未達到性能的瓶頸,其衰減效應只是還沒有明顯地顯現出來而已。

然而就像雙十一的極限挑戰促使阿里開發出了全球最高效的結算系統一樣,由儲存引發的區塊鏈性能瓶頸,首先出現在了更加高效的聯盟鏈領域。

那麼聯盟鏈能否借鑑傳統技術解決這個問題呢?也不行,正如上文我們提到的,區塊鏈數據儲存必須滿足可驗證等特性,因此這不是傳統的數據庫技術能夠直接解決的。

相比傳統的計算機儲存系統,區塊鏈的儲存系統需要面對更多的挑戰。上圖是阿里螞蟻鏈團隊對解決儲存瓶頸主要挑戰的分析。其中關於性能、成本與規模的挑戰比較容易理解,這裡我們稍微解釋下前兩個問題,也就是「讀寫放大」和「數據局部性」。

上文提到,區塊鏈系統為了滿足數據的可驗證需求採用了樹狀儲存結構。而樹狀儲存的特點就是,隨著數據儲存量的增加,樹的層數也會隨之增加。

想象一下一個只有六七人的創業團隊,可能一共只有老闆和員工兩個管理層級,找人的時候只要在辦公室吼一嗓子就可以了。而像阿里這樣的大企業,為了管理好數十萬員工,其內部職級序列排到二十幾層也不過分。這時候如果想在這樣的大廠中隨機驗證一個員工的業務能力,尋找以及驗證速度顯然就會大大降低。

這種由於層數增多引起的儲存效率降低,就是上圖提到的區塊鏈儲存系統的第一個挑戰:讀寫放大。

第二個「數據局部性」也是區塊鏈特有的一個儲存問題。我們知道為了達到區塊鏈系統數據難以篡改的特點,所有上鏈的數據都會經過哈希運算,並將數據與哈希同時儲存。

但也正是這種隨機性,給數據的儲存和查詢帶來了很大的困難。就像如果一本字典中的字都是按照拼音順序排列,那麼在查詢時候就可以很快定位到大致的位置,提高查找效率。但如果字典中的字都是按照每個字的隨機哈希值排列,那麼其查詢難度顯然會大大增加。

這種由於哈希的隨機性引起的「數據局部性」,大大提高了磁盤在儲存與查詢時的難度,降低了區塊鏈系統的儲存性能。

螞蟻鏈的 Letus 系統如何突破區塊鏈儲存瓶頸

其實對於以上問題,無論在聯盟鏈領域還是公鏈領域都已經有不少團隊做出過一些改進的嘗試。

比如聯盟鏈領域的 HyperLedge 選擇在一定程度上弱化可驗證性,但這種思路只是在不同特性之間進行取捨和權衡,並沒有從根本上解決問題。而螞蟻鏈團隊的研發方向,則是希望在保持安全性、可驗證性、數據完整性等關鍵屬性不妥協的前提下,對儲存效率進行提高。

那麼螞蟻鏈新推出的 Letus 系統是如何解決這些問題的?

1. 合併狀態樹與數據庫

我們已經知道區塊鏈為了滿足可驗證的需求而採用樹狀儲存結構,但其實所謂的「樹」也是抽象出來的概念。最終真正保存到硬盤中的,肯定不會是畫成樹狀的圖表,而是一組組排列整齊的數據。這就需要將各種「樹」進行重新排列,並且利用數據庫軟體將其按一定規則整理,最終再儲存到硬盤中。

我們以以太坊的儲存過程為例。下方關於以太坊數據儲存過程的圖示有些複雜,讀者不需要看具體的細節,只需要知道以太坊的儲存也是從各種抽象的「樹」結構(最上方),最終變成符合數據庫格式的整齊數據(最下方),然後再存入硬盤就可以了。



是的,儘管我們說區塊鏈不是個簡單的數據庫,但是區塊鏈數據最終儲存進節點的硬盤時,依然需要數據庫軟體進行整理並最終保存。

而螞蟻鏈的 Letus 系統,為了提高儲存效率,突破性地將可驗證的「樹」狀結構,直接與更下層的數據庫系統進行了整合,相當於將上圖中的三層結構合併成了一層。這樣就可以使可驗證的數據結構和底層儲存之間,分別利用自己的特點進行深度優化,進而提高儲存以及驗證的效率。

2. 改變儲存方式

在傳統的區塊鏈樹狀結構中,只要最下方的數據(葉子結點)有一個數據改動,其上每一個相關節點的哈希值都會發生變更,進而需要重新儲存。

而螞蟻鏈由於「讀寫放大」導致樹的層級越來越多,因此為了避免每次修改數據都需要重新儲存所有層的哈希,減少帶給儲存系統的壓力,Letus 採用了增量儲存的新思路。就是將所有的增量儲存優先保留成增量的索引(如下圖右側)。

這樣不但解決了隨著數據增加的層數增多(讀寫放大)問題,也減少了頻繁修改樹節點哈希的次數。只要保證這些增量資訊的可驗證性,就能大大提高系統的儲存性能。

對於前文提到的數據局部性問題,LETUS 通過將區塊號 (有序的) 作為版本、實現有序索引等技術解決這一問題,用基於版本號的索引 key 來代替哈希隨機索引 key,一方面數據寫入時就按區塊號順序,另一方面數據的儲存和查詢都通過有序的索引 (如 B 樹) 進行,從而避免數據隨機布局,也提升數據的局部性。

除此以外,Letus 系統還實現了諸如智能控溫分層儲存、基於邊界掃描的批量剪裁等諸多技術創新,降低成本,提升業務續航,但限於篇幅原因在此不再進行展開。

螞蟻鏈的儲存方案有哪些借鑑意義

目前流行於公鏈領域的擴容方案,除了鏈下擴容技術(如 Rollup)外,在公鏈本身的擴容領域基本進入了一個瓶頸期。市面上絕大多數所謂高性能公鏈其實並沒有根本性的解決區塊鏈的性能問題,而只是在安全、去中心化與性能三者之間進行取捨。

這導致市場上諸多高性能公鏈項目,其更多的性能提升都是通過放棄去中心化的特性來獲得的。這也是為什麼這些高性能公鏈的解決方案難以被以太坊所借鑑的原因,畢竟以太坊一直希望保持節點的硬體成本不高於 2500 美元,以最大程度的維持系統的去中心化屬性。

但是螞蟻鏈 Letus 系統的解決方案,並沒有在安全性或者可驗證,甚至數據完整性上做出任何的取捨。這種創新,對於整個行業來說其實更加具有進步意義。

作為一個長期研究公鏈的從業者,我個人在價值觀上當然更加偏向更開放的公鏈生態,之前也確實極少關注聯盟鏈行業的技術進展。

然而在了解了以螞蟻鏈為代表的聯盟鏈同行們做出的新的技術創新後,突然發現聯盟鏈行業其實一直都不是在閉門造車。雖然他們由於合規或其他考慮,很少在公開場合點評公鏈技術,但其團隊對公鏈領域的技術進展的研究從未停止,也在積極的通過自己的方式探索更優的解決方案。

而這些新開發出的技術,也並非只適用於聯盟鏈領域,而是對整個公鏈的技術發展都有極強的借鑑價值。雖然我們近年來總是調侃 Web3 很難發生在中國,但其實中國的區塊鏈技術領域並沒有真的進入萬馬齊喑的程度。在合規的前提下,以螞蟻鏈為代表的技術團隊依然在區塊鏈的底層技術上進行探索與改進。在不遠的未來,甚至不排除這些技術可以對公鏈行業進行反哺和技術輸出。

當然,或許也是由於聯盟鏈行業的 to B 色彩太濃,導致其不太重視和普通用戶的溝通(畢竟沒有公開發行的 Token,因此也沒有炒作自己的必要)。希望未來聯盟鏈領域的團隊能夠多披露些資訊,讓更多的人能夠了解到國內最優秀技術團隊在區塊鏈領域的最新進展。

原文連結

暢行幣圈交易全攻略,專家駐群實戰交流

▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!

前往鉅亨買幣找交易所優惠

文章標籤


Empty