下圖為迅雷
區塊鏈的技術棧,可以直觀的看出各模塊的分工和協作。
最上層的應用層,是 C端用戶直接接觸到產品和服務,包括賬戶客戶端、第三方客戶端和合約應用。
其中,合約應用是指基于迅雷鏈開發的 DAPP。應用中使用的合約通過服務層的“合約部署”服務部署到區塊鏈上。DAPP中的合約調用通過服務層的“合約調用”模塊進行校驗,合法的才會轉到鏈上處理。
中間的服務層作為應用和鏈之間的橋梁,提供應用層需要的接口和服務。包括安全控制、合約部署、合約請求和數據請求服務。
其中,合約部署的觸發主要是迅雷鏈內部的審核系統觸發,只有企業資質審核通過并且產品內容合法合規,才會被部署到迅雷鏈上。同時,迅雷鏈是同構多鏈框架(下文會詳細介紹),合約會有自己所屬的鏈,并在該鏈上完成合約創建。而普通鏈上的用戶發起合約調用時,用戶所在鏈請求入塊后,需要知道將該請求和區塊路由到哪個鏈上,所以合約部署時還需將合約的路由信息通知到所有鏈。
而數據請求服務模塊,包含鏈克相關的所有請求,包括查詢余額、查詢兌換記錄、執行兌換等。對于余額、兌換記錄這類請求量很大的模塊,會在所有接入節點上做緩存,每個節點通過基礎層的“訂閱及通知服務”訂閱區塊信息。當收到區塊產生的通知后,可以立即解析區塊內信息,并修改緩存中的余額和兌換記錄。對于執行兌換的請求先校驗合法性,再將合法請求轉到基礎層。
最底層也叫基礎層,是構成迅雷鏈最核心的組成部分,由 11個模塊組成。
其中,共識模塊包括共識算法和校驗。這是區塊鏈與分布式存儲服務共同的核心模塊,區塊鏈的共識比普通的分布式存儲服務多了一些安全上的校驗,比如日志。所有參與共識的節點需要對區塊校驗其內部數據的合法性。至于如何達成共識就跟共識算法有關了,迅雷鏈采用的共識算法是 pbft,具體算法的原理和選擇理由下一次分享會繼續介紹。
智能合約模塊:迅雷鏈上有越來越多的應用在接入,這些應用的業務邏輯代碼其實就是智能合約。而智能合約代碼是獨立于區塊鏈程序的,所以需要在區塊鏈程序中運行虛擬機來解釋和執行。再者,智能合約里面需要讀取和修改區塊鏈上的數據,所以虛擬機還要提供方法來與區塊鏈交互。
數據存儲部分:包括區塊、原始請求和用戶數據。相比于以
比特幣為代表的 UTXO模型,迅雷鏈選擇了基于賬戶模型,方便支持智能合約。迅雷鏈的本地存儲系統選擇的是 leveldb,在數據存儲的結構上借鑒了
以太坊的精髓,包括交易樹、賬戶樹、事件樹。每種樹都是一個 merkletree,在區塊頭部只存儲樹的 root的 hash。
密碼學模塊:包括簽名和加密。這也是區塊鏈非常核心和獨特的模塊,區塊鏈的不可篡改、隱私保護等特點都是源于此,涉及簽名、摘要計算、公私鑰對的生成等。
網絡通信模塊:包括 P2P和 RPC。區塊鏈中所有參與的記賬節點都是對等的,記賬節點之間包括請求、區塊等信息都需要網絡送達,當然要做一個健壯的區塊鏈網絡,在網絡通信模塊還需要不斷優化。
通用模塊:包括壓縮和事件機制。因為賬戶模型里要存儲的數據信息相對較多,而且隨著時間推移,鏈的長度也越來越大,所以數據落盤前需要壓縮。事件機制主要是為外圍系統提供鏈上執行合約、鏈上區塊產生等底層支持。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。