以太坊 ETF 推出後,Solana 也成為下一個 ETF 呼聲最大的加密貨幣,儘管 SEC 仍將 Solana 列為證券,但在加密市場,共識即價值,Solana 的共識或許正變得和比特幣與以太坊一樣堅不可摧。
作者:小豬 Web3
封面: Photo by GuerrillaBuzz on Unsplash
一份性能報告
CoinGecko 於 5 月 17 日發布的《Fastest Chains》報告中顯示,Solana 是大型區塊鏈中速度最快的,最高日均真實 TPS 達到 1,504(已經去除了投票交易),Sui 是第二快的區塊鏈,最高日均真實 TPS 達到 854,BSC 排名第三,但達到的真實 TPS 還不到 Sui 的一半。
![圖片](https://web3caff.com/wp-content/uploads/2024/06/640wx_fmtotherampfromappmsgamptpwebpampwxfrom5ampwx_lazy1ampwx_co1.jpg)
從這份報告可以看出,表現最好的 Solana 和 Sui 都是非 EVM 相容的區塊鏈,更進一步,8 個非 EVM 相容區塊鏈的平均真實 TPS 為 284,17 個 EVM 相容區塊鏈和以太坊 Layer2 的平均 TPS 僅為 74,非 EVM 相容區塊鏈的效能是 EVM 相容區塊鏈的 4 倍左右。
本文將會探討 EVM 相容區塊鏈的效能瓶頸,並揭開 Solana 的效能之道。
EVM 相容區塊鏈的效能瓶頸
![圖片](https://web3caff.com/wp-content/uploads/2024/06/1_640wx_fmtotherampfromappmsgamptpwebpampwxfrom5ampwx_lazy1ampwx_co1.jpg)
首先,我們泛化 EVM 區塊鏈到一般區塊鏈。一般區塊鏈想要提升 TPS,一般有以下幾種做法:
- 提升節點效能:透過堆硬體資源去提升節點效能,節點的硬體需求會影響去中心化程度,例如以太坊推薦配置,Cpu 4 核,記憶體 16G,網路頻寬 25Mbps,一般用戶級設備都能達到,中心化程度較高;Solana 建議配置相對較高 Cpu 32 核,內存 128G,網路頻寬 1Gbps,專業級設備才能達到,中心化程度一般;
- 改進底層協議:包括網路協議、密碼學、儲存等,改進區塊鏈底層協議不改變區塊鏈本身的屬性,也不影響區塊鏈的運作規則,可以直接提升區塊鏈的效能,但底層技術關注度低,目前研究領域沒有重大突破;
- 擴大區塊:增加區塊的大小可以包含更多的交易,進而提高區塊鏈的交易吞吐量,例如比特幣現金(BCH)將區塊從 1 MB 擴大到 8 MB,之後擴展到 32 MB。但擴大區塊的同時也會增大傳播延遲引發安全威脅, 例如導致分叉可能性增大和 DDoS 攻擊;
- 共識協議:共識協議保證了區塊鏈各個節點對於區塊鏈的狀態更新達成協議,是區塊鏈最重要的一重安全門,已經用於區塊鏈的共識機制有 PoW、PoS、PBFT 等。為了滿足可擴展性的需求,一般高效能公鏈都會改善共識協議,並結合自身特殊機制,例如 Solana 基於 PoH 的共識機制,Avalanche 基於雪崩的共識機制;
- 交易執行:交易執行只關心單位時間內處理的交易或計算任務數量,以太坊等區塊鏈採用串行方式執行區塊中的智能合約交易,在串行執行中,CPU 的性能瓶頸是非常明顯的,嚴重限制了區塊鏈的吞吐量。一般高效能公鏈都會採用平行執行的方式,有的也會提出更有利於平行的語言模型來建構智慧合約,例如 Sui Move。
對於 EVM 區塊鏈而言,由於限定了虛擬機,即交易的執行環境,因此最大的挑戰在於交易執行。 EVM 主要有兩個效能問題:
- 256 位元: EVM 設計成一台 256 位元的虛擬機,目的是為了更易於處理以太坊的雜湊演算法,它會明確產生 256 位元的輸出。然而,實際運行 EVM 的電腦則需要把 256 位元的位元組映射到本地架構來執行,EVM 操作碼會對應多個本地操作碼,這使得整個系統變得非常低效且不實用;
- 缺少標準函式庫: Solidity 中沒有標準函式庫,必須自己用 Solidity 程式碼實現,雖然 OpenZeppelin 使這一情況得到一定改善,他們提供了一個 Solidity 實現的標準函式庫(透過將程式碼包含在合約中或是以 delegatecall 的形式呼叫部署好的合約),但是 EVM 字節碼的執行速度遠不如預編譯好的標準函式庫。
如果站在執行優化的角度,EVM 還存在兩大不足:
- 難以做靜態分析:區塊鏈中的平行執行意味著同時處理不相關的交易,把不相關的交易視為互不影響的事件。實現並行執行主要挑戰是確定哪些交易是不相關的,哪些是獨立的,目前部分高效能公鏈會預先對交易做靜態分析,EVM 的動態跳轉(dynamic jumps)機制導致程式碼難以被靜態分析;
- JIT 編譯器不成熟: JIT 編譯器(Just In Time Compiler)是現代虛擬機器常用的最佳化手段,JIT 最主要的目標就是把解釋執行變成編譯執行。在執行時,虛擬機器將熱點程式碼編譯成與本機平台相關的機器碼,並進行各種層級的最佳化。目前雖然有 EVM JIT 的項目,但還處於實驗階段,不夠成熟。
因此從虛擬機的選擇上,高效能公鏈更多採用的是基於 WASM, eBPF 字節碼或 Move 字節碼的虛擬機,而非 EVM。例如 Solana 使用自己獨特的虛擬機器 SVM 和基於 eBPF 的字節碼 SBF。
Fastest Chains:Solana
![圖片](https://web3caff.com/wp-content/uploads/2024/06/20_640wx_fmtpngampfromappmsgamptpwebpampwxfrom5ampwx_lazy1ampwx_co1.png)
Solana 以其 PoH(Proof of History)機制以及低延遲高吞吐量而聞名,是最著名的「以太坊殺手」之一。
PoH 的核心是一個類似於可驗證延遲函數(VDF)的簡單雜湊演算法。 Solana 使用一個序列預映像抵抗的雜湊函數(SHA-256)實現,該函數持續運行,並以一次迭代的輸出作為下一次的輸入。這個計算在每個驗證者的單一核心上運行。
![圖片](https://web3caff.com/wp-content/uploads/2024/06/2_640wx_fmtotherampfromappmsgamptpwebpampwxfrom5ampwx_lazy1ampwx_co1.jpg)
雖然序列生成是順序和單線程的,但驗證可以並行進行,從而在多核心系統上實現高效的驗證。雖然哈希速度存在上界,但硬體改進可能提供額外的效能提升。
![圖片](https://web3caff.com/wp-content/uploads/2024/06/3_640wx_fmtotherampfromappmsgamptpwebpampwxfrom5ampwx_lazy1ampwx_co1.jpg)
Solana 共識流程
PoH 機製作為可靠且無需信任的時間來源,在網路內建立可驗證且有序的事件記錄。基於 PoH 的計時允許 Solana 網路以預定且透明的方式輪換領導者。這種輪換以固定的時間間隔進行,為 4 個槽(slot),每個槽目前設定為 400 毫秒。 這種領導者輪調機制確保每個參與的驗證者都有公平的機會成為領導者,是 Solana 網路維護去中心化和安全的重要機制,防止任何單一驗證者在網路上獲得過多的權力。
![圖片](https://web3caff.com/wp-content/uploads/2024/06/4_640wx_fmtotherampfromappmsgamptpwebpampwxfrom5ampwx_lazy1ampwx_co1.jpg)
每個槽的時間段,領導者提出一個新區塊,其中包含從使用者收到的交易。領導者驗證這些交易,打包成一個區塊,然後將該區塊廣播到網路的其餘驗證者。這種提議和廣播區塊的過程稱為區塊生產,網路中的其他驗證者必須對區塊的有效性進行投票。驗證者檢查區塊的內容,確保交易有效並遵守網路規則。如果一個區塊獲得了絕大多數權益權重的投票,則該區塊被視為已確認。此確認過程對於維護 Solana 網路安全和防止雙花至關重要。
當前領導者的時間段結束,網路不會停止或等待區塊確認,而是會移動到下一個時間段,為後續領導者提供區塊生產的機會,整個過程重新開始。這種方法可確保 Solana 網路保持高吞吐量並保持彈性,即使某些驗證者遇到技術問題或離線也是如此。
Solana 性能之道
由於 Solana 網路可以提前確認領導者,因此 Solana 不需要公共記憶體池來保存使用者的交易。當用戶提交交易時,RPC 伺服器將其轉換為 QUIC 封包,並立即將其轉發給領導者的驗證者。這種方法被稱為 Gulf Stream,它允許快速的領導者轉換和交易的預執行,減少了其他驗證者的記憶體負載。
Solana 的區塊資料帶入核心空間,然後傳遞給 GPU 進行平行簽名驗證,一旦 GPU 上驗證了簽名,資料就會傳遞給 CPU 進行交易執行,最後回到核心空間做資料持久化。這種將數據劃分為不同硬體部件的多個處理過程,稱為管線技術,能最大化硬體利用率,加快區塊的驗證和傳輸速度。
由於 Solana 的交易明確指定存取哪些帳戶,Solana 的交易調度器可以利用讀寫鎖定機制並行執行交易。 Solana 交易調度器每個執行緒都有自己管理的佇列,順序且獨立地處理交易,嘗試鎖定(讀寫鎖定)交易的帳戶並執行交易,帳戶衝突的交易會稍後執行。這種多執行緒並行執行技術稱為 Sealevel。
領導者傳播區塊的過程,將 QUIC 資料包(可選地使用糾刪碼)劃分為較小的資料包,並將它們分發給具有分層結構的驗證者。這種技術稱為 Turbine,主要是減少領導者的頻寬使用。
驗證者在投票過程中,使用一種針對分叉投票的共識機制。驗證者無需等待投票即可繼續進行區塊生產;相反,區塊生產者會持續監控有效的新投票,並即時將其納入當前區塊中。這種共識機制稱為 TowerBFT,透過即時合併分叉投票,Solana 確保了更有效率、更精簡的共識流程,從而提高了整體效能。
針對區塊的持久化過程,Solana 開發了 Cloudbreak 資料庫,透過以特定方式對帳戶資料結構進行分區,以受益於順序操作的速度並採用記憶體映射文件,從而最大限度地提高 SSD 的效率。
為減輕驗證者負擔,Solana 將資料儲存從驗證者轉移到名為 Archiver 的節點網路。交易狀態的歷史記錄被拆分為許多碎片,並使用糾刪碼技術。 Archiver 用於儲存狀態的碎片,但不參與共識。
總結
Solana 的願景是成為一個其軟體以硬體的速度擴展的區塊鏈,因此 Solana 充分利用當今電腦中可用的所有 CPU、GPU 和頻寬能力,以最大化效能,理論最大速度能達到 65,000 TPS。
正是因為 Solana 的高性能和拓展性,讓 Solana 成為處理高頻交易和複雜智能合約的首選區塊鏈平台,無論是年初的 DePIN/AI 賽道,還是近期火熱的 Meme 賽道,Solana 都展現出巨大的潛力。
以太幣 ETF 推出後,Solana 也成為下一個 ETF 呼聲最大的加密貨幣,儘管 SEC 仍將 Solana 列為證券,短時間內不會批准其他加密貨幣 ETF。但在加密市場,共識即價值,Solana 的共識或許正變得和比特幣與以太坊一樣堅不可摧。
免責聲明:作為區塊鏈資訊平台,本站所發布文章僅代表作者及來賓個人觀點,與 Web3Caff 立場無關。文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。