致信底層鏈網絡中存在礦工節點和用戶節點兩種類型,礦工節點指繳納保證金后,加入了候選陪審員列表的節 點,這種節點又分為 Mediator 節點和 Jury 節點。
礦工節點都是全節點,保留了全部的賬本數據。礦工節點需要 運行合約,進行共識等操作。礦工節點必須保證長時間在線和良好的運算環境(CPU、內存、硬盤等)以及網 絡環境(高帶寬、低延遲)。
用戶節點是瀏覽和發起交易的節點,用戶節點不需要保證是全賬本,允許更長時間的延遲。
我們假定礦工節點長時間在線,而用戶節點會隨時上線和離線,但是不會出現大量用戶節點同時上線和同時離線的情況發生。
每個節點存儲的數據,在理想狀態下是一致的,礦工節點要求較低的延遲,用戶節點不要求實時性,但是在足夠長的時間后也能同步到所有的數據。
致信底層鏈網絡中的Mediator 節點,會相互之間建立 P2P 連接,保證了 Mediator 之間數據延遲更低。Jury 只是臨 時組件的團體,所以并不要求 Jury 內部每個陪審員之間兩兩連接。
有向無環圖(Directed Acyclic Graph)簡稱 DAG。在 DAG 中沒有區塊概念,所有數據并不打包成區塊再用 區塊鏈接區塊,而是每個用戶都可以提交一個數據單元,這個數據單元里可以有很多東西,比如交易、消息等。數據單元間通過引用關系鏈接起來, DAG的特點是把數據單元的寫入操作異步化,大量節點可以自主地把交易數據寫入DAG。 致信區塊鏈 使用 DAG 的目的是為了解決傳統區塊鏈中只有一條主鏈,無法并行執行的問題,同時節省了打包交易出塊的時間。
傳統的區塊鏈里,在生成區塊之前,需要給所有的交易做一個交易池,礦工從交易池中挑選要打包的交 易,然后根據共識算法打包為區塊,最后放到鏈中。在交易被打包到區塊并廣播到全網之前,交易是屬于未確 認狀態,這阻塞了其他的交易寫入,從而使得傳統區塊鏈交易確認時間非常長。 DAG并行處理的特點使其有潛力為各行業的經濟活動和價值交易帶來全新的技術革新與升級,在彌補不同交易主體之間信任鴻溝的同時,通過時間戳、不可逆性、可追溯性、并行處理等特點,降低交易成本,實現具 有更強表達力的智能合約,更快的交易確認,更廣泛的應用場景,更強的安全性和隱私保護。
要在致信雙層共識平臺中,Mediator是整個PalletOne的核心部分,Mediator使用代理權益證明(Delegated Proof of Stake,DPoS)來進行共識。Mediator節點是由致信Token持有者投票產生。Mediator節點輪流“工作”,每個節點在一個Time Slot中負責的其中兩項工作包括利用VRF(Verifiable Random Function,可驗證隨機函數)算法隨機選擇陪審員組建陪審團,和在陪審員無法達成共識時進行仲裁。
陪審團(Jury)是維護致信區塊鏈安全性和完整性的基本單位。更具體的說,陪審團被委任運行和驗證智能合約以及管理多重簽名賬戶。
為了實現安全和去中心化的設計,陪審團被設計為由許多參與者組成,這些參與者被稱為陪審員。Mediator“每受理一個案件”時,從候選陪審員中隨機選出一組陪審員組成陪審團,對“該案件進行評審”,“案件審理”結束后,陪審團會隨之解散。陪審團內采用 BFT的算法來實現共識。
智能合約(Smart Contract)這個概念最早由 Nick Szabo 于 1996 年提出,該概念在區塊鏈中被廣泛使用, 并誕生了以太坊、量子鏈、EOS 等眾多支持圖靈完備的智能合約的區塊鏈。概括下來,智能合約具有以下特性:
(1) 智能合約必須是一種合約,是平等的當事人之間執行約定內容的協議。智能合約與傳統合約不同之 處在于,智能合約是數字形式的,是由計算機讀取和執行。
(2) 智能合約是部分或者完全自我執行或者自我強制的。
(3) 智能合約需要安全的運行環境。合約運行環境必須安全可靠,執行結果能在多方達成一致。
(4) 只有智能合約才能修改賬本數據。
出于智能合約的特點,合約安全以及在多語言,多平臺智能合約上的考慮,致信區塊鏈默認采用Docker容器化技術實現智能合約。在業界,Docker 作為智能合約的虛擬機已經在 HyperLedger Fabric 中應用,被大量的企業和項目所論證。
在致信區塊鏈應用平臺中,所有類型的服務都是通過合約來創建。合約的創建是基于合約模板的,我們為常見的場景提供了合約模板供用戶使用。用戶也可以自己創建新的合約模板并部署到致信區塊鏈上。合約模板的部署需要調停中介(Mediator)來完成。調停中介負責檢 查合約模板的語法、規范等,只有滿足要求的合約模板才能部署成功。部署成功的合約模板將被保存在分布式存儲中以備以后部署合約時使用。
系統為不同的編程語言提供了不同的運行時 Docker 鏡像,另外也提供了對應語言的 SDK 幫助合約開發人員快速便捷的開發出智能合約。合約開發人員基于SDK 在本地編譯好合約程序后,只需要將編譯后的文件放到 致信區塊鏈進行發布,發布后的合約程序被稱為合約模板。用戶基于模板創建合約時,合約執行節點(陪審員) 會根據合約的語言選擇對應的運行時鏡像,構建新的合約模板鏡像,并最終實例化合約容器,
合約模板就是基于致信區塊鏈合約 SDK,符合致信區塊鏈合約規范的可執行程序。智能合約開發人員使用自己熟悉的開發語言,在本地編寫和編譯好合約模板程序,另外出于開發調試的方便,后期 致信區塊鏈會提供單機致信區塊鏈網絡的模擬運行。