storj 白皮書翻譯與解析

簡介

storj 是在 Kademlia 上構(gòu)建的。

加密與分片

文件應(yīng)該在分片前在客戶端被加密。
數(shù)據(jù)擁有者擁有加密的密鑰祟蚀。
碎片大小是一個(gè)可設(shè)置的參數(shù)敬锐。

Proofs of Retrievability

數(shù)據(jù)完整性通過proof of retrievability維持

可獲取證明,確保分片被正確存儲喇勋。

通過 challenge-response 交互,也稱為 audit, 或 heartbeat, 來驗(yàn)證文件是否可獲取。

data owner 隨機(jī)生成 n 個(gè) challenge salts 列表, s0, s1, ...sn?1, 并存儲 salts 列表.

pi 是 pre-leaf
pi = H(si + d)

li 是 merkle 樹的葉子
li = H(H(si + d))

如果葉節(jié)點(diǎn)的個(gè)數(shù)不是2的冪次揩页,增加空字符串的 hash 作為新葉子,知道葉節(jié)點(diǎn)的個(gè)數(shù)是2的冪次烹俗。

data owner 存儲 challenges(salts) 列表, merkle root, 和 merkle 樹的高度爆侣,然后把 merkle 樹的部分葉節(jié)點(diǎn)發(fā)給 farmer萍程。
farmer 存儲部分 merkle 葉節(jié)點(diǎn)和 shard。

data owner 會周期性地挑選出一個(gè) challenge(salt)累提,并發(fā)送給 farmer尘喝。challenge 不可以被重用。

data owner 用 challenge(salt)斋陪、shard朽褪、merkle 樹葉列表,生成 merkle proof 并發(fā)送給 data owner无虚。

merkle proof 總是包含 log2(l) + 1 個(gè) hashes缔赠,data owner 使用 merkle root 和 merkle 樹高來驗(yàn)證 merkle proof 的有效性。

局部 audit

為了減小 IO 負(fù)擔(dān)而采取的一種方案友题。

發(fā)出 Audits

Storj 擴(kuò)展 Kademlia message嗤堰,增加來一個(gè)新消息類型: AUDIT.

數(shù)據(jù)存取流程

該合同系統(tǒng)擴(kuò)展 Kademlia message,增加來四個(gè)新消息類型: OFFER, CONSIGN, MIRROR, and RETRIEVE.

存文件

取文件

備份文件

付費(fèi)

使用 Strojcoin度宦,使用微支付管道踢匣。

在 audit 時(shí)支付費(fèi)用,最小化信任需求戈抄。

小額支付离唬,價(jià)格小于 $0.000001 per audit.

Quasar

p2p publish/subscribe system.

擴(kuò)展 Kademlia, 增加 3 個(gè)新消息類型: SUBSCRIBE、UPDATE划鸽、PUBLISH输莺。

每個(gè)節(jié)點(diǎn)保存 topic,以及訂閱那些 topic 的 節(jié)點(diǎn)裸诽,這些節(jié)點(diǎn)距離本節(jié)點(diǎn)最遠(yuǎn)距離為 3.

獲取其他節(jié)點(diǎn)的訂閱列表

傳播本節(jié)點(diǎn)的新訂閱

先 SUBSCRIBE 是為了了解鄰居的狀態(tài)嫂用,可能是為了做一些策略。

發(fā)布

PUBLISH 消息包含一個(gè) TTL 參數(shù)丈冬,防止無限傳播嘱函。
為了防止節(jié)點(diǎn)再次收到同樣的 PUBLISH 信息,節(jié)點(diǎn)收到 PUBLISH 后埂蕊,會將自己的 node id 加到過濾列表再轉(zhuǎn)發(fā)实夹,轉(zhuǎn)發(fā)時(shí)不會發(fā)送給過濾列表中存在的節(jié)點(diǎn)。

冗余方案

簡單副本策略

文件shard 存多個(gè)副本粒梦,shard副本 越多亮航,可靠性越高。

K-of-M 丟失文件還原

丟失文件還原算法講一個(gè)文件分成 k 個(gè) shard匀们,并創(chuàng)建 m 個(gè)等價(jià) shard缴淋,共 k + m = n 個(gè) shard。
n 個(gè) shard 中的任意 k 個(gè) shard,可以重建文件或任意一個(gè)丟失的 shard重抖。
data owner 可以容忍部分 shard 丟失露氮。

比如 20-of-40 組合,可以容忍 5 個(gè) shard丟失钟沛,因?yàn)樵賮G失 16 個(gè) shard 的概率很低畔规。

KFS

本地文件存儲,使用 LevelDB恨统。
LevelDB存儲超過100GB叁扫,會影響性能,所以需要多個(gè) LevelDB 實(shí)例畜埋。

基本原理

多個(gè) LevelDB實(shí)例緩解了操作壓力莫绣,提升每個(gè)實(shí)例的操作速度。
多個(gè) LevelDB悠鞍,每個(gè) LevelDB 存的范圍小对室,鎖的范圍更小,并發(fā)數(shù)更大咖祭,阻塞時(shí)間也更短掩宜。

S-Buckets 與路由

KFS 存儲分片在 B 個(gè) 大小限制的 LevelDB 實(shí)例,稱為 S-Buckets.
S-Buckets 存儲最大的字節(jié)大小為 S么翰。
因此 KFS 最大存儲大小為 S*B bytes牺汤。
Stroj 目前使用 S = 32 GB,B = 256 個(gè)實(shí)例硬鞍。總大小為 8 TB戴已。

