“Crust 實(shí)現(xiàn)了去中心化存儲(chǔ)的激勵(lì)層協(xié)議,適配包括 IPFS 在內(nèi)的多種存儲(chǔ)層協(xié)議砰识,并對(duì)應(yīng)用層提供支持柱搜。同時(shí) Crust 的架構(gòu)也有能力對(duì)去中心化計(jì)算層提供支持,構(gòu)建分布式云生態(tài)癣蟋⊥赶酰”
6月 18 日,Crust Show 第 3 期活動(dòng)中疯搅,我們邀請(qǐng)了?Parity?工程師 kai chao老師濒生,與?Crust Network CTO 子琨一起,就 Crust 核心技術(shù)相關(guān)進(jìn)行了硬核的技術(shù)探討幔欧。?本期分享罪治,從 Crust 協(xié)議組的設(shè)計(jì)與技術(shù)實(shí)現(xiàn)、對(duì)于無(wú)縫升級(jí)的設(shè)計(jì)與思考以及 Crust 如何利用 Runtime Interface 擴(kuò)展鏈上密碼庫(kù)琐馆、對(duì)于鏈上定時(shí)器(Scheduler)的運(yùn)用规阀、Crust 鏈上身份綁定的設(shè)計(jì)與實(shí)現(xiàn)等 5 個(gè)方面,子琨和大家進(jìn)行了詳細(xì)的講解瘦麸。由于分享內(nèi)容過(guò)長(zhǎng)谁撼,分為上下兩篇。本篇主要從 Crust 協(xié)議組的設(shè)計(jì)與技術(shù)實(shí)現(xiàn)方面展開(kāi)詳細(xì)的介紹。?以下為 Crust Show 003(上篇)分享整理厉碟。
?
01.?
能具體介紹下 Crust 協(xié)議組 MPoW喊巍、GPoS、Market 以及 Storage 的設(shè)計(jì)和實(shí)現(xiàn)嗎箍鼓?
Crust 協(xié)議組的設(shè)計(jì)是旨在解決 DS(Decentralized Storage崭参,去中心化存儲(chǔ))激勵(lì)層兩個(gè)關(guān)鍵性的問(wèn)題:證明和激勵(lì)。
證明主要指的是款咖,如何將鏈下的存儲(chǔ)狀態(tài)正確的反映在鏈上何暮;而激勵(lì)就是對(duì)存儲(chǔ)節(jié)點(diǎn)的激勵(lì)方案,也就是節(jié)點(diǎn)獲取獎(jiǎng)勵(lì)的方式铐殃。
GPoS 協(xié)議組
?
對(duì)此海洼,Crust 定義了一個(gè)協(xié)議組,分別包括了量化鏈下存儲(chǔ)狀態(tài)的 MPoW 協(xié)議富腊、對(duì)節(jié)點(diǎn)進(jìn)行鏈上區(qū)塊激勵(lì)的 GPoS 協(xié)議坏逢、去中心化(存儲(chǔ)/檢索)市場(chǎng)的 Market 模塊以及適配多種存儲(chǔ)協(xié)議的 Storage 模塊。
TEE 是 MPoW 協(xié)議的核心模塊赘被,為MPoW提供可信有效的鏈下輸入是整。而 MPoW 又為 GPoS 協(xié)議以及 Market 模塊提供初始輸入,所以 MPoW 也是整個(gè)協(xié)議組的基礎(chǔ)民假。
?
具體來(lái)講浮入,MPoW 有三個(gè)核心的功能:
-
TEE 通過(guò)身份綁定,可信認(rèn)證節(jié)點(diǎn)身份(后面會(huì)詳細(xì)講解)
-
TEE 可信量化有意義用戶文件和 SRD(Sealed Random Data羊异,aka. 隨機(jī)數(shù)據(jù)舵盈,用于證明磁盤(pán)容量),并通過(guò)工作量報(bào)告(數(shù)據(jù)塊證明)提交到鏈上
為鏈上的狀態(tài)函數(shù)的轉(zhuǎn)移提供正確的初始輸入(存儲(chǔ)量和文件信息{Merkle Root, File Size})球化;
?
這里多提一句,MPoW 的證明過(guò)程(包括鏈下和鏈上)十分高效:
?
1. 由于 TEE 的提交發(fā)生在本地并且能夠自我驗(yàn)證(SGX 程序的不可篡改性)瓦糟,所以省去了互相驗(yàn)證數(shù)據(jù)塊的網(wǎng)絡(luò)開(kāi)銷以及本機(jī)進(jìn)行零知識(shí)證明的計(jì)算開(kāi)銷筒愚,我們?cè)诓粩嗟膬?yōu)化整個(gè)驗(yàn)證流程。
目前的數(shù)據(jù)表現(xiàn)讓我們十分滿意菩浙,1TB 的數(shù)據(jù)(這里不管是 SRD 還是有意義文件)進(jìn)行全驗(yàn)證的時(shí)間是 18s巢掺,抽查驗(yàn)證并且抽查率為 2%?的情況下,我們的驗(yàn)證過(guò)程只需要 0.36s劲蜻。
?
2. 另外陆淀,鏈上的驗(yàn)證得力于 Rust 高效的 Native 執(zhí)行與 Substrate Runtime Interface 的 Native+Wasm 交互機(jī)制,能夠讓鏈上驗(yàn)證基于 Rust Native 進(jìn)行高效的簽名驗(yàn)證先嬉。
目前測(cè)試的數(shù)據(jù)是轧苫,進(jìn)行 100 次 p256 橢圓曲線的簽名驗(yàn)證(背后是數(shù)據(jù)塊證明的驗(yàn)證)僅僅只需要花費(fèi) 0.016s。
?
GPoS(Guaranteed Proof of Stake疫蔓,擔(dān)保權(quán)益證明)含懊,對(duì)節(jié)點(diǎn)進(jìn)行區(qū)塊激勵(lì)的協(xié)議身冬,這個(gè)協(xié)議的設(shè)計(jì)是從波卡的 NPoS 得到的靈感并結(jié)合我們的系統(tǒng)進(jìn)行的創(chuàng)新。
詳細(xì)概念和介紹大家可以關(guān)注近期已經(jīng)發(fā)布的《Crust Network 經(jīng)濟(jì)白皮書(shū)草案公布》岔乔,這里時(shí)間有限就不展開(kāi)去介紹了酥筝,我們主要來(lái)談一下 GPoS 是如何實(shí)現(xiàn)的。
?
首先雏门,剛才談到 MPoW 作為整個(gè)協(xié)議組的基礎(chǔ)嘿歌,會(huì)設(shè)置一個(gè)鏈上狀態(tài)函數(shù)的初始輸入,這個(gè)初始輸入就是節(jié)點(diǎn)的工作量/存儲(chǔ)量茁影,其包含了該節(jié)點(diǎn)有多少存儲(chǔ)容量宙帝、存儲(chǔ)了多少有意義文件以及每個(gè)有意義文件的大小。
?
而這個(gè)數(shù)據(jù)矩陣會(huì)通過(guò)一個(gè)公式被轉(zhuǎn)化為 GPoS 里面的一個(gè)關(guān)鍵值 StakeLimit呼胚。
在 GPoS 里 Stake Limit 會(huì)被作為節(jié)點(diǎn)可抵押/可被擔(dān)保的額度茄唐,穿插在整個(gè) GPoS的協(xié)議的流轉(zhuǎn)中。
當(dāng)然蝇更,整個(gè) GPoS 的實(shí)現(xiàn)機(jī)制是較為復(fù)雜的沪编,包括了主動(dòng)檢測(cè)、被動(dòng)檢測(cè)年扩、有效票蚁廓、順延擔(dān)保、多次擔(dān)保等機(jī)制厨幻。
這次的技術(shù)分享大概無(wú)法 Cover 掉所有的實(shí)現(xiàn)細(xì)節(jié)相嵌,之后可以再安排一個(gè)技術(shù)分享去講一下 GPoS 所有的細(xì)節(jié)規(guī)則。
?Market?
?
目前 Crust 設(shè)計(jì)并實(shí)現(xiàn)了的版本是存儲(chǔ)市場(chǎng)况脆,檢索市場(chǎng)會(huì)在 Maxwell 2.0 版本上線饭宾,這次技術(shù)分享我們就先聊一下存儲(chǔ)市場(chǎng)的設(shè)計(jì)和實(shí)現(xiàn)。
?
同樣基于 MPoW 給定的初始輸入格了,Market 模塊只關(guān)注節(jié)點(diǎn)提交上來(lái)的有意義文件的 Merkle Root看铆,根據(jù)? Merkle Root 對(duì)應(yīng) Market 存儲(chǔ)訂單信息,從而反映節(jié)點(diǎn)是否有效存儲(chǔ)文件盛末。
?
Market 也會(huì)周期性的檢測(cè) Provider 名下所有有效訂單的文件是否被合理存儲(chǔ)弹惦,一旦檢測(cè)失效,會(huì)對(duì) Provider 的訂單失效率進(jìn)行鏈上記錄悄但,并根據(jù)不同程度的文件丟失進(jìn)行懲罰棠隐。
?
Market 模塊的實(shí)現(xiàn)挑戰(zhàn)在于訂單數(shù)量的巨大,這個(gè)部分我們將采用 Substrate 的 Offchain Worker 來(lái)進(jìn)行訂單記錄檐嚣,并通過(guò) Forkless Upgrade 在 Maxwell 后續(xù)版本進(jìn)行升級(jí)助泽。
?
Storage 這個(gè)部分主要是想聊 Crust 支持的存儲(chǔ)層協(xié)議 Karst,對(duì)于 Karst,我們將其定義為存儲(chǔ)適配器(Storage Adapter)报咳。
?
什么叫存儲(chǔ)適配器呢侠讯,也就是 Karst 協(xié)議會(huì)將不同存儲(chǔ)協(xié)議(包括 IPFS, FastDFS暑刃,HDFS 等)轉(zhuǎn)化為能被 TEE 識(shí)別的存儲(chǔ)結(jié)構(gòu)并且持久化在本地厢漩。
?
在 Karst 內(nèi)部定義了一系列的通用接口,比如存儲(chǔ)轉(zhuǎn)化器(Storage Transformer岩臣,實(shí)現(xiàn)這個(gè)接口并返回 Karst 規(guī)定的結(jié)構(gòu)溜嗜,就能被 TEE 所量化),Sealer(調(diào)用TEE Seal接口和 Unseal 接口進(jìn)行加密解密存儲(chǔ)架谎,防止女巫和生成攻擊)以及Checker(可被 TEE 抽查的接口)炸宵。
?
這個(gè)設(shè)計(jì)有趣之處在于,無(wú)論底層的存儲(chǔ)如何變動(dòng)谷扣,需求如何變動(dòng)土全,只要適配了 Karst 協(xié)議的 FS,就能夠被量化到 Crust 網(wǎng)絡(luò)中会涎。這也使得 Crust 網(wǎng)絡(luò)能夠多協(xié)議共存裹匙,讓存儲(chǔ)協(xié)議和量化層解耦是我們認(rèn)為正確的方向。
▼ ?▼??▼ ?▼??▼???▼??▼ ?▼??▼
在活動(dòng)進(jìn)行到自由問(wèn)答環(huán)節(jié)中末秃,由于社區(qū)成員提問(wèn)比較多概页,我們挑選了一些大家較為關(guān)心的問(wèn)題,整理出來(lái):
1. 問(wèn)一個(gè)問(wèn)題练慕,礦工質(zhì)押的時(shí)候惰匙,應(yīng)該既有存儲(chǔ)質(zhì)押也有作為驗(yàn)證人的質(zhì)押,那么在懲罰的時(shí)候铃将,這兩部分質(zhì)押是邏輯上分離的還是有關(guān)系的项鬼?
子琨:是分離的。
關(guān)于 GPoS 和 Market 是我們基于 CRU 通證設(shè)計(jì)的兩款游戲劲阎,游戲的規(guī)則是獨(dú)立的秃臣,獨(dú)立性包括了獎(jiǎng)勵(lì),抵押和罰沒(méi)哪工,GPoS 獲取區(qū)塊獎(jiǎng)勵(lì),Market 獲取訂單獎(jiǎng)勵(lì)弧哎。
對(duì)于Crust網(wǎng)絡(luò)而言雁比,兩個(gè)模塊的貢獻(xiàn)度也有所不同,GPoS 保證了 Crust 網(wǎng)絡(luò)的基本運(yùn)行(決定出塊)撤嫩,Market 則支撐了 Crust 網(wǎng)絡(luò)去中心化存儲(chǔ)的應(yīng)用特性偎捎。
2.所有的去中心化存儲(chǔ)都必須面對(duì)的一個(gè)問(wèn)題,即高波動(dòng)的幣價(jià)與鎖定的存儲(chǔ)費(fèi)用與存儲(chǔ)質(zhì)押怎么協(xié)調(diào),假設(shè)幣價(jià)暴跌茴她,導(dǎo)致礦工質(zhì)押金已經(jīng)不值什么錢了寻拂,或者幣價(jià)暴漲,導(dǎo)致礦工認(rèn)為以前的存儲(chǔ)訂單虧了丈牢。就是怎么用一個(gè)有波動(dòng)的 Token 支付系統(tǒng)祭钉,去讓存儲(chǔ)保持穩(wěn)定?
子琨:嗯己沛,我們會(huì)引入穩(wěn)定幣的機(jī)制慌核,目前這套機(jī)制設(shè)計(jì)出來(lái)了,但是實(shí)現(xiàn)上還有些細(xì)節(jié)沒(méi)有想通申尼,之后成熟后會(huì)做分享垮卓。生態(tài)內(nèi)的比如 Acala(通過(guò) Parachain),生態(tài)外的 USDT 等我們都有考慮师幕。
穩(wěn)定幣是存儲(chǔ)市場(chǎng)的核心粟按,這套機(jī)制我們也在反復(fù)打磨,但是目前還沒(méi)有特別成熟霹粥,But good question灭将,回答就是持續(xù)關(guān)注我們。
3. 按 Crust 的計(jì)劃蒙挑,底層只實(shí)現(xiàn)了簡(jiǎn)單存取之類的接口宗侦,而對(duì)于可靠性可用性保障會(huì)放在上層,這個(gè)上層也是由 Crust 開(kāi)發(fā)么忆蚀?以及它的保障是由鏈保證矾利,還是一定的中心化因素?比如一個(gè)用戶存了四份數(shù)據(jù)馋袜,他希望在丟了兩份以后男旗,能有人幫他重新下訂單給其他人存。
子琨:嗯欣鳖,兩個(gè)問(wèn)題察皇。
1.?可靠性可用性。具體來(lái)講就是節(jié)點(diǎn)加速和糾刪冗余泽台,這些一定是二層來(lái)完善的機(jī)制什荣,Crust 會(huì)開(kāi)發(fā)一個(gè)模版供給社區(qū)使用。
2.?鏈會(huì)通過(guò) Market 模塊的訂單狀態(tài)記錄 Provider 的服務(wù)質(zhì)量怀酷,包括訂單失敗率稻爬,連續(xù)失敗時(shí)間,累計(jì)失敗時(shí)間蜕依。這些 QoS 會(huì)在一層就對(duì) Provider 進(jìn)行 Slash桅锄,但二層能做的東西更多(比如歷史的 QoS)琉雳。
你剛才打比方的這套機(jī)制是二層。在 Crust 網(wǎng)絡(luò)一層只會(huì)定義一些元語(yǔ)友瘤,訂單狀態(tài)就是 QoS 的元語(yǔ)翠肘,二層可以疊加這個(gè)部分進(jìn)行復(fù)雜的組合,評(píng)估出更豐富的 QoS 機(jī)制辫秧。
4. 存儲(chǔ)節(jié)點(diǎn) Slash 怎么處理還沒(méi)確定吧束倍?比如把懲罰的錢給一個(gè)新節(jié)點(diǎn),讓他檢索了繼續(xù)存茶没〖∮模或者燒掉一部分,還有退給用戶之類的抓半,我看 Filecoin 目前的設(shè)計(jì)基本沒(méi)考慮可靠性喂急。
子琨:Maxwell 1.0 會(huì)有一個(gè)簡(jiǎn)單的 Slashing,文件丟失 5%笛求,會(huì) Slash 掉本訂單 50% 的保證金廊移,10% 會(huì)直接罰沒(méi)。
但這個(gè)參數(shù)的話探入,我們會(huì)一直打磨狡孔,包括你提到的機(jī)制,就是 Slash 的錢是 Burn 還是類似 Storj 的 Graceful Quit 一樣給接盤(pán)的節(jié)點(diǎn)蜂嗽,會(huì)通過(guò)鏈上升級(jí)更改苗膝。
往期精彩:
/Crust 技術(shù)白皮書(shū) v1.9.3 版
/Crust Network 經(jīng)濟(jì)白皮書(shū)草案公布
/Crust 經(jīng)濟(jì)白皮書(shū)第 1 期 · 概述
/Crust 經(jīng)濟(jì)白皮書(shū)第 2?期 ·?參與方
/去中心化存儲(chǔ)或重構(gòu)邊緣存儲(chǔ)技術(shù)
更多內(nèi)容請(qǐng)點(diǎn)擊「閱讀原文」了解。