硬核分享|Crust 核心協議棧的設計與實現

在這裏插入圖片描述

Crust 實現了去中心化存儲的激勵層協議,適配包括 IPFS 在內的多種存儲層協議,並對應用層提供支持。同時 Crust
的架構也有能力對去中心化計算層提供支持,構建分佈式雲生態。

6月 18 日,Crust Show 第 3 期活動中,我們邀請了 Parity 工程師 kai chao老師,與 Crust Network CTO 子琨一起,就 Crust 核心技術相關進行了硬核的技術探討。

在這裏插入圖片描述

本期分享,從 Crust 協議組的設計與技術實現、對於無縫升級的設計與思考以及 Crust 如何利用 Runtime Interface 擴展鏈上密碼庫、對於鏈上定時器(Scheduler)的運用、Crust 鏈上身份綁定的設計與實現等 5 個方面,子琨和大家進行了詳細的講解。

7hcAwCM66ls8zoRyZKQOiHTZgszx18bSobzn6oOH.jpeg

由於分享內容過長,分爲上下兩篇。本篇主要從 Crust 協議組的設計與技術實現方面展開詳細的介紹。

以下爲 Crust Show 003(上篇)分享整理。

01. 能具體介紹下 Crust 協議組 MPoW、GPoS、Market 以及 Storage 的設計和實現嗎?

Crust 協議組的設計是旨在解決 DS(Decentralized Storage,去中心化存儲)激勵層兩個關鍵性的問題:證明和激勵。

證明主要指的是,如何將鏈下的存儲狀態正確的反映在鏈上;而激勵就是對存儲節點的激勵方案,也就是節點獲取獎勵的方式。

在這裏插入圖片描述

對此,Crust 定義了一個協議組,分別包括了量化鏈下存儲狀態的 MPoW 協議、對節點進行鏈上區塊激勵的 GPoS 協議、去中心化(存儲/檢索)市場的 Market 模塊以及適配多種存儲協議的 Storage 模塊。

02. 我看你畫的《GPoS 協議組》含有 TEE 模塊,能具體聊一下 TEE 在協議組內部是如何使用的嗎?

TEE 是 MPoW 協議的核心模塊,爲MPoW提供可信有效的鏈下輸入。而 MPoW 又爲 GPoS 協議以及 Market 模塊提供初始輸入,所以 MPoW 也是整個協議組的基礎。

具體來講,MPoW 有三個核心的功能:

TEE 通過身份綁定,可信認證節點身份(後面會詳細講解)

TEE 可信量化有意義用戶文件和 SRD(Sealed Random Data,aka. 隨機數據,用於證明磁盤容量),並通過工作量報告(數據塊證明)提交到鏈上

爲鏈上的狀態函數的轉移提供正確的初始輸入(存儲量和文件信息{Merkle Root, File Size});

這裏多提一句,MPoW 的證明過程(包括鏈下和鏈上)十分高效:

  1. 由於 TEE 的提交發生在本地並且能夠自我驗證(SGX 程序的不可篡改性),所以省去了互相驗證數據塊的網絡開銷以及本機進行零知識證明的計算開銷,我們在不斷的優化整個驗證流程。

目前的數據表現讓我們十分滿意,1TB 的數據(這裏不管是 SRD 還是有意義文件)進行全驗證的時間是 18s,抽查驗證並且抽查率爲 2% 的情況下,我們的驗證過程只需要 0.36s。

  1. 另外,鏈上的驗證得力於 Rust 高效的 Native 執行與 Substrate Runtime Interface 的 Native+Wasm 交互機制,能夠讓鏈上驗證基於 Rust Native 進行高效的簽名驗證。

目前測試的數據是,進行 100 次 p256 橢圓曲線的簽名驗證(背後是數據塊證明的驗證)僅僅只需要花費 0.016s。

03. 對於鏈上協議 GPoS 和 Market,具體指的什麼呢?

GPoS

GPoS(Guaranteed Proof of Stake,擔保權益證明),對節點進行區塊激勵的協議,這個協議的設計是從波卡的 NPoS 得到的靈感並結合我們的系統進行的創新。

詳細概念和介紹大家可以關注近期已經發布的《Crust Network 經濟白皮書草案公佈》,這裏時間有限就不展開去介紹了,我們主要來談一下 GPoS 是如何實現的。

首先,剛纔談到 MPoW 作爲整個協議組的基礎,會設置一個鏈上狀態函數的初始輸入,這個初始輸入就是節點的工作量/存儲量,其包含了該節點有多少存儲容量、存儲了多少有意義文件以及每個有意義文件的大小。

而這個數據矩陣會通過一個公式被轉化爲 GPoS 裏面的一個關鍵值 StakeLimit。

在 GPoS 裏 Stake Limit 會被作爲節點可抵押/可被擔保的額度,穿插在整個 GPoS的協議的流轉中。

當然,整個 GPoS 的實現機制是較爲複雜的,包括了主動檢測、被動檢測、有效票、順延擔保、多次擔保等機制。

這次的技術分享大概無法 Cover 掉所有的實現細節,之後可以再安排一個技術分享去講一下 GPoS 所有的細節規則。

Market

