如何定義區塊鏈的可擴展性?
區塊鏈可擴展性一直是個熱門話題。幾乎所有的區塊鏈網絡都將每秒交易量(TPS)作為賣點。然而,TPS 并不是比較區塊鏈網絡的有效指標,這也使得評估它們的相對性能成為挑戰。此外,高 TPS 通常要付出代價。這就出現了一個問題:這些網絡是否真的有那么高擴展性,還是它們只是提高了吞吐量?
我們首先來看看如何定義可擴展性,為實現可擴展性做出了哪些取舍,以及為什么有效性證明是可擴展性的終極解決方案。
并非所有的交易都平等
首先我們要確定,簡單的 TPS 指標并不是可擴展性的準確衡量標準。
為對節點執行交易進行補償(并阻止用戶用不必要的計算來擾亂網絡),區塊鏈會按照鏈上計算收取一定比例費用。在以太坊?上,計算負擔的復雜性以 gas 來衡量。由于用 gas 衡量交易復雜性非常方便,因此該術語將在本文中也應用于非以太坊區塊鏈,盡管它通常是以太坊專有的。
交易在復雜性上存在顯著差異,那對應的 Gas? 也是如此。比特幣?是無需信任的點對點交易的先驅,只支持基本的比特幣腳本。這種地址對地址的簡單轉移消耗的 gas 很少。相比之下,以太坊或 Solana? 等智能合約?鏈,支持虛擬機?和圖靈完備的編程語言,允許進行更復雜的交易。因此,像 Uniswap 這樣的 DApp 需要更多的 Gas。
這就是為什么比較不同區塊鏈之間的 TPS 沒有意義。相反,我們應該比較的是計算能力,或者是吞吐量。
所有區塊鏈都有一個(可變的)區塊大小和區塊時間,它們決定了每個區塊可以處理多少個「計算單元」以及新出塊的速度。這兩個變量共同決定了區塊鏈的「吞吐量」。
什么限制了可擴展性?
區塊鏈的終極目標是實現去中心化、包容性最大化的網絡。要實現這個目標,有兩個特性必須得關注。
硬件要求
區塊鏈網絡的去中心化是由網絡中最弱的節點驗證驗證區塊鏈以及其保持狀態的能力所決定。因此,運行一個節點的成本(硬件、帶寬和存儲)應盡可能低,以讓更多的個體成為無需信任網絡中的無需許可參與者。
狀態增長
狀態增長指的是區塊鏈增長的速度。一條區塊鏈在單位時間內的吞吐量越大,區塊增長速度就越快。全節點存儲網絡歷史,它們必須能夠驗證網絡的狀態。通過使用樹狀等高效結構,以太坊的網絡狀態得以儲存和引用。隨著狀態增長,新的葉子和分支添加到其中,使得執行某些行動變得越來越復雜和耗時。隨著鏈的增長,節點執行最差情況也會惡化,從而導致驗證新區塊的時間不斷增長。隨著時間推移,這也增加了同步一個全節點的總時長。
增加吞吐量的不利影響節點數
運行一個節點的最低要求以及節點數量是:
- 比特幣:350GB 硬盤空間,5M/s 帶寬,1GB 內存,CPU 大于 1Ghz。節點數量約 1 萬
- 以太坊:500GB 以上的 SSD 硬盤空間,25 M/s 帶寬,4 至 8GB 內存,CPU 2-4 核。節點數量約 6 千
- Solana:1.5TB 以上的 SSD 硬盤空間,300M/s 帶寬,128GB 內存,CPU 12 核以上。節點數量約 1.2 千
請注意,區塊鏈的吞吐量對節點的 CPU、帶寬和存儲要求越高,網絡上的節點數量就越少,導致去中心化程度越弱,網絡的包容性越差。
同步全節點的時間
當第一次運行節點時,需要與現有的所有節點進行同步,下載并驗證從創世區塊到鏈頂端的網絡狀態。這個過程應盡可能快且有效,以允許任何人都可以成為無需許可的協議參與者。
以 Jameson Lopp 的 2020 年比特幣節點?和 2021 年節點同步測試為指標,下表比較了在普通消費級 PC 上同步一個比特幣與以太坊與 Solana 的完整節點所需的時間。
上表顯示,增加吞吐量會導致更長的同步時間,因為越來越多的??數據??需要處理和存儲。
盡管節點軟件在不斷地優化(降低磁盤占用空間,加快節點速度,增強崩潰恢復能力,組件??模塊化??等等),以應對區塊鏈持續增長帶來的挑戰,但節點顯然仍然無法跟上吞吐量增加的步伐。
應該如何定義可擴展性?
可擴展性是區塊鏈領域中誤解最多的術語。雖然提升吞吐量是可取的,但它也只是難題的一部分。
可擴展性意味著在相同的硬件上有更多的交易。
所以,可擴展性可分為兩類。
?排序可擴展性
排序是網絡中交易的排序和處理行為。如前所述,任何區塊鏈都可以通過提高區塊大小和縮短區塊時間來微弱地增加其吞吐量,直至對其去中心化的負面影響顯著到無法忽視為止。但是,調整這些簡單的參數并不能達到所需的提升。以太坊 EVM? 理論上可以處理高達約 2 千 TPS?,但這不足以滿足長期區塊空間需求。為擴展排序,Solana 做出了創新:利用可并行的執行環境和一個巧妙的共識機制,讓吞吐量的效率大大提高。但是,盡管有這些改進,它既不充分,也不具備可擴展性。隨著吞吐量的增加,Solana 運行節點和處理交易的硬件成本也在增加。
驗證可擴展性
驗證可擴展性是在不增加硬件成本加重節點負擔的情況下增加吞吐量的方法。具體來說,指的是像有效性證明這樣的密碼學創新,讓區塊鏈得以可持續地擴展。
什么是有效性證明 Rollup
有效性證明 Rollup(也稱為 ZK-Rollup)將計算和狀態存儲轉移到鏈下,鏈上只保留少量的特定數據。底層區塊鏈上的一個智能合約維護 Rollup 的狀態根。在 Rollup 上,一批高度壓縮的交易,連同當前的狀態根,發送到一個鏈下的證明器。證明器計算交易、生成結果和新狀態根的有效性證明,并將其發送給鏈上的驗證器。驗證器驗證有效性證明,存儲 Rollup 狀態的智能合約將其更新為證明器提供的新狀態。
有效性證明 Rollup 如何在相同的硬件要求下進行擴展?
證明器對硬件要求確實高,但它們不會影響區塊鏈的去中心化,因為交易的有效性是由數學上可驗證的證明來保證的。
重要的是驗證證明的要求。由于所涉及到的數據被高度壓縮,并很大程度上通過計算被抽象化,它對底層區塊鏈節點的影響是最小的。
驗證器(以太坊節點)不需要高端硬件,批次的大小也不會增加硬件要求。只有狀態轉換和少量的調用數據需要由節點處理和存儲。這允許所有以太坊節點用現有的硬件可以來驗證有效性 Rollup 的批量交易。
交易越多越便宜
在傳統區塊鏈中,交易越多,區塊空間占用越大,也就越昂貴。這就導致用戶需要在手續費市場上競價來優先打包交易。
而對有效性證明 Rollup 來說,這種動態是相反的。在以太坊上驗證一批交易有一定成本。隨著一批交易內交易數量的增加,驗證該批交易的成本增加速度會以指數級降低。有效性證明中,一個批次里交易數量增多,盡管批量交易驗證費用增加,但單筆交易費用反而更便宜,因為總交易成本由同一批次內所有交易均攤。有效性證明希望一個批次內有盡可能多的交易,這樣驗證費用就可以由批次內所有用戶平攤。當批次規模增長到無限大時,每筆交易的平攤費用就會接近于零,也就是說,有效性證明的交易越多,對每個用戶來說就越便宜。
dYdX,一個由有效性證明驅動的 DApp,經常有超過 1.2 萬交易的批次規模。對比在以太坊主網和在有效性證明上,同樣的交易的 Gas 消耗,可以說明可擴展性的提升:
在以太坊主網上結算一筆 dYdX 交易:200,000 Gas
在 StarkEx 上結算一筆 dYdX 交易:低于 500 Gas
從另一個方面來看,有效性證明 Rollup 的主要成本與同一批次的用戶數量成線性比例。
為什么 Optimistic Rollup 不像大家想的那樣可擴展
從理論上來講,Optimistic Rollup 提供了與有效性證明幾乎相同的可擴展性優勢。但有一個重要的區別,Optimistic Rollup 針對平均情況進行優化,而有效性證明針對最壞情況進行優化。因為區塊鏈系統是在極端對抗的條件下運行的,針對最壞情況進行優化是實現安全的唯一途徑。
在 Optimistic Rollup 的最壞情況下,用戶的交易不會被欺詐檢查器檢查。因此,為了質疑欺詐,用戶必須同步一個以太坊全節點,一個 L2 全節點,并自己計算可疑的交易。
在有效性證明 Rollup 的最壞情況下,用戶只需要同步一個以太坊全節點來驗證有效性證明,這就節省了計算負擔。
與有效性證明相比,Optimistic Rollup 的成本與交易數量呈線性關系,而不是用戶數量,這也使得它的交易更昂貴。
最后的難題 — Rollup 狀態的無需許可訪問
用戶只需運行一個以太坊節點就能保證交易的有效性。然而,用戶和開發人員可能會出于各種目的想要查看、運行 Rollup 的狀態和執行。「索引 L2 節點」完美滿足了這個需求,它不僅可以讓用戶看到網絡中的交易,而且也是生態系統運作所必需的關鍵基礎設施?。像 The Graph?、Alchemy? 和 Infura? 這樣的索引器,還有 Chainlink? 這樣的預言機網絡,以及區塊瀏覽器,無需許可的索引 L2 節點都可以完全支持。
結論
許多解決區塊鏈可擴展性的方案錯誤地集中在增加吞吐量上。但是忽略了吞吐量對節點的影響:處理區塊和存儲歷史網絡的硬件要求不斷增加,會妨礙網絡的去中心化。
而有效性證明密碼學的出現,不給節點不斷加重成本負擔,允許廣泛的去中心化的情況下,讓區塊鏈可以實現真正的可擴展性。現在同樣的硬件可以進行更多復雜且強大交易計算。這就逆轉了手續費市場的困境 — 有效性證明上的活動越多,就越便宜!