摘要:Heco 技術負責人Andrew 認為,保證區塊鏈特有約束和語義不被破壞的提前下,可藉鑑互聯網領域成熟優秀的工程優化經驗。 2021 年9 月4 日,BeWater DEVCON 全球開發者大會在北京舉辦,來自各地的近百位區塊鏈開發者齊聚北京,圍繞編程語言、密碼學、去中心化協議、隱私技術、安…
Heco 技術負責人Andrew 認為,保證區塊鏈特有約束和語義不被破壞的提前下,可藉鑑互聯網領域成熟優秀的工程優化經驗。
2021 年9 月4 日,BeWater DEVCON 全球開發者大會在北京舉辦,來自各地的近百位區塊鏈開發者齊聚北京,圍繞編程語言、密碼學、去中心化協議、隱私技術、安全計算、開放金融等領域展開深入探討。
在提到公鏈的可擴展性問題時,來自海內外的開發者們對當前備受市場關注的分片、Layer2、側鍊等技術解決方案展開了激烈的討論。 HECO 技術負責人Andrew 系統地分析了當前公鏈賽道存在的可擴展性難點,並詳細介紹了現有公鏈可擴展性解決方案的優缺點。 Andrew 認為Layer1 方案是對區塊鏈平台的擴展,而Layer2 技術是對區塊鏈應用的擴展,Andrew 將Layer1 擴容架構分為3 大類:分片、DAG (有向無環結構)和大區塊,將Layer2 擴容架構分為側鍊子鏈、狀態通道和Rollup 三大類。
另外,Andrew 重點分享了HECO 在公鏈擴展性理念和實踐中的經驗和總結,「HECO 回到公鏈擴展性問題的原點,立足於公鏈自身的架構優化,只要保證區塊鏈特有的約束和語義不被破壞的提前下,軟件和互聯網領域成熟優秀的工程優化經驗是可以充分借鑒和利用的。」
基於以上觀點和認知,Andrew 提出公鏈架構優化的新四化建設:
-
在保證鍊式結構的提前下,對架構進行模塊化,對組件進行充分拆分和解耦;
-
在保證線性語義的提前下,對執行進行並行化,實現多階段流水線作業;
-
在保證狀態一致性的前提下,進行異步化改造,將阻塞式的I/O 操作放在後台處理;
-
在保證透明安全的前提下,進行本地化多級緩存優化。
Andrew 在分享過程中提到,HECO 當前性能優化成果是BSC 的1.3 倍以上,對Geth 的性能提升更是達到了1.5 倍以上,未來HECO 也會有計劃地將這些優化經驗貢獻給Geth 社區。
演講最後,Andrew 提出「CAB 定律」——Crypto Andy and Bill’s law,他認為未來10-20 年,大部分基礎網絡、基礎硬件、基礎安全的技術紅利都會被區塊鏈行業充分吸收並極致發揮,HECO 未來將持續在Layer1 擴展性之路上深入探索。
以下為Andrew 演講全文:
公鏈擴展性問題和解決方案
區塊鏈技術的本質是擴展信任的邊界、組織的邊界和協作的邊界,但在不斷擴展業務邊界的道路上,技術自身卻受到了擴展性問題的製約。
最明顯的就是以太坊主網,上圖是截止到Q2 的智能合約TVL 鎖倉量,可以看到以太坊的份額正在持續被其他公鏈所蠶食;原因大家都知道,網絡嚴重擁堵,手續費高昂;但根本的原因還是以太坊主網的擴展性不夠。講到這里相信大家都會想到區塊鏈不可能三角,那去中心化、安全性和可擴展性三者真的不可兼得嗎?
其實區塊鏈不可能三角問題是沒有被嚴格定義和證明的,並不能等同於分佈式領域的CAP,區塊鏈領域內學術界和工業界有多層次多類型的擴展性解決方案,比如分片以及最近很火的Layer2 Rollup 方案。
分片作為平台級擴展方案雖然潛力很大,但其安全假設和模型在實際落地中並不容易滿足、要支持通用的高級智能合約完整語義困難重重、很多場景下跨片交易帶來的開銷大於對吞吐提升帶來的收益;Rollup 方案通過平台合約和二層應用相結合的方式,在安全性和吞吐方面有一定的優勢,但當前還只是對特定應用的擴展,還不能擴展到通用平台層面。
DeFi 業務的興起又給公鏈的擴展性提出了新的要求,DeFi 應用非常注重可組合性,合約之間的調用需要像搭建樂高積木一樣便捷,而分片和Layer2 技術的共同問題是引入的分佈式事務的複雜性,對DeFi 應用不夠友好。所以當重新回到問題的原點,立足於公鏈自身的架構優化時,我們會發現,只要保證區塊鏈特有的約束和語義不被破壞的提前下,軟件和互聯網領域成熟優秀的工程優化經驗是可以充分借鑒和利用的。
這裡我將其總結為公鏈架構優化的新四化建設:
-
在保證鍊式結構的提前下,對架構進行模塊化,對組件進行充分拆分和解耦;
-
在保證線性語義的提前下,對執行進行並行化,實現多階段流水線作業;
-
在保證狀態一致性的前提下,進行異步化改造,將阻塞式的I/O 操作放在後台處理;
-
在保證透明安全的前提下,進行本地化多級緩存優化。
其實行業內已經出現了和我們想法類似的公鏈,比如Flow 和Solana。下面我們分別介紹一下二者的核心設計。
Flow 是一條主打NFT 的垂直行業公鏈,其核心理念是對交易處理過程中的共識和執行進行解耦。主要有兩個創新點:
1)分角色節點架構,因設計人員發現節點間的處理能力差異拉低了整個網絡的性能和擴展性,因此Flow 將網絡中的節點分為收集、共識、執行和驗證4 類,讓大量的低配節點只負責共識,保證網絡的安全性,而少量的高配節點只負責執行,從而提升網絡整體的處理能力。
2)引入流水線機制,進行跨區塊Block Seal,從而避免區塊間的相互等待。
Solana 是一條發展迅猛的全行業公鏈,最大的創新是PoH (歷史證明),一種可驗證的對時間採樣和事件排序的方法,可以作為網絡全局時鐘,從而實現全網節點對相對時間的統一度量和消息的高效通信;而Tower BFT (基站拜占庭容錯)共識則是在PoH 全局時鐘的基礎上,實現了對PBFT (拜占庭容錯)消息傳輸和VC (View Change)優化。
其他的優化點像大區塊分片EC 編碼和分層傳輸、流水線化充分利用硬件資源、並行合約執行等,都是在高TPS 下必須要做的工程實現,當然想到不代表做到,Solana 在公鏈架構優化工程實踐層面走的是比較靠前的。
Flow 和Solana 都是在公鏈架構優化層面不錯的案例,這也讓持有相同理念的HECO 在行進的道路上不覺孤單,當然HECO 相比於Flow 和Solana 還有一個更大的特點就是完全兼容以太坊和EVM。下面就一起來了解一下HECO 在擴展性方面的實踐和成果。
HECO 公鏈擴展性理念和實踐
首先來看一下HECO 的戰略定位,HECO 作為整個DeFi 平台的技術底座和生態基礎設施,承載著上層資產、應用和流量入口的所有核心業務,而HECO 自身的技術矩陣又可以按資產安全、容量性能、網絡規模、應用生態4 大維度細分為12 個核心模塊,接下來給大家分享的主要是我們在容量性能相關的交易執行、狀態存儲等方面的優化工作。
容量性能優化首先要明確其理論模型,HECO 當前還是基於最長鏈的POA+POS 共識,在出塊時間方面一定要保證可以cover 住區塊打包+區塊傳播+交易二次執行和驗證的時間。那反過來想就是如果可以進一步降低交易執行和區塊傳播時間,就可以在一個區塊內納入更多的交易,從而有效提升網絡整體的吞吐。
左圖是我們整理的擴展性瓶頸以及優化的層次,右圖是當前整體優化後的效果,可以看藍色的線,HECO 已經可以安全地將Block GasLimit 設置到100M Gwei 以上,TPS 可以到1500+。下面來展開幾個代表性優化。
首先來看並行執行優化,大家都知道以太坊節點的一大瓶頸就是其MPT 狀態樹,HECO 針對狀態樹更新做了很多並行優化,比如多賬戶之間可以無關聯地並行RLP 編碼,更新StorageTrie,並行計算StorageRoot 等,還有並行計算區塊bloom 和receiptRoot 等。並行執行整體優化效果是可以將區塊內交易執行時間降低30% 以上。
再來看存儲流水線優化,當區塊執行完成之後,需要進行寫塊、更新snapshot 和狀態提交3 步存儲更新,分析發現狀態提交是耗時最長的,而且可以和下一個區塊執行進行流水線優化,即上一個區塊完成更新snapshot 就可以開始下一個區塊的執行,但同時也要保證上一個區塊狀態提交完成之後才開始下一個區塊的狀態提交,從而保證狀態提交的順序性和一致性。通過存儲流水線優化,HECO 基本上將存儲更新在整個成塊時間中串行的佔比降低了90% 以上,效果還是非常明顯的。
同時HECO 對合約Bitmap、短數據Hash 計算結果等緩存優化也取得了不錯的成果,將區塊內交易執行時間降低了31.46%。
HECO 技術團隊將我們性能優化的代碼分別patch 到BSC 和Geth 的主幹上,並放在BSC 和以太坊主網去同步區塊和執行交易進行實測對比(通過對比相同條件下的區塊成塊時間),結果是HECO 優化的性能是BSC 的1.3 倍以上,對Geth 的性能提升更是達到了1.5 倍以上。當然HECO 也會有計劃地將我們的優化貢獻給Geth 社區。
回顧HECO 擴展性路線,我們始終秉承著DeFi 友好和完全兼容以太坊兩大原則。相信區塊鏈技術同行一路走來或多或少都會有這樣的疑問,比如區塊鏈平台的發展還要走互聯網工程化的老路嗎?密碼朋克的寶盒裡還有多少魔法沒有放出來? HECO 認為路線和主義之爭不會影響區塊鏈的高速發展,組合創新才是區塊鏈技術最大的魅力。
而且我們認為軟件行業曾經的安迪比爾定律在區塊鏈行業同樣適用,我們稱其為「CAB 定律」——Crypto Andy and Bill’s law:未來10-20 年,大部分基礎網絡、基礎硬件、基礎安全的技術紅利都會被區塊鏈行業充分吸收並極致發揮。所以HECO 會持續在Layer1 擴展性之路上砥礪前行。
演講:Andrew,Heco 技術負責人