共識處理器解決的是一致性問題,因為區塊鏈是個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”家族產品中的一員,我們後續還會開源超級鏈在邊緣計算、大資料、多方安全計算等方面的整合化解決方案,敬請關注。