聯盟鏈的實際落地離不開產品化,從技術實現到產品落地,需要配套提供易用的管理組件,以及方便企業開展實施部署、運維和業務人員使用的工具集。同時也需要靈活的權限管理設計,自動化運維節點防控違法有害信息的機制及成熟的區塊鏈應用開發配套。

PlatONE聯盟鏈從實際業務實施中的痛點出發,不斷設計和優化聯盟鏈技術架構與治理工具水平,並將其沉澱和內化為一個通用基礎設施,為大規模生產級的產業應用提供有效支撐。

高度優化的共識算法帶來高性能

PlatONE的共識算法為BFT類共識算法,其繼承了PBFT和Tendermint的三階段協議設計特點,同時也吸收了Tendermint的算法的優點,同樣將round change流程並⼊了正常的共識流程,從⽽將round change的消息複雜度降低為。同時優化了鎖定和解鎖的機制,並且在很多地⽅作了優化和改進。

作為⾼度優化的BFT共識算法,PlatONE的共識⽀持超過100個共識節點,極⼤地提⾼了系統的去中⼼化程度,同時也極⼤地提⾼了系統的共識效率,使系統擁有很⾼的TPS。 PlatONE單鏈TPS超過2.4萬,最高可達20萬,交易響應時間達毫秒級。

企業級部署與運維工具集

目前市面上大部分聯盟鏈的部署和運維⼯具集都多多少少涉及到工具的安裝以及額外的環境依賴,所提供的部署工具集也常常需要執行大量的部署步驟,花費較多的時間和學習成本。

PlatONE提供了豐富的企業級部署⼯具,極大地降低了複雜度;以及提供了完善的說明文檔和相關的PlatONE運維建議,貫穿著部署與運維的各個方面。以靈活、易用和極低的學習成本為出發點,以最大化提高部署與運維友好度為⽅向,從而實現更快捷的部署、開發和維護。

工具集在如下方面進行了大量優化:

PlatONE部署工具集不需要安裝和額外的環境依賴;工具集可以在不同的架構調整中,靈活地切換;提供了多種命令以及參數,滿足用戶不同的部署需求;提供了極為完善的說明文檔,以及運維維護經驗,降低試錯成本和學習成本;支持一鍵啟動單個或多個節點的聯盟鏈;提供多種自定義的部署以及維護方式,降低了部署與維護成本;系統提供了豐富的運維腳本,極大地降低了聯盟鏈運維難度。

企業級合約管理

通過內置合約的方式,實現了系統參數動態調整,CNS(合約命名服務)等個性化定制服務。

系統配置參數統一通過合約進行管理,支持技術升級和治理。

節點准入管理採用上傳公鑰模式,避免傳統CA證書過期問題和證書傳遞過程中的洩漏風險。

支持優化的合約權限控制、角色支持和管理。

支持CNS(Contract Name Service)服務,發送交易不再通過傳統的十六進制格式的合約地址調用,而改為通過合約名稱調用,減少合約升級帶來的數據兼容問題。

支持區塊鏈運維態勢感知、威脅警告。動態監控區塊鍊和智能合約的運行狀態,及時匯報鏈上安全狀況信息。

一鍵合約數據遷移

在智能合約升級的場景中,常伴隨在新舊合約間進行歷史數據遷移的需求。我們調研評估了若干種實施合約數據遷移的方案,包括:

1、硬編碼遷移:指在新版本的數據合約中保存一個指向舊版本數據合約的合約地址,從而使新版本數據合約保存增量的數據內容。

2、硬拷貝遷移:指利用外部遷移工具,將舊版本數據逐步拷貝到鏈下,再從鏈下重新存儲到新版本合約。

3、基於鏈存儲機制遷移:指利用合約賬戶鏈上數據存儲機制,在底層進行數據對象克隆和再構造的過程。

PlatONE根據其底層存儲機制,實現了一套基於默克爾樹的合約數據遷移協議,支持一鍵式將舊合約數據遷移到新部署合約。該協議遷移效率⾼、用戶遷移成本小;避免導入導出導致的遷移錯誤;不會對原有的合約邏輯及數據造成入侵。

權限模型

現實場景中的商業模型往往是比較複雜的,它包含大量的商業元素及它們之間的關係,並且用來描述商業行為中的不同方面,如操作流程,組織結構及金融預測等。

因此為了更好地滿⾜不同企業級用戶的需求,且保障節點間通信安全性,以及對節點數據訪問的安全性,PlatONE採用內置合約的方式實現了⼀整套完善的權限模型,包括節點准入機制,用戶角色管理,合約防⽕牆等功能,充分滿足不同商業需求,為產業賦能,且在網絡和存儲層面上做了嚴格的安全控制,提升系統安全性。其中:

1、節點准入機制:PlatONE通過節點管理合約對節點進⾏管理,包括節點是否能夠接入網絡,節點是否能夠參與共識以及節點信息的維護等功能。

2、用戶角色管理:PlatONE根據不同的權限,設定了不同的用戶角色,並通過內置合約的方式對用戶的角色進行管理。根據不同的角色,用戶在系統中被賦予不同的權限。

3、合約防火牆:PlatONE中合約的調用權限由合約防火牆控制,只有合約的創建者才可以設置該合約的防火牆。

CNS(合約命名服務)

在目前主流的區塊鏈中,用戶是通過地址來訪問智能合約的,比如以太坊。智能合約的地址是一段十六進製字符串,用戶需要記住這段冗長的字符串才能訪問鏈上的智能合約。當合約需要升級時,重新部署合約又會產生新的地址,所有依賴於該合約的模塊都需要做相應更新。顯然現有訪問合約的方式對用戶是不友好的,因此PlatONE實現了合約命名服務,用戶可以通過合約名稱及版本號來訪問智能合約。

合約命名服務英文全稱為Contract Name Service,簡稱CNS 。合約命名服務維護了名稱、版本到合約地址的映射關係,提供了對系統中合約的管理功能,包括合約的註冊和註銷,合約註冊信息和地址的查詢等功能。

PlatONE使用內置合約實現了合約命名服務,用戶部署合約後可以將該合約註冊到內置合約中,後續調用可以通過合約名稱及版本進行調用,而無需使用合約地址。如果交易是根據合約名稱、版本來調用合約, PlatONE底層自動在內置合約中查詢名稱版本對應的合約地址,然後調用該地址的合約。