KFS 有一個(gè)隨機(jī)的 R bits id固该,要求 R >= log2(B)。
即 256 個(gè)實(shí)例糖儡,至少需要 8 bit伐坏。

1、 g = log2(B)
2握联、 h 為 KFS id 的前 g bits
3桦沉、 i 為 shard hash 的前 g bits
4、 n = h 異或 i
5金闽、 存儲 shard 在第 n 個(gè)LevelDB 實(shí)例

如果一個(gè) KFS 實(shí)例滿了纯露,第二個(gè)實(shí)例會被創(chuàng)建。

存儲細(xì)節(jié)

數(shù)據(jù)被分塊存儲代芜,每塊 C 字節(jié)埠褪。默認(rèn) C = 128 KB。
每個(gè)塊的 key 為 數(shù)據(jù)全部內(nèi)容的 hash + “ ” + 數(shù)字索引
這是為了確保 kv對 較小,同時(shí)能夠從 S-Bucket 中順序讀寫钞速。
數(shù)字索引字符長度為:l = log10(LevelDB存儲容量/塊大小)
比如 l = 6,則第 3753 個(gè)塊的數(shù)字索引為 ‘003753’

NAT 穿透與反向 HTTP 打開通道

Storj 擴(kuò)展 Kademlia贷掖,增加 3 個(gè)額外類型:PROBE、FIND_TUNNEL渴语、OPEN_TUNNEL苹威。

檢查自己是否是公網(wǎng)地址

本節(jié)點(diǎn)不是公網(wǎng)IP,反向打開通道

Bridge

Bridge 是管理節(jié)點(diǎn)驾凶。負(fù)責(zé)文件存取協(xié)商牙甫、校驗(yàn)文件可獲取、支付狭郑、文件狀態(tài)腹暖。被設(shè)計(jì)為只存儲云數(shù)據(jù)。

Client 負(fù)責(zé)加密翰萨、文件預(yù)處理脏答、文件密鑰管理。

Bridge 必須是可靠的亩鬼,Client可以不可靠殖告。

上傳操作

  1. Client 收集并預(yù)處理。
  2. Client 通知 Bridge 等待上傳數(shù)據(jù)雳锋。
  3. Bridge 與網(wǎng)絡(luò)節(jié)點(diǎn)協(xié)商(上傳)
  4. Bridge 返回節(jié)點(diǎn)和 token 列表給 Client
  5. Client 根據(jù)節(jié)點(diǎn)IP 和 token 上傳數(shù)據(jù)
  6. Client 把 AUDIT 信息給 Bridge黄绩,委托管理
  7. Bridge 驗(yàn)證文件可獲取
  8. Bridge 承擔(dān) AUDIT、支付玷过、管理文件狀態(tài)的責(zé)任
  9. Bridge 通過 API 顯示文件的 metadata

下載操作

  1. Client 傳遞標(biāo)記文件的標(biāo)識符爽丹,并請求文件
  2. Bridge 校驗(yàn)請求,提供 farmer IP + token 的列表
  3. Client 根據(jù) IP 和 token 取得文件
  4. 文件在客戶端組裝并解碼

參考

stroj 白皮書

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辛蚊,一起剝皮案震驚了整個(gè)濱河市粤蝎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袋马,老刑警劉巖初澎,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異虑凛,居然都是意外死亡碑宴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進(jìn)店門桑谍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來延柠,“玉大人,你說我怎么就攤上這事锣披〔蹲校” “怎么了匕积?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長榜跌。 經(jīng)常有香客問我闪唆,道長,這世上最難降的妖魔是什么钓葫? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任悄蕾,我火速辦了婚禮,結(jié)果婚禮上础浮,老公的妹妹穿的比我還像新娘帆调。我一直安慰自己,他們只是感情好豆同,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布番刊。 她就那樣靜靜地躺著,像睡著了一般影锈。 火紅的嫁衣襯著肌膚如雪芹务。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天鸭廷,我揣著相機(jī)與錄音枣抱,去河邊找鬼。 笑死辆床,一個(gè)胖子當(dāng)著我的面吹牛佳晶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播讼载,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼轿秧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咨堤?” 一聲冷哼從身側(cè)響起菇篡,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吱型,沒想到半個(gè)月后逸贾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陨仅,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡津滞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灼伤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片触徐。...
    茶點(diǎn)故事閱讀 39,754評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狐赡,靈堂內(nèi)的尸體忽然破棺而出撞鹉,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布鸟雏,位于F島的核電站享郊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏孝鹊。R本人自食惡果不足惜炊琉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望又活。 院中可真熱鬧苔咪,春花似錦、人聲如沸柳骄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舔清。三九已至,卻和暖如春可柿,著一層夾襖步出監(jiān)牢的瞬間鸠踪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工复斥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留营密,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓目锭,卻偏偏與公主長得像评汰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子痢虹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,929評論 2 89
  • 摘要 星際文件系統(tǒng)是一種點(diǎn)對點(diǎn)的分布式文件系統(tǒng)被去, 旨在連接所有有相同的文件系統(tǒng)的計(jì)算機(jī)設(shè)備。在某些方面奖唯, IPFS...
    陌上塵飛123閱讀 2,866評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理惨缆,服務(wù)發(fā)現(xiàn),斷路器丰捷,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時(shí)坯墨,會觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,310評論 0 9
  • 面試的時(shí)候被問道怎么取消一個(gè)事件的默認(rèn)行為病往,當(dāng)然是用event.preventDefault()了捣染。 但是怎么屏蔽...
    站著瞌睡閱讀 4,468評論 0 0