一菱农、從HTTP到IPFS
我們平時(shí)上網(wǎng)時(shí),最熟悉的莫過(guò)于網(wǎng)址里的“http://”字樣柿估,其實(shí)HTTP是萬(wàn)維網(wǎng) (WWW: World Wide Web)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議循未。協(xié)議全稱(chēng)是Hyper Text Transfer Protocol,即超文本傳輸協(xié)議秫舌。
萬(wàn)維網(wǎng)如何利用HTTP工作呢的妖?這又涉及到TCP/IP通信協(xié)議。簡(jiǎn)單來(lái)說(shuō)足陨,假設(shè)用戶(hù)A在電腦上操作將文件上傳至瀏覽器嫂粟,而用戶(hù)B需要從瀏覽器下載這個(gè)文件,那么這之間會(huì)經(jīng)歷一個(gè)過(guò)程墨缘。首先TCP程序會(huì)把A要發(fā)送的文件分解成很多數(shù)據(jù)星虹,然后壓縮成多個(gè)壓縮包零抬。這些壓縮包又統(tǒng)統(tǒng)被裝進(jìn)一個(gè)IP里通過(guò)URL[ URL, 全稱(chēng)是Uniform Resource Locator, 中文叫統(tǒng)一資源定位符,是互聯(lián)網(wǎng)上用來(lái)標(biāo)識(shí)某一處資源的地址宽涌。向HTTP服務(wù)端即WEB服務(wù)器發(fā)送請(qǐng)求媚值。Web服務(wù)器根據(jù)接收到的請(qǐng)求后,向客戶(hù)端發(fā)送響應(yīng)信息护糖,于是A的文件上傳成功褥芒。
而用戶(hù)B下載這個(gè)文件時(shí),需要輸入IP地址或者域名嫡良,好讓電腦知道去哪里找到對(duì)應(yīng)信息(基于位置的尋址Location based addressing)锰扶。之后電腦上會(huì)向WEB服務(wù)器發(fā)送請(qǐng)求,TCP會(huì)將發(fā)下載的壓縮后的數(shù)據(jù)按序還原寝受。如果接收TCP發(fā)現(xiàn)部分文件受損坷牛,會(huì)請(qǐng)求再發(fā)送一次。這樣的話(huà)很澄,就會(huì)有以下一些問(wèn)題:
1)在互聯(lián)網(wǎng)中京闰,所有數(shù)據(jù)都會(huì)被存儲(chǔ)在一個(gè)中心服務(wù)器上。無(wú)論用戶(hù)是上傳/下載文件或者是瀏覽網(wǎng)頁(yè)甩苛,都需要一次一次從服務(wù)器上獲取資料蹂楣。一旦服務(wù)器出現(xiàn)故障、被限制或是被攻擊讯蒲,就會(huì)出現(xiàn)文件丟失或者網(wǎng)頁(yè)無(wú)法打開(kāi)的情況(錯(cuò)誤404)痊土。
2)?基于位置的尋址方式也存在不確定性。比如墨林,一旦IP被刪赁酝,或者服務(wù)器關(guān)閉,那么用戶(hù)將無(wú)法下載該文件旭等。
3)?如果這個(gè)文件是很多人都需要的酌呆,那么每個(gè)人都得去下載才能使用,造成很大的存儲(chǔ)空間浪費(fèi)問(wèn)題搔耕。
所以互聯(lián)網(wǎng)雖然是四通八達(dá)又涵蓋廣泛的工具隙袁,但是也不可避免的有其局限性。
IPFS在構(gòu)建信息交換的橋梁這一點(diǎn)上度迂,與互聯(lián)網(wǎng)很相像藤乙,不同的是IPFS是去中心化的。也就是說(shuō)IPFS沒(méi)有一個(gè)中心服務(wù)器惭墓,所以不存在信息丟失或者被篡改的問(wèn)題坛梁。并且IPFS可以實(shí)現(xiàn)文件共享,從而節(jié)省存儲(chǔ)空間腊凶。
二划咐、IPFS的極簡(jiǎn)主義
2014年5月拴念,墨西哥小哥Juan Benet與他的幾個(gè)斯坦福大學(xué)同學(xué)一起發(fā)明了IPFS。在創(chuàng)辦IPFS之前褐缠,Juan Benet是典型的國(guó)外常春藤學(xué)生極客政鼠,有一個(gè)開(kāi)掛般的人生。他是斯坦福大學(xué)的本科和碩士畢業(yè)队魏,在斯坦福讀碩士的期間就參與創(chuàng)立了Loki studios公般,擔(dān)任聯(lián)合創(chuàng)始人和CTO,這是一家手游公司胡桨,后來(lái)被雅虎收購(gòu)官帘。2011年入駐斯坦福學(xué)生創(chuàng)業(yè)孵化中心StartX EIR,2012年昧谊,畢業(yè)后創(chuàng)辦了Athena刽虹,這是一個(gè)做了一年多的時(shí)間后,于2014年5月份創(chuàng)辦Protocal Labs呢诬。
Protocal Labs剛以創(chuàng)立就得以加入美國(guó)硅谷頂級(jí)孵化器Y-Combinator涌哲,IPFS是他們做的第一個(gè)產(chǎn)品。Protocol Labs在創(chuàng)建IPFS的時(shí)候給它取名為“InterPlanetary File System(星際文件傳輸)”也是有深刻含義的尚镰。Protocol Labs希望構(gòu)建一個(gè)點(diǎn)對(duì)點(diǎn)的分布式文件系統(tǒng)阀圾,通過(guò)底層協(xié)議,讓全世界所有人都能夠輕松從IPFS系統(tǒng)上提取文件钓猬,且不受防火墻的影響稍刀。甚至如果科技發(fā)展到一定程度,需要進(jìn)行星球與星球信息傳輸時(shí)敞曹,IPFS也可以提供快速存儲(chǔ)文件的服務(wù)。
1.存儲(chǔ)
在IPFS中综膀,信息可以存儲(chǔ)進(jìn)IPFS系統(tǒng)中的塊(block)里澳迫,這些塊可以存儲(chǔ)至多256kb的數(shù)據(jù),它們還可以鏈接其他IPFS塊剧劝。也就是說(shuō)橄登,存儲(chǔ)小于256kb的文件時(shí),只需將這個(gè)文件放進(jìn)一個(gè)塊內(nèi)就可以了讥此。而大于256kb的文件會(huì)被分成多個(gè)256kb然后放進(jìn)塊中拢锹,之后IPFS將創(chuàng)建一個(gè)空塊,該塊將鏈接到文件的所有其他部分萄喳。這個(gè)空塊就類(lèi)似于一個(gè)大信封卒稳,里面會(huì)涵蓋整個(gè)文件的所有部分。
系統(tǒng)會(huì)給同一個(gè)文件的每一個(gè)塊計(jì)算一次哈希值a他巨,所有塊的哈希值a計(jì)算完畢之后充坑,會(huì)將所有的哈希值a拼湊成一個(gè)數(shù)組b减江,再計(jì)算一次哈希值,從而得到最終的哈希值c捻爷。最后把最終的哈希值c和原文件捆綁起來(lái)辈灼,組成一個(gè)對(duì)象,從而形成一個(gè)索引結(jié)構(gòu)d也榄。把塊和最終的索引結(jié)構(gòu)d上傳至IPFS節(jié)點(diǎn)巡莹,文件便同步到網(wǎng)絡(luò)了。
此外甜紫,還有一種小于1kb的小文件榕莺,如果這些小文件也單獨(dú)放進(jìn)一個(gè)塊里的話(huà),也會(huì)造成一定的浪費(fèi)棵介。于是钉鸯,IPFS把小于1kb的數(shù)據(jù)內(nèi)容直接和哈希索引放在一起上傳給IPFS節(jié)點(diǎn),不會(huì)再額外的占用一個(gè)塊邮辽。
可見(jiàn)IPFS的創(chuàng)作理念唠雕,是盡可能少的使用存儲(chǔ)空間,盡量分散的存儲(chǔ)文件吨述。另外岩睁,對(duì)于相同的文件,IPFS只創(chuàng)建一個(gè)文件夾揣云,系統(tǒng)也會(huì)自動(dòng)刪除重復(fù)的文件捕儒,并修改的版本歷史記錄,這樣可以大大節(jié)省存儲(chǔ)空間邓夕,保證整個(gè)系統(tǒng)的運(yùn)行速度刘莹,并保證存儲(chǔ)文件的安全,和使用的便捷焚刚。
[if !supportLists]2.[endif]讀取
同樣作為信息價(jià)值交換的基礎(chǔ)点弯,用戶(hù)在IPFS上傳或者使用文件時(shí),不再是基于位置的尋址(Location based addressing)矿咕,而是基于內(nèi)容的尋址(Content based addressing)抢肛。也就是把“去哪找信息”的指令換成“想找什么內(nèi)容”的指令。
在互聯(lián)網(wǎng)內(nèi)碳柱,下載文件或者瀏覽信息需要一個(gè)IP地址或者域名捡絮,而在IPFS內(nèi),每個(gè)文件都有自己的哈希值莲镣,并且一個(gè)哈希值只對(duì)應(yīng)一個(gè)文件福稳。不存在一個(gè)文件有多個(gè)哈希值,或者多個(gè)哈希值對(duì)應(yīng)同一個(gè)文件的問(wèn)題剥悟。因而灵寺,用戶(hù)只需在IPFS內(nèi)輸入需要文件的哈希值曼库,系統(tǒng)就會(huì)出現(xiàn)對(duì)應(yīng)的文件。這些文件是分布存儲(chǔ)的略板,所以只要有一個(gè)用戶(hù)有對(duì)應(yīng)的文件毁枯,就算部分節(jié)點(diǎn)罷工或者不在線(xiàn),也不會(huì)影響文件的讀取叮称。
具體在IPFS系統(tǒng)種下載文件時(shí)种玛,首先,需要礦工根據(jù)最終哈希數(shù)值搜索該哈希的索引結(jié)構(gòu)瓤檐,并下載下來(lái)赂韵。然后,用戶(hù)就可以根據(jù)哈希索引搜索到文件所在的節(jié)點(diǎn)位置挠蛉。用戶(hù)將節(jié)點(diǎn)上的塊下載下來(lái)之后祭示,IPFS將根據(jù)哈希數(shù)組的順序,把文件重新組合出來(lái)谴古,用戶(hù)就可以使用了质涛。
可以看出,IPFS將文件細(xì)分掰担,使上傳略顯復(fù)雜汇陆,其目的是使用戶(hù)在下載時(shí)更加便捷。畢竟带饱,小文件的下載比大文件來(lái)得更加簡(jiǎn)單方便毡代。
三、IPFS的缺陷
1)信息不可撤銷(xiāo)勺疼、不可篡改是IPFS的優(yōu)點(diǎn)教寂,但是,如果是一個(gè)需操作的文件恢口,或者說(shuō)是內(nèi)容錯(cuò)誤孝宗、信息需要更新的文件,那么不可撤銷(xiāo)耕肩、不可更改將會(huì)成為一個(gè)很麻煩的事情。
對(duì)此问潭,IPFS給出的對(duì)應(yīng)措施是:可以將修改之后的文件上傳至IPFS猿诸,IPFS也會(huì)對(duì)文件進(jìn)行更新,在IPFS內(nèi)可搜索到文件更新的所有歷史紀(jì)錄狡忙。
2)IPFS將大文件分別存放于不同的塊中梳虽,也不可避免的有一個(gè)隱患,即:如果一部分存放文件的節(jié)點(diǎn)統(tǒng)統(tǒng)下線(xiàn)不可用了灾茁,并且該文件沒(méi)有備份窜觉,那么整個(gè)文件都是不可用的谷炸。
對(duì)此,有兩種解決方案禀挫,一是激勵(lì)更多的節(jié)點(diǎn)去存儲(chǔ)這個(gè)信息旬陡,二是積極分發(fā)文件,使得更多節(jié)點(diǎn)存儲(chǔ)這個(gè)信息语婴。IPFS也認(rèn)識(shí)到了這個(gè)問(wèn)題描孟,于是創(chuàng)始團(tuán)隊(duì)又推出Filecoin幫助解決這個(gè)問(wèn)題。Filecoin共發(fā)行20億枚砰左,并在2017年7月進(jìn)行代幣私募匿醒,8月進(jìn)行了代幣眾籌,融資超過(guò)2.5億美元缠导,成為史上規(guī)模最大的代幣發(fā)行之一廉羔。
圖片來(lái)源【攝圖網(wǎng)】
Filecoin是建立在IPFS基礎(chǔ)上的一條公鏈,旨在創(chuàng)立一個(gè)分布式的儲(chǔ)存市場(chǎng)僻造,幫助IPFS激勵(lì)用戶(hù)利用多余的空間存儲(chǔ)鏈上信息憋他,維系IPFS生態(tài)的正常運(yùn)行與發(fā)展。Filecoin激勵(lì)用戶(hù)出租自己的閑置硬盤(pán)嫡意、磁盤(pán)等存儲(chǔ)空間举瑰,用于接收鏈內(nèi)存儲(chǔ)信息,防止部分節(jié)點(diǎn)下線(xiàn)或破壞導(dǎo)致文件不可用問(wèn)題蔬螟。出租了自己存儲(chǔ)空間的用戶(hù)便成為礦工此迅,只需連接到 Filecoin 網(wǎng)絡(luò),然后等著協(xié)議來(lái)處理文件傳輸和交易就行旧巾。礦工貢獻(xiàn)的存儲(chǔ)空間越大耸序,獲得的Filecoin(FIL)就越多。當(dāng)然鲁猩,客戶(hù)也可以通過(guò)花費(fèi)Filecoin來(lái)雇傭礦工來(lái)存儲(chǔ)或分發(fā)數(shù)據(jù)坎怪。
四、基于IPFS的項(xiàng)目?
2016年廓握,IPFS一度成為區(qū)塊鏈行業(yè)中最受青睞的技術(shù)之一搅窿,數(shù)千名開(kāi)發(fā)人員稱(chēng)之為“WEB的未來(lái)”。同年隙券,協(xié)議實(shí)驗(yàn)室還創(chuàng)建了libp2p男应、IPLD、multiformats娱仔、Orbit以及其他項(xiàng)目沐飘。直到現(xiàn)在,IPFS都保持著非常好的開(kāi)發(fā)進(jìn)度。到目前為止耐朴,基于IPFS而開(kāi)發(fā)的項(xiàng)目很多借卧,包括Akasha,BlockCat筛峭,Mana铐刘,DistrictOx,TokenClub等等蜒滩。ETE也是基于ETH和IPFS的架構(gòu)開(kāi)發(fā)出來(lái)的滨达。
自Protocol Labs成立以來(lái),一直潛心技術(shù)俯艰,在市場(chǎng)上十分低調(diào)捡遍。直到近期,Protocol Labs開(kāi)始新聞不斷竹握,剛在7月中旬舉辦完《IPFS & libp2p開(kāi)發(fā)者大會(huì)》画株,又在8月3日在舊金山舉辦LAB DAY?2018活動(dòng),即實(shí)驗(yàn)室日2018啦辐。此次活動(dòng)中谓传,Protocol Labs從項(xiàng)目展示、黑客破解模擬和協(xié)議相互協(xié)作為主等方面芹关,向投資機(jī)構(gòu)等關(guān)注者展示協(xié)議實(shí)驗(yàn)室生態(tài)系統(tǒng)最新的動(dòng)態(tài)資訊续挟。
IPFS在區(qū)塊鏈行業(yè)內(nèi)其實(shí)一直保持著非常高的關(guān)注度,從誕生之日起侥衬,就被廣泛的討論和傳播诗祸,在主網(wǎng)未上線(xiàn)的時(shí)候,F(xiàn)ilecoin的期貨就已經(jīng)最高達(dá)到10.19美元轴总,市場(chǎng)總估值達(dá)到203.8億美金直颅,各種礦機(jī)廠(chǎng)商的IPFS礦機(jī)被搶購(gòu)一空,可見(jiàn)市場(chǎng)對(duì)其期望之高怀樟。Protocol Labs創(chuàng)立了Filecoin和IPFS功偿,兩者互為補(bǔ)充。Filecoin可以為IPFS在全球范圍內(nèi)提供大量節(jié)點(diǎn)往堡,與此同時(shí)還帶著一個(gè)巨大的分布式存儲(chǔ)空間械荷,同時(shí)解決了IPFS的存儲(chǔ)問(wèn)題,而IPFS則為Filecoin提供了一個(gè)堅(jiān)實(shí)的價(jià)值基礎(chǔ)及技術(shù)架構(gòu)虑灰。
正如我們現(xiàn)在對(duì)于互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)的使用習(xí)以為常一樣养葵,IPFS實(shí)則是重構(gòu)了我們傳遞、獲取瘩缆、存儲(chǔ)信息的方式,而Filecoin則為這一系統(tǒng)建立了激勵(lì)體系來(lái)確保系統(tǒng)的運(yùn)轉(zhuǎn)佃蚜,IPFS的前沿或許會(huì)在不久的將來(lái)庸娱,徹底改變我們看待信息的方式着绊,成為我們?nèi)粘I畹囊徊糠帧2还苁菂^(qū)塊鏈本身帶來(lái)的金融自由熟尉,還是IPFS給我們帶來(lái)的信息自由归露,無(wú)疑都將是人類(lèi)進(jìn)化史上重要的一個(gè)里程碑。
作者簡(jiǎn)介:李麗詩(shī)Laura斤儿,LITEX CMO
畢業(yè)于北京大學(xué)與哥倫比亞大學(xué)剧包,蓋婭大學(xué)與區(qū)塊鏈星球創(chuàng)始人。