最近看了很多區(qū)塊鏈上的去中心化存儲(chǔ)方案,各種方法不一而足,但是仔細(xì)看了各種方法,實(shí)話說(shuō)我的個(gè)人結(jié)論是“基于區(qū)塊鏈的去中心化存儲(chǔ)終將失敗”。
存儲(chǔ)的第一要素是可靠性而不是價(jià)格
在存儲(chǔ)市場(chǎng),可靠性有時(shí)候也稱之為持久性,主要是指在文件存儲(chǔ)以后,有多大可能性文件被無(wú)損地獲取回來(lái)。
這個(gè)道理是不辯自明的,沒(méi)有人存儲(chǔ)數(shù)據(jù)是可以不考慮可靠性的,但是在大多數(shù)去中心化存儲(chǔ)方案的白皮書(shū)中卻是沒(méi)有可靠性指標(biāo)的,大多數(shù)都是通過(guò)含糊其辭的我們?cè)谌W(wǎng)備份來(lái)保證文件不被丟失。這夠了么?請(qǐng)移步 https://aws.amazon.com/cn/s3/ 看看商業(yè)的存儲(chǔ)服務(wù)是怎么定義文件持久性的。
從系統(tǒng)設(shè)計(jì)角度來(lái)說(shuō),可靠性設(shè)計(jì)是設(shè)計(jì)里面難度最大的工作。在一年 365 天的每一天都能夠正確地讀取數(shù)據(jù),但是再最后一分鐘數(shù)據(jù)沒(méi)有讀取到數(shù)據(jù),那么可靠性僅是 99.98%,這個(gè)數(shù)字看起來(lái)很高,但是從可靠性角度來(lái)說(shuō)是不夠的。原因很簡(jiǎn)單,從最終用戶角度來(lái)說(shuō),最后一分鐘獲取數(shù)據(jù)的失敗,實(shí)際上意味著整年工作的失敗,我存一年這個(gè)數(shù)據(jù),也許僅是為了讀這么一次,你這次給不了我數(shù)據(jù),那你這一年的存儲(chǔ)是第一天就丟掉數(shù)據(jù)了,還是在我獲取的那一分鐘前一秒丟掉數(shù)據(jù),對(duì)我來(lái)說(shuō)沒(méi)有任何區(qū)別。
我們自己電腦里面使用的硬盤提供的存儲(chǔ),某種意義上也是一個(gè)相對(duì)低可靠性的存儲(chǔ)服務(wù),大多數(shù)人都能相信把數(shù)據(jù)、文件存到硬盤上,在大多數(shù)情況下數(shù)據(jù)并不會(huì)丟失,稍微懂點(diǎn)技術(shù)的明白建一個(gè) Raid0,這個(gè)文件丟失的可能性已經(jīng)是微乎其微了;比較去中心的存儲(chǔ)服務(wù),也許價(jià)格上是比傳統(tǒng)云服務(wù)公司提供的存儲(chǔ)服務(wù)便宜很多,但是如果和個(gè)人購(gòu)買一個(gè)硬盤甚至構(gòu)建一個(gè) Raid0 對(duì)比,這個(gè)價(jià)格優(yōu)勢(shì)就不存在了。
去中心化存儲(chǔ)的可靠性問(wèn)題比想象的大
如前文所說(shuō),去中心化存儲(chǔ)方案的白皮書(shū)中是沒(méi)有提供可靠性指標(biāo)數(shù)據(jù)的,在我看來(lái),很悲哀的現(xiàn)實(shí)是所有的去中心化存儲(chǔ)方案因?yàn)樗姆植际绞菬o(wú)法給出一個(gè)可靠性指標(biāo)數(shù)據(jù),這個(gè)在傳統(tǒng)企業(yè)存儲(chǔ)市場(chǎng)業(yè)務(wù)上已經(jīng)是個(gè)很大的劣勢(shì),但是也許有人會(huì)認(rèn)為雖然他們給不出具體的可靠性數(shù)據(jù),實(shí)際上可靠性還是很高的,因?yàn)槿ブ行幕鎯?chǔ)會(huì)通過(guò)全網(wǎng)的備份,將同一個(gè)文件放到不同的節(jié)點(diǎn)上來(lái)提高數(shù)據(jù)的可靠性。
這個(gè)聽(tīng)起來(lái)沒(méi)錯(cuò),但是如果我們深究去中心化存儲(chǔ)的實(shí)現(xiàn)方式,我們會(huì)發(fā)現(xiàn)其實(shí)不然,這主要在于去中心化存儲(chǔ)在進(jìn)行文件存儲(chǔ)時(shí)的切塊存儲(chǔ)模式,為了保證文件的安全性,也就是文件不能被礦工訪問(wèn),主流的去中心化存儲(chǔ)方案都會(huì)對(duì)文件進(jìn)行切塊,然后將不同的塊存儲(chǔ)到不同的節(jié)點(diǎn)上去,這樣所有的存儲(chǔ)節(jié)點(diǎn)都不擁有這個(gè)文件的全部塊,文件屬主就不用擔(dān)心文件本身被非法獲取。
這樣的存儲(chǔ)模型確實(shí)能夠解決文件安全性的問(wèn)題,但是反過(guò)來(lái)卻造成了文件存儲(chǔ)可靠性的進(jìn)一步下降,原因很簡(jiǎn)單,如果一個(gè)文件被拆分成了 100 個(gè)塊,這 100 個(gè)塊會(huì)被分散存儲(chǔ),那么只要有任何一個(gè)塊失效,這個(gè)文件本身也就失效了,分塊操作大大降低了整體文件的可靠性,在 100 個(gè)塊的情況下,失效率實(shí)際上是提高了100倍。
礦工或者說(shuō)節(jié)點(diǎn)的行為并不能改變什么
實(shí)際上大多數(shù)去中心化存儲(chǔ)方案也都關(guān)注了可靠性的問(wèn)題,提出了一些方法來(lái)約束礦工的行為,比如 FileCoin 提出了 Proof-Of-Spacetime , Proof-Of-Replciation 一堆復(fù)雜地概念,寄希望于用這些指標(biāo)來(lái)經(jīng)濟(jì)驅(qū)動(dòng)礦工可靠地保存文件,但是在我看來(lái)這些方法某種意義上是所謂地緣木求魚(yú)。
首先我認(rèn)為,在大多數(shù)情況下,只要存在一定地經(jīng)濟(jì)激勵(lì),節(jié)點(diǎn)管理人的行為并不會(huì)是造成文件丟失地主要因素,某種意義上他們事實(shí)上不會(huì)有興趣去管理這些存儲(chǔ)地碎塊文件。對(duì)于去中心化存儲(chǔ)的節(jié)點(diǎn)來(lái)說(shuō),所有的儲(chǔ)存在他電腦上的文件都是毫無(wú)意義的二進(jìn)制字節(jié),而維持這些字節(jié)的存在是會(huì)給他們帶來(lái)一定的收入,正常情況下他們不會(huì)有什么欲望去刪掉這些東西。因此通過(guò)進(jìn)一步強(qiáng)化經(jīng)濟(jì)激勵(lì),來(lái)保證他們不去刪除這些對(duì)他們無(wú)意義的字節(jié)流,意義并不大。
真正影響文件存儲(chǔ)可靠性的,主要來(lái)自于兩個(gè)因素:
- 硬盤的可靠性。按照我在網(wǎng)上搜到的硬盤可靠性分析文章,一般性機(jī)械硬盤的年失效性中位數(shù)大致是 3%,那么換言之每 30 塊硬盤在運(yùn)行一年以后會(huì)壞 1 塊,不精確的概率計(jì)算,如果有 200 塊硬盤,一年運(yùn)行下來(lái)有 6-7 塊損壞,那么假設(shè)一個(gè) 200 個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò),每個(gè)文件被拆分成 100 塊,每個(gè)塊在全網(wǎng)分別形成2個(gè)復(fù)制,那么 1 年以后正常可以期望 3-4 個(gè)塊的損壞,能夠拿回完整文件的可能性微乎其微。
- 節(jié)點(diǎn)管理人對(duì)于節(jié)點(diǎn)的管理水平:傳統(tǒng)的 IT 技術(shù)上,針對(duì)這種硬盤可靠性實(shí)際上是有整套的解決方案,RAID 系列就是專門定義了解決這種問(wèn)題的,比如簡(jiǎn)單搭個(gè) Raid0,就可以將出錯(cuò)可能性降低到 3% 的平方,也就是說(shuō) 0.09%,但是作為去中心化存儲(chǔ)節(jié)點(diǎn)的提供者,他們架設(shè)節(jié)點(diǎn)的目的是本來(lái)就是用簡(jiǎn)單的閑置硬盤空間來(lái)?yè)Q取一定的經(jīng)濟(jì)激勵(lì),提供的容量空間直接影響他們的收益。所以如果有構(gòu)建 Raid0 的兩塊硬盤,肯定是將兩塊硬盤分別使用,而不會(huì)是構(gòu)建 低容量的Raid0 陣列,而且如果希望擁有大量的去中心化存儲(chǔ)的節(jié)點(diǎn),那么客觀上能夠組建 Raid 陣列的節(jié)點(diǎn)管理人只是少數(shù)。
復(fù)雜的計(jì)費(fèi)模型是去中心化存儲(chǔ)的最后挽歌
計(jì)費(fèi)模型的復(fù)雜性也是去中心化存儲(chǔ)方案的一個(gè)重大問(wèn)題,這實(shí)際上是來(lái)源于存儲(chǔ)需求人和存儲(chǔ)提供者對(duì)于存儲(chǔ)需求理解的不一致,而作為去中心化存儲(chǔ)方案必須通過(guò)技術(shù)來(lái)彌合這個(gè)不一致。讓我們看下雙方是怎么看待這個(gè)存儲(chǔ)需求:
存儲(chǔ)需求人的需求:我今天把這個(gè)文件存到你這,也許明年才要用一次,我明年用的時(shí)候你將這個(gè)文件完整地提供給我,我就付整年的錢,否則,我希望你交罰款。
存儲(chǔ)提供者的需求:我同意你將這個(gè)文件存在我的本地硬盤上,每存一段時(shí)間,你就給我錢,如果你不付錢,我就希望把這個(gè)文件刪了把空間騰出來(lái)給其它愿意付費(fèi)的文件。
這樣的計(jì)費(fèi)模型實(shí)際上是很復(fù)雜的,如果再加上文件本身的分塊操作,情況會(huì)變成存儲(chǔ)需求人愿意付款的前提是所有的存儲(chǔ)提供者都正確地返回了所要求存儲(chǔ)的文件塊,想象一下 100 個(gè)塊只返回了 99 個(gè)塊的情況,因?yàn)檫@ 100 個(gè)塊的存儲(chǔ)服務(wù)來(lái)源于完全不同的經(jīng)濟(jì)實(shí)體,達(dá)成這個(gè)共識(shí)的復(fù)雜度真不是程序能夠輕易完成的,一個(gè)簡(jiǎn)單的規(guī)則是能完成分配,但勢(shì)必傷害到其中某一方,然后造成這一方的離開(kāi)。當(dāng)雙方需求都是合理的情況下,傷害任一方都不合理。
用戶畫(huà)像的缺失也是去中心化存儲(chǔ)的問(wèn)題之一
這個(gè)就不展開(kāi)講了,簡(jiǎn)單說(shuō)個(gè)結(jié)論,是這些去中心化存儲(chǔ)方案根本沒(méi)說(shuō)清楚或者說(shuō)沒(méi)去想誰(shuí)會(huì)用他的去中心化存儲(chǔ)。
隨便拋轉(zhuǎn),還是希望拋磚引玉,大家給點(diǎn)指正,幫我理解清楚一下這繁雜的方案背后的東西。
來(lái)自:
https://ethfans.org/posts/decentralized-storage-will-fail