目前 Crust 設計並實現了的版本是存儲市場,檢索市場會在 Maxwell 2.0 版本上線,這次技術分享我們就先聊一下存儲市場的設計和實現。

同樣基於 MPoW 給定的初始輸入,Market 模塊只關注節點提交上來的有意義文件的 Merkle Root,根據 Merkle Root 對應 Market 存儲訂單信息,從而反映節點是否有效存儲文件。

Market 也會週期性的檢測 Provider 名下所有有效訂單的文件是否被合理存儲,一旦檢測失效,會對 Provider 的訂單失效率進行鏈上記錄,並根據不同程度的文件丟失進行懲罰。

Market 模塊的實現挑戰在於訂單數量的巨大,這個部分我們將採用 Substrate 的 Offchain Worker 來進行訂單記錄,並通過 Forkless Upgrade 在 Maxwell 後續版本進行升級。

04. 我們知道 Crust 是去中心化存儲激勵層,能爲我們介紹下協議組裏的存儲協議嗎?

Storage 這個部分主要是想聊 Crust 支持的存儲層協議 Karst,對於 Karst,我們將其定義爲存儲適配器(Storage Adapter)。

什麼叫存儲適配器呢,也就是 Karst 協議會將不同存儲協議(包括 IPFS, FastDFS,HDFS 等)轉化爲能被 TEE 識別的存儲結構並且持久化在本地。

在 Karst 內部定義了一系列的通用接口,比如存儲轉化器(Storage Transformer,實現這個接口並返回 Karst 規定的結構,就能被 TEE 所量化),Sealer(調用TEE Seal接口和 Unseal 接口進行加密解密存儲,防止女巫和生成攻擊)以及Checker(可被 TEE 抽查的接口)。

這個設計有趣之處在於,無論底層的存儲如何變動,需求如何變動,只要適配了 Karst 協議的 FS,就能夠被量化到 Crust 網絡中。這也使得 Crust 網絡能夠多協議共存,讓存儲協議和量化層解耦是我們認爲正確的方向。

在活動進行到自由問答環節中,由於社區成員提問比較多,我們挑選了一些大家較爲關心的問題,整理出來:

1. 問一個問題,礦工質押的時候,應該既有存儲質押也有作爲驗證人的質押,那麼在懲罰的時候,這兩部分質押是邏輯上分離的還是有關係的?

子琨:是分離的。

關於 GPoS 和 Market 是我們基於 CRU 通證設計的兩款遊戲,遊戲的規則是獨立的,獨立性包括了獎勵,抵押和罰沒,GPoS 獲取區塊獎勵,Market 獲取訂單獎勵。

對於Crust網絡而言,兩個模塊的貢獻度也有所不同,GPoS 保證了 Crust 網絡的基本運行(決定出塊),Market 則支撐了 Crust 網絡去中心化存儲的應用特性。

2.所有的去中心化存儲都必須面對的一個問題,即高波動的幣價與鎖定的存儲費用與存儲質押怎麼協調,假設幣價暴跌,導致礦工質押金已經不值什麼錢了,或者幣價暴漲,導致礦工認爲以前的存儲訂單虧了。就是怎麼用一個有波動的 Token 支付系統,去讓存儲保持穩定?

子琨:嗯,我們會引入穩定幣的機制,目前這套機制設計出來了,但是實現上還有些細節沒有想通,之後成熟後會做分享。生態內的比如 Acala(通過 Parachain),生態外的 USDT 等我們都有考慮。

穩定幣是存儲市場的核心,這套機制我們也在反覆打磨,但是目前還沒有特別成熟,But good question,回答就是持續關注我們。

3. 按 Crust 的計劃,底層只實現了簡單存取之類的接口,而對於可靠性可用性保障會放在上層,這個上層也是由 Crust 開發麼?以及它的保障是由鏈保證,還是一定的中心化因素?比如一個用戶存了四份數據,他希望在丟了兩份以後,能有人幫他重新下訂單給其他人存。

子琨:嗯,兩個問題。

  1. 可靠性可用性。具體來講就是節點加速和糾刪冗餘,這些一定是二層來完善的機制,Crust 會開發一個模版供給社區使用。

  2. 鏈會通過 Market 模塊的訂單狀態記錄 Provider 的服務質量,包括訂單失敗率,連續失敗時間,累計失敗時間。這些 QoS 會在一層就對 Provider 進行 Slash,但二層能做的東西更多(比如歷史的 QoS)。

你剛纔打比方的這套機制是二層。在 Crust 網絡一層只會定義一些元語,訂單狀態就是 QoS 的元語,二層可以疊加這個部分進行復雜的組合,評估出更豐富的 QoS 機制。

4. 存儲節點 Slash 怎麼處理還沒確定吧?比如把懲罰的錢給一個新節點,讓他檢索了繼續存。或者燒掉一部分,還有退給用戶之類的,我看 Filecoin 目前的設計基本沒考慮可靠性。

子琨:Maxwell 1.0 會有一個簡單的 Slashing,文件丟失 5%,會 Slash 掉本訂單 50% 的保證金,10% 會直接罰沒。

但這個參數的話,我們會一直打磨,包括你提到的機制,就是 Slash 的錢是 Burn 還是類似 Storj 的 Graceful Quit 一樣給接盤的節點,會通過鏈上升級更改。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章