一篇文章看透百度XuperChain系統架構

買賣虛擬貨幣
本期「百度超級鏈學院」邀請來資深研發工程師,為各位開發者帶來超硬核解讀,揭秘百度XuperChain系統架構到底是怎樣的!背景百度XuperChain在2019年5月底正式宣佈開源。在開源後很快獲得了開發者、區塊鏈媒體的廣泛關注。XuperChain是百度自主研發的區塊鏈系統,在開源到Github後仍然在活躍地升級程式碼,先後釋出了V3.1、V3.2兩個版本。其中有10%的程式碼是由外部開發者貢獻的。當前,國內外的區塊鏈系統多如過江之卿。對於區塊鏈開發者而言,如何選擇一個區塊鏈系統持續地深耕是一個難題。在專案選型過程中有很多問題要考慮,例如,功能是否完備,效能是否滿足業務壓力,開發過程中遇到問題能否獲得有效的支援?百度超級鏈目前已經透過工信部電子一所的標準測試,在功能、安全、效能三方面都遠超過同類產品。超級鏈也建立了活躍的開發者微信群,越來越多的開發者正在學習超級鏈,用超級鏈落地自己的專案。本文將闡述百度超級鏈的架構體系,對其獨特的關鍵技術進行簡要的分析,讀者將大體瞭解到超級鏈為什麼能實現高效能,架構上如何做到的可插拔等等。後續我們還會推出系列文章,對各個知識點進行抽絲剝繭的講解。系統架構
一般而言,區塊鏈系統都是有三大件:分散式賬本、合約引擎、共識處理器。分散式賬本解決的是資料的儲存問題,例如資料怎麼持久化到儲存介質,資料怎麼組織,資料的校驗、更新、查詢等。合約引擎解決的是計算問題,能夠將資料和合約位元組碼從賬本載入到虛擬機器,進行運算之後,將產生的資料變更再寫入到賬本。

共識處理器解決的是一致性問題,因為區塊鏈是個P2P的網路叢集,傳輸有延遲、不穩定、節點作惡等因素。最終需要透過共識處理器保障:叢集中的所有節點的儲存的資料是一致的,計算結果也是一致的。

在超級鏈的架構設計中,這三大件都具備可插拔能力。

在合約引擎中,透過抽象的虛擬機器介面設計,使得可以整合各種豐富的虛擬機器,例如:XVM、Wavm、SolidityVM(未開源)等等。

在分散式賬本中,我們設計了高併發的事務管理模型XuperModel, 並且透過抽象的Key-Value介面設計,使得可以能整合各種底層儲存引擎,例如:Leveldb、Baddger、Rocksdb, 只要實現了Put、Get、Iterator等介面,就可以將第三方的儲存引擎整合進來。

在共識處理器中,透過抽象的Consensus介面設計,使得可以整合各種豐富的共識演算法。超級鏈已經開源的主要是TDPos和Pow兩種共識演算法。開發者完全可以根據自己的需要開發自己的共識演算法整合進來。

高效能關鍵技術

超級鏈的效能最佳化主要是從兩個方面著手,一個是立體網路、一個是鏈內並行。

立體網路,簡單來說是透過一條Root鏈派生出N個平行鏈,這N個平行鏈是按照業務來劃分,使得交易充分地並行。某些必要情況下要透過Root鏈的雜湊錨定實現跨鏈。另外,還有可迴歸側鏈技術,動態地fork生成側鏈,完成一段時間的計算執行後,釋放側鏈。立體網路技術暫時沒有開源。

鏈內並行,指的是單鏈情況下的效能最佳化技術。提高單鏈的效能主要從兩個方面:加快出塊速度和穩定性、交易驗證充分並行。

一方面,超級鏈採用了TDPOS共識,最佳化了出塊時間片排程機制,能夠穩定快速出塊。另一方面,超級鏈採用獨有的XuperModel模型,使得交易的驗證充分地並行化。這種模型是從經典的UTXO模型發展而來的,將智慧合約的執行分為兩個不同的階段:預執行階段和提交階段,並透過類似於MVCC的機制避免整體加鎖,不同於一般的讀寫集機制,超級鏈中交易的讀集引用不需要繫結區塊高度,未確認交易的輸出也可被引用,進一步提升了效能測試的整體吞吐。

此外,在工程實現方面也做了大量的最佳化。比如底層KV儲存支援多盤儲存避免IO瓶頸,透過記憶體Cache降低訪盤開銷,透過執行緒避讓機制保障準時出塊等等。

社羣建設

超級鏈的程式碼開源在https://github.com/xuperchain,目前每週的開發進展都會同步給社羣。我們也歡迎大家提交程式碼,在Github上給出了Issue和 Pull Request的發起模板。到目前為止,外部開發者提交的Commit數量佔到了10%。我們的社羣建設目標是逐步提升這個比例,使超級鏈真正成為一個開放共建的生態。

為了方便大家反饋問題、及時地解答疑惑,我們也建立了微信群(見文末),群中有值班的工程師會7*24小時為開發者服務。

後續計劃
後續,超級鏈會進一步提升效能、易用性,努力提高在區塊鏈開發者中的影響力。另外,大家也知道XuperChain只是超級鏈“Xuper”家族產品中的一員,我們後續還會開源超級鏈在邊緣計算、大資料、多方安全計算等方面的整合化解決方案,敬請關注。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;