WEEX 唯客博客, 作者:Avi Zurlo 編譯:Block unicorn 自從 Rollups 的興起以來,區塊鏈的擴展一直集中在模塊化與單體化的爭論上。最初,這種二元對立是一種有用的思維模型,用於推理區塊鏈的可擴展性,但是現在,這兩個陣營都已經超越了它。 如今,模塊化與單體化的對比給我們的可擴展性思維模型帶來了不必要的限制。 那麼,還有什麼替代方案呢? 在本文中,我們將展示水平擴展與垂直擴展一直是區塊鏈可擴展性的基本框架,並解釋採用水平擴展與垂直擴展如何帶來更好的擴展解決方案。 理解模塊化 vs. 單體化 首先,是一些定義: 模塊化鏈將區塊鏈的核心功能分離為不同的層。 單體化鏈將所有核心功能集成到單一的、相互連接的層中。 我們可以將「層」視為「機器」——單體化鏈有一個運行所有任務的單一驗證器節點,而模塊化鏈有多個(2-3個)運行不同任務的全節點。 例如,Rollup 通常有兩個運行節點:一個用於執行的 Rollup 全節點,以及一個用於結算+數據可用性(DA)的以太坊全節點。而 validium 可能會利用三個運行節點:一個用於執行的 Rollup 全節點,一個用於結算的以太坊全節點,以及一個用於 DA 的備用數據可用性層全節點。 模塊化將區塊鏈的任務分配到至少兩個全節點上。通過這樣做,模塊化區塊鏈在構建每個區塊時可以利用多台計算機的計算能力。 這是水平擴展的一種形式。 模塊化在思考區塊鏈擴展性時很有用,因為它是一種水平擴展的類型。 另一方面,大多數單體化陣營選擇通過軟體優化、實現并行虛擬機、數據管道、更快的網路協議和(最值得注意的是)更強大的硬體來擴展。從本質上講,單體化鏈試圖從單個全節點中提取儘可能多的計算能力。 這是垂直擴展的一種形式。 批評者認為,這種方法趨於集中化:如果依靠增加單個節點的功率來擴展,則不可避免地會遇到底層硬體的物理限制,並被迫增加硬體要求以進一步擴展。 然而,這種批評是不正確的,因為並非所有的單體化鏈都只依賴於垂直擴展。 例如,Near 是一個基於分片網路架構構建的單體化 L1 區塊鏈。這意味著 Near 的全節點負責所有任務(即執行、結算和數據可用性),但它們只負責 Near 全局狀態的一小部分。因此,Near 通過根據狀態而不是任務來分配工作,從而利用了多台計算機的計算能力(就像模塊化鏈一樣)。 我們可以看到,無論是單體化鏈還是模塊化鏈,在它們實現的擴展技術方面都沒有限制。兩者都可以進行水平擴展和/或垂直擴展。 此外,模塊化與單體化的爭論始終植根於水平與垂直擴展的框架中。從嚴格的技術角度來看,模塊化傾向於水平擴展,這是其設計所固有的,而單體化則傾向於垂直擴展。 現在我們已經成功推出了模塊化鏈,額外的擴展優勢不再在於「更加模塊化」。現在的焦點是鏈如何利用水平或垂直擴展技術。 採用水平 vs. 垂直的思維模型使我們能夠輕鬆推理每個鏈在此過程中所做的權衡。 重新定義對話:水平 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 來加入對話。 WEEX唯客交易所官網:weex.com