一、從HTTP到IPFS
我們平時上網(wǎng)時,最熟悉的莫過于網(wǎng)址里的“http://”字樣,其實HTTP是萬維網(wǎng) (WWW: World Wide Web)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。協(xié)議全稱是Hyper Text Transfer Protocol,即超文本傳輸協(xié)議。
萬維網(wǎng)如何利用HTTP工作呢?這又涉及到TCP/IP通信協(xié)議。簡單來說,假設(shè)用戶A在電腦上操作將文件上傳至瀏覽器,而用戶B需要從瀏覽器下載這個文件,那么這之間會經(jīng)歷一個過程。首先TCP程序會把A要發(fā)送的文件分解成很多數(shù)據(jù),然后壓縮成多個壓縮包。這些壓縮包又統(tǒng)統(tǒng)被裝進(jìn)一個IP里通過URL[ URL,全稱是Uniform Resource Locator,中文叫統(tǒng)一資源定位符,是互聯(lián)網(wǎng)上用來標(biāo)識某一處資源的地址。向HTTP服務(wù)端即WEB服務(wù)器發(fā)送請求。Web服務(wù)器根據(jù)接收到的請求后,向客戶端發(fā)送響應(yīng)信息,于是A的文件上傳成功。
而用戶B下載這個文件時,需要輸入IP地址或者域名,好讓電腦知道去哪里找到對應(yīng)信息(基于位置的尋址Location based addressing)。之后電腦上會向WEB服務(wù)器發(fā)送請求,TCP會將發(fā)下載的壓縮后的數(shù)據(jù)按序還原。如果接收TCP發(fā)現(xiàn)部分文件受損,會請求再發(fā)送一次。這樣的話,就會有以下一些問題:
1)在互聯(lián)網(wǎng)中,所有數(shù)據(jù)都會被存儲在一個中心服務(wù)器上。無論用戶時上傳/下載文件或者是瀏覽網(wǎng)頁,都需要一次一次從服務(wù)器上獲取資料。一旦服務(wù)器出現(xiàn)故障、被限制或是被攻擊,就會出現(xiàn)文件丟失或者網(wǎng)頁無法打開的情況(錯誤404)。
2)基于位置的尋址方式也存在不確定性。比如,一旦IP被刪,或者服務(wù)器關(guān)閉,那么用戶將無法下載該文件。
3)如果這個文件是很多人都需要的,那么每個人都得去下載才能使用,造成很大的存儲空間浪費(fèi)問題。
所以互聯(lián)網(wǎng)雖然是四通八達(dá)又涵蓋廣泛的工具,但是也不可避免的有其局限性。
IPFS在構(gòu)建信息交換的橋梁這一點(diǎn)上,與互聯(lián)網(wǎng)很相像,不同的是IPFS是去中心化的。也就是說IPFS沒有一個中心服務(wù)器,所以不存在信息丟失或者被篡改的問題。并且IPFS可以將實現(xiàn)文件共享,從而節(jié)省存儲空間。
二、IPFS的極簡主義
2014年5月,墨西哥小哥Juan Benet與他的幾個斯坦福大學(xué)同學(xué)一起發(fā)明了IPFS。在創(chuàng)辦IPFS之前,Juan Benet是典型的國外常春藤學(xué)生極客,有一個開掛般的人生。他是斯坦福大學(xué)的本科和碩士畢業(yè),在斯坦福讀碩士的期間就參與創(chuàng)立了Loki studios,擔(dān)任聯(lián)合創(chuàng)始人和CTO,這是一家手游公司,后來被雅虎收購。2011年入駐斯坦福學(xué)生創(chuàng)業(yè)孵化中心StartX EIR,2012年,畢業(yè)后創(chuàng)辦了Athena,這是一個做了一年多的時間后,于2014年5月份創(chuàng)辦Protocal Labs。
Protocal Labs剛以創(chuàng)立就得以加入美國硅谷頂級孵化器Y-Combinator,IPFS是他們做的第一個產(chǎn)品。Protocol Labs在創(chuàng)建IPFS的時候給它取名為“InterPlanetary File System(星際文件傳輸)”也是有深刻含義的。Protocol Labs希望構(gòu)建一個點(diǎn)對點(diǎn)的分布式文件系統(tǒng),通過底層協(xié)議,讓全世界所有人都能夠輕松從IPFS系統(tǒng)上提取文件,且不受防火墻的影響。甚至如果科技發(fā)展到一定程度,需要進(jìn)行星球與星球信息傳輸時,IPFS也可以提供快速存儲文件的服務(wù)。
存儲
在IPFS中,信息可以存儲進(jìn)IPFS系統(tǒng)中的塊(block)里,這些塊可以存儲至多256kb的數(shù)據(jù),它們還可以鏈接向其他IPFS塊。也就是說,存儲小于256kb的文件時,只需將這個文件放進(jìn)一個塊內(nèi)就可以了。而大于256kb的文件會被分成多個256kb然后放進(jìn)塊中,之后IPFS將創(chuàng)建一個空塊,該塊將鏈接到文件的所有其他部分。這個空塊就類似于一個大信封,里面會涵蓋整個文件的所有部分。
系統(tǒng)會給同一個文件的每一個塊計算一次哈希值a,所有塊的哈希值a計算完畢之后,會將所有的哈希值a拼湊成一個數(shù)組b,再計算一次哈希值,從而得到最終的哈希值c。最后把最終的哈希值c和原文件捆綁起來,組成一個對象,從而形成一個索引結(jié)構(gòu)d。把塊和最終的索引結(jié)構(gòu)d上傳至IPFS節(jié)點(diǎn),文件便同步到網(wǎng)絡(luò)了。
此外,還有一種小于1kb的小文件,如果這些小文件也單獨(dú)放進(jìn)一個塊里的話,也會造成一定的浪費(fèi)。于是,IPFS把小于1kb的數(shù)據(jù)內(nèi)容直接和哈希索引放在一起上傳給IPFS節(jié)點(diǎn),不會再額外的占用一個塊。
可見IPFS的創(chuàng)作理念,是盡可能少的使用存儲空間,盡量分散的存儲文件。另外,對于相同的文件,IPFS只創(chuàng)建一個文件夾,系統(tǒng)也會自動刪除重復(fù)的文件,并修改的版本歷史記錄,這樣可以大大節(jié)省存儲空間,保證整個系統(tǒng)的運(yùn)行速度,并保證存儲文件的安全,和使用的便捷。
讀取
同樣作為信息價值交換的基礎(chǔ),用戶在IPFS上傳或者使用文件時,不再是基于位置的尋址(Location based addressing),而是基于內(nèi)容的尋址(Content based addressing)。也就是把“去哪找信息”的指令換成“想找什么內(nèi)容”的指令。
在互聯(lián)網(wǎng)內(nèi),下載文件或者瀏覽信息需要一個IP地址或者域名,而在IPFS內(nèi),每個文件都有自己的哈希值,并且一個哈希值只對應(yīng)一個文件。不存在一個文件有多個哈希值,或者多個哈希值對應(yīng)同一個文件的問題。因而,用戶只需在IPFS內(nèi)輸入需要文件的哈希值,系統(tǒng)就會出現(xiàn)對應(yīng)的文件。這些文件是分布存儲的,所以只要有一個用戶有對應(yīng)的文件,就算部分節(jié)點(diǎn)罷工或者不在線,也不會影響文件的讀取。
具體在IPFS系統(tǒng)種下載文件時,首先,需要礦工根據(jù)最終哈希數(shù)值搜索該哈希的索引結(jié)構(gòu),并下載下來。然后,用戶就可以根據(jù)哈希索引搜索到文件所在的節(jié)點(diǎn)位置。用戶將節(jié)點(diǎn)上的塊下載下來之后,IPFS將根據(jù)哈希數(shù)組的順序,把文件重新組合出來,用戶就可以使用了。
可以看出,IPFS將文件細(xì)分,使上傳略顯復(fù)雜,其目的是使用戶在下載時更加便捷。畢竟,小文件的下載比大文件來得更加簡單方便。
三、IPFS的缺陷
1)信息不可撤銷、不可篡改是IPFS的優(yōu)點(diǎn),但是,如果是一個需操作的文件,或者說是內(nèi)容錯誤、信息需要更新的文件,那么不可撤銷、不可更改將會成為一個很麻煩的事情。
對此,IPFS給出的對應(yīng)措施是:可以將修改之后的文件上傳至IPFS,IPFS也會對文件進(jìn)行更新,在IPFS內(nèi)可搜索到文件更新的所有歷史紀(jì)錄。
2)IPFS將大文件分別存放于不同的塊中,也不可避免的有一個隱患,即:如果一部分存放文件的節(jié)點(diǎn)統(tǒng)統(tǒng)下線不可用了,并且該文件沒有備份,那么整個文件都是不可用的。
對此,有兩種解決方案,一是激勵更多的節(jié)點(diǎn)去存儲這個信息,二是積極分發(fā)文件,使得更多節(jié)點(diǎn)存儲這個信息。IPFS也認(rèn)識到了這個問題,于是創(chuàng)始團(tuán)隊又推出Filecoin幫助解決這個問題。Filecoin共發(fā)行20億枚,并在2017年7月進(jìn)行代幣私募,8月進(jìn)行了代幣眾籌,融資超過2.5億美元,成為史上規(guī)模最大的代幣發(fā)行之一。
Filecoin是建立在IPFS基礎(chǔ)上的一條公鏈,旨在創(chuàng)立一個分布式的儲存市場,幫助IPFS激勵用戶利用多余的空間存儲鏈上信息,維系IPFS生態(tài)的正常運(yùn)行與發(fā)展。Filecoin激勵用戶出租自己的閑置硬盤、磁盤等存儲空間,用于接收鏈內(nèi)存儲信息,防止部分節(jié)點(diǎn)下線或破壞導(dǎo)致文件不可用問題。出租了自己存儲空間的用戶便成為礦工,只需連接到Filecoin網(wǎng)絡(luò),然后等著協(xié)議來處理文件傳輸和交易就行。礦工貢獻(xiàn)的存儲空間越大,獲得的Filecoin(FIL)就越多。當(dāng)然,客戶也可以通過花費(fèi)Filecoin來雇傭礦工來存儲或分發(fā)數(shù)據(jù)。
五、基于IPFS的項目
2016年,IPFS一度成為區(qū)塊鏈行業(yè)中最受青睞的技術(shù)之一,數(shù)千名開發(fā)人員稱之為“WEB的未來”。同年,協(xié)議實驗室還創(chuàng)建了libp2p、IPLD、multiformats、Orbit以及其他項目。直到現(xiàn)在,IPFS都保持著非常好的開發(fā)進(jìn)度。到目前為止,基于IPFS而開發(fā)的項目很多,包括Akasha,BlockCat,Mana,DistrictOx,TokenClub等等。ETE也是基于ETH和IPFS的架構(gòu)開發(fā)出來的。
自Protocol Labs成立以來,一直潛心技術(shù),在市場上十分低調(diào)。直到近期,Protocol Labs開始新聞不斷,剛在7月中旬舉辦完《IPFS & libp2p開發(fā)者大會》,又在8月3日在舊金山舉辦LAB DAY2018活動,即實驗室日2018。此次活動中,Protocol Labs從項目展示、黑客破解模擬和協(xié)議相互協(xié)作為主等方面,向投資機(jī)構(gòu)等關(guān)注者展示協(xié)議實驗室生態(tài)系統(tǒng)最新的動態(tài)資訊。
IPFS在區(qū)塊鏈行業(yè)內(nèi)其實一直保持著非常高的關(guān)注度,從誕生之日起,就被廣泛的討論和傳播,在主網(wǎng)未上線的時候,F(xiàn)ilecoin的期貨就已經(jīng)最高達(dá)到10.19美元,市場總估值達(dá)到203.8億美金,各種礦機(jī)廠商的IPFS礦機(jī)被搶購一空,可見市場對其期望之高。Protocol Labs創(chuàng)立了Filecoin和IPFS,兩者互為補(bǔ)充。Filecoin可以為IPFS在全球范圍內(nèi)提供大量節(jié)點(diǎn),與此同時還帶著一個巨大的分布式存儲空間,同時解決了IPFS的存儲問題,而IPFS則為Filecoin提供了一個堅實的價值基礎(chǔ)及技術(shù)架構(gòu)。
正如我們現(xiàn)在對于互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)的使用習(xí)以為常一樣,IPFS實則是重構(gòu)了我們傳遞、獲取、存儲信息的方式,而Filecoin則為這一系統(tǒng)建立了激勵體系來確保系統(tǒng)的運(yùn)轉(zhuǎn),IPFS的前沿或許會在不久的將來,徹底改變我們看待信息的方式,成為我們?nèi)粘I畹囊徊糠帧2还苁菂^(qū)塊鏈本身帶來的金融自由,還是IPFS給我們帶來的信息自由,無疑都將是人類進(jìn)化史上重要的一個里程碑。