自從 Rollups 的興起以來,區塊鏈的擴展一直集中在模組化與單體化的爭論上。最初,這種二元對立是一種有用的思維模型,用於推理區塊鏈的可擴展性,但現在,這兩個陣營都已經超越它了。
如今,模組化與單體化的對比為我們的可擴展性思維模型帶來了不必要的限制。
那麼,還有什麼替代方案呢?
在本文中,我們將展示水平擴展與垂直擴展一直是區塊鏈可擴展性的基本框架,並解釋採用水平擴展與垂直擴展如何帶來更好的擴展解決方案。
#首先,是一些定義:
模組化鏈將區塊鏈的核心功能分離為不同的層。
單體化鏈將所有核心功能整合到單一的、相互連接的層中。
我們可以將「層」視為「機器」—單體化鏈有一個運行所有任務的單一驗證器節點,而模組化鏈有多個(2-3個)運行不同任務的全節點。
例如,Rollup 通常有兩個運行節點:一個用於執行的Rollup 全節點,以及一個用於結算資料可用性(DA)的以太坊全節點。而validium 可能會利用三個運行節點:一個用於執行的Rollup 全節點,一個用於結算的以太坊全節點,以及一個用於DA 的備用資料可用性層全節點。
模組化將區塊鏈的任務分配到至少兩個全節點上。透過這樣做,模組化區塊鏈在建立每個區塊時可以利用多台電腦的運算能力。
這是水平擴展的一種形式。
模組化在思考區塊鏈擴展性時很有用,因為它是水平擴展的類型。
#另一方面,大多數單體化陣營選擇透過軟體優化、實現並行虛擬機器、數據管道、更快的網路協定和(最值得注意的是)更強大的硬體來擴展。從本質上講,單體化鏈試圖從單一全節點中提取盡可能多的運算能力。
這是垂直擴充的一種形式。
批評者認為,這種方法趨於集中化:如果依靠增加單一節點的功率來擴展,則不可避免地會遇到底層硬體的物理限制,並被迫增加硬體要求以進一步擴展。
然而,這種批評是不正確的,因為並非所有的單體化鏈都只依賴垂直擴展。
例如,Near 是一個基於分片網路架構建構的單體化L1 區塊鏈。這意味著Near 的全節點負責所有任務(即執行、結算和資料可用性),但它們只負責Near全域狀態的一小部分。因此,Near 透過根據狀態而不是任務來分配工作,從而利用了多台計算機的運算能力(就像模組化鏈一樣)。
我們可以看到,無論是單體化鏈還是模組化鏈,在它們實現的擴展技術方面都沒有限制。 兩者都可以進行水平擴展和/或垂直擴展。
此外,模組化與單體化的爭論始終植根於水平與垂直擴展的框架中。從嚴格的技術角度來看,模組化傾向於水平擴展,這是其設計所固有的,而單體化則傾向於垂直擴充。
現在我們已經成功推出了模組化鏈,額外的擴充優勢不再在於「更模組化」。 現在的焦點是鏈如何利用水平或垂直擴展技術。
採用水平vs.垂直的思考模型使我們能夠輕鬆推理每個鏈在此過程中所做的權衡。
在深入研究水平vs.垂直擴展框架之前,重要的是要承認它的起源可以追溯到20世紀70 年代,當時分散式運算研究為水平擴展概念奠定了基礎。如今,所有的擴展技術都可以歸類為水平或垂直擴展。
垂直擴展
垂直擴展會增加每個節點的硬體利用率或硬體需求。在區塊鏈中,這通常是透過並行虛擬機器(即多執行緒進程)等軟體優化來完成的。
一個常見的例子是EVM與SVM。
EVM依順序執行事務,而 SVM 則是並行執行事務。 SVM 透過利用更多的 CPU 核心來實現這一點,因此 SVM 每秒可以比 EVM 處理更多的交易。注意:這個垂直擴充類型是 Eclipse L2 背後的基礎。
在權衡方面,垂直擴展受到可用硬體的限制,由於硬體需求的增加而趨於集中化,並且與水平擴展相比可擴展性較差。
水平擴展
#另一方面,水平擴展透過將工作負載分散到多個節點上來增加系統可以存取的機器數量。如前所述,模組化鏈本質上是將任務分配到多台機器上。然而,鏈通常可以透過分片實現更大程度的水平擴展。
=nil;這裡提供了一個有用的範例。
去年11月,=nil;基金會推出了一種可驗證的分片架構,稱為zkSharding,它是新的以太坊L2 的基礎。 =nil; 設計的核心是將其全域狀態分割到多個分片上。每個分片均由=nil;的去中心化委員會運行,他們建立區塊並管理跨分片交易 。此外,每個分片都會產生一個有效性證明,該證明會發送到主分片進行聚合,然後在以太坊上發布和驗證。 =nil;透過兩種方式利用水平擴展的能力:
首先,=nil;是一個模組化區塊鏈,它利用以太坊的強大共識和數據可用性作為保證,從而將任務分配在多個全節點上。
其次,=nil;是一個分片區塊鏈,因此將部分狀態分佈在許多全節點上。
這兩種技術都減輕了任何單一機器需要承擔的負載,並提高了網路的整體可擴展性。
那麼,水平擴展的權衡有哪些呢?這可以歸結為兩點:網路和共識的複雜性以及機器或分片之間的非同步通訊。
水平擴展和垂直擴展都不局限於模組化或單體化架構。這就是為什麼水平vs.垂直擴展框架提供了更多空間來探索新的解決方案,使模組化區塊鏈更具可擴展性。
例如,一種選項是垂直擴充模組化堆疊的一層。一種常用的方法是實作並行虛擬機,從而提高執行吞吐量。 正如上面提到的,Eclipse 正在利用SVM 和其他Rollups,例如Starknet
################################# ##,實作BlockSTM 以實現並行化。 ############但是,垂直擴展######總是受限於######單一機器的限制,我們無法打破######物理定律# #####。 #########一種解決方案可能是選擇透過分片###實現###水平擴展。 #########目前的模組化設計才剛開始觸及水平擴展的全部潛力。透過分片,我們可以利用任意數量機器的######計算能力(而不僅僅是2-3台機器分擔任務)。 ######
換句話說,許多機器可以並行運行相同類型的任務。這就是以太坊和Celestia希望分別透過 Danksharding 和資料分片實現的目標。但是,分片本質上並不局限於資料可用性層——它還可以與執行相結合(如 =nil; L2 的情況)。
如果我們將透過模組化堆疊實現的水平擴展與分片提供的水平擴展相結合,我們將獲得可用運算能力的大幅增加。
但我們可以做得更好…
區塊鏈可擴展性的最終目標將融合水平和垂直擴展,從而產生具有平行虛擬機器的分片區塊鏈。
在=nil;基金會,我們正在系統地朝著這個最終狀態設計邁進。 =nil; 的L2 透過利用模組化、水平可擴展的架構(zkSharding) 和垂直擴展的驗證器實現(分片內並行化),採取了一條正面的擴展路線圖。
因此,=nil;的設計可以在不犧牲狀態、流動性或使用者碎片化的情況下實現全球規模。
如果對水平擴展和 zkSharding 感到好奇的話,可以到 =nil; 基金會的 Discord 和 X 來加入對話。
以上是模組化 vs. 單體化架構已死的詳細內容。更多資訊請關注PHP中文網其他相關文章!