導(dǎo)讀:多虧了IPFS,這個非常真實、且非常容易使用的系統(tǒng)可能是我們實現(xiàn)更快、更民主的互聯(lián)網(wǎng)的關(guān)鍵。如上所述,IPFS的基本思想是使用用戶設(shè)備來存儲、索引和交付當(dāng)下需要駐留在集中式服務(wù)器上的數(shù)據(jù)。
讓我們想象一下這樣一個場景,你正在下載一個最新的meme文件,并耐心地在等待下載的完成。這個meme非常熱門,所以你給你的朋友也發(fā)了一個鏈接。他們從你的手機中獲取了文件,然后又開始與他們自己的朋友進行了分享。這樣,meme文件便同時存儲在了幾十個設(shè)備當(dāng)中,所以當(dāng)一個新用戶獲得鏈接時,他們實際上最終會同時連接到其他多個人的設(shè)備上面,并從每個人那里獲得一些片段,這使得下載幾乎可以是即時的。
多虧了IPFS,這個非常真實、且非常容易使用的系統(tǒng)可能是我們實現(xiàn)更快、更民主的互聯(lián)網(wǎng)的關(guān)鍵。如上所述,IPFS的基本思想是使用用戶設(shè)備來存儲、索引和交付當(dāng)下需要駐留在集中式服務(wù)器上的數(shù)據(jù)。這聽起來有點像是加密貨幣,沒有錯--這個項目的幕后推手Juan Benet曾將IPFS描述為“在某種意義上,IPFS對網(wǎng)站的影響……就像是比特幣對貨幣的影響一樣?!?/p>
什么是星際文件系統(tǒng)?
如果你知道BitTorrent或任何其他的P2P技術(shù)是如何工作的,那么你也可以很好地理解IPFS在做的事情。它可以在用戶設(shè)備之間發(fā)送文件(包括構(gòu)成大多數(shù)網(wǎng)站的HTML、CSS和JavaScript文件)和文件片段,就像你完全可以合法地下載公共領(lǐng)域的音樂一樣。
這意味著,你只需檢查附近是否有人存儲了頁面(或其中的某些部分),而不是連接到服務(wù)器以查看站點。一旦你下載了這個頁面,你的設(shè)備也會將其儲存一段時間,這樣其他人就可以從你這里獲得它(或它的一部分)了。這聽起來有點復(fù)雜,但實際上它比我們目前使用HTTP協(xié)議在單個服務(wù)器-客戶端管道上發(fā)送數(shù)據(jù)的系統(tǒng)要高效得多。
為什么它是先進的?
與傳統(tǒng)網(wǎng)絡(luò)相比,IPFS有幾個很大的優(yōu)勢:
更快、更高效的內(nèi)容交付:你可以從地理位置相近的資源下載文件片段,從而最小化下載時間和帶寬。
去中心化:沒有一個單一的來源可以控制數(shù)據(jù)或控制對其的訪問。
信息保存:由于沒有單一的服務(wù)器會存儲所有的數(shù)據(jù),所以它不會像GeoCities網(wǎng)站那樣就這么消失并帶走你所有的數(shù)據(jù)。
在連接較差的地區(qū),連接速度也會更快、更穩(wěn)定:只要你想要的內(nèi)容已經(jīng)被下載到了某個你可以訪問的地方,你就不需要進行長距離的連接,這對那些連接不穩(wěn)定的地區(qū)來說非常有幫助。
審查的阻力:雖然還不完美,但總比集中式的模式更好。
工作原理:簡短版
現(xiàn)在任何人都可以使用IPFS網(wǎng)絡(luò),因為它已經(jīng)變得非常友好了。下面是一個簡短的流程概述
當(dāng)您將一個文件添加到IPFS中時,該文件會被分割為多個塊,每個塊都會通過一個算法分配得到一個惟一的ID。整個文件,包括這些塊ID,也被分配了一個ID。最初,你的機器將是人們可以獲取文件的惟一地方,但是其他節(jié)點(機器)也可以提取并分發(fā)文件。
如果網(wǎng)絡(luò)注意到你的一些數(shù)據(jù)與已經(jīng)存儲在那里的內(nèi)容相同,它只會使用這些數(shù)據(jù)而不是添加副本。假設(shè)你正在主持一張你錄制的“豪華版”的專輯。其中10首歌曲與你已經(jīng)錄制的專輯相同,但其中兩首是新的,因此當(dāng)你將它們添加到IPFS時,系統(tǒng)將識別重復(fù)的歌曲并為它們使用現(xiàn)有的ID,而只為兩首新歌添加新的ID。
網(wǎng)絡(luò)上的每個節(jié)點都會存儲一些數(shù)據(jù)(可能是節(jié)點希望分發(fā)的數(shù)據(jù),加上節(jié)點最近打開的數(shù)據(jù))和一個索引的一部分,該索引能夠幫助人們查找網(wǎng)絡(luò)上的內(nèi)容。
如果你想打開一個文件,你可以讓網(wǎng)絡(luò)查找它的ID并把你和它的擁有者聯(lián)系起來。名為IPNS的命名系統(tǒng)有助于將人類可讀的名字轉(zhuǎn)換成系統(tǒng)可搜索的以及機器可讀的ID。
更簡單的一種描述是:IPFS能夠為每個數(shù)據(jù)塊提供一個名稱,列出數(shù)據(jù)在任何給定時間的位置,并實現(xiàn)在設(shè)備之間直接發(fā)送數(shù)據(jù)。
工作原理:技術(shù)版
使IPFS起作用的主要有三件事:內(nèi)容尋址模塊給數(shù)據(jù)一個標(biāo)識,Merkle-DAG給它一個結(jié)構(gòu),而分布式哈希表能夠告訴你在哪里可以找到它。
內(nèi)容尋址:告訴你是什么,而不是在哪里
我們當(dāng)前的大多數(shù)內(nèi)容都有其基于位置的地址(如C:/Users/Username/Documents, 192.124.249.3等)。這是在告訴我們?nèi)ツ睦镎覕?shù)據(jù)。這在分散的系統(tǒng)中是行不通的,因為內(nèi)容可以存儲在任何地方,所以像IPFS和BitTorrent這樣的系統(tǒng)會使用“內(nèi)容尋址”的方式。
內(nèi)容尋址系統(tǒng)的工作原理是通過一種算法來為數(shù)據(jù)分配一個唯一的ID或哈希。每個相同的文件副本都會有相同的ID,這意味著當(dāng)IPFS查找它時,它可以找到存儲在網(wǎng)絡(luò)上的每個實例。
Merkle-DAG:所有東西都有一個CID,它們都是相連接的
盡管聽起來像一個德國政黨,但Merkle-DAG(有向無環(huán)圖)實際上是一種組織數(shù)據(jù)的方法。在這個系統(tǒng)中,每一塊數(shù)據(jù)都有自己的內(nèi)容ID(CID):文件夾、文件、文件內(nèi)的數(shù)據(jù)塊--所有的一切。這意味著可以將文件分成不同的部分、驗證和重新組裝。
IPFS文檔將其描述為“海龜下面還是海龜”,因為所有內(nèi)容都可以分解為一個由CID標(biāo)識的數(shù)據(jù)集合。文件夾的CID將引導(dǎo)您到一個文件和文件夾CID的集合,其CID隨后也將引導(dǎo)您到表示其他內(nèi)容片段的其他CID,而它們也有自己的CID。任何文件中的任何更改都會導(dǎo)致其哈希和其文件夾的哈希的更改。
但是,數(shù)據(jù)實際上并不在這里,它只是告訴你在哪里可以找到所有的數(shù)據(jù),以及一旦你有了數(shù)據(jù),所有的數(shù)據(jù)應(yīng)該如何組合在一起。從本質(zhì)上說,是Merkle-DAG為所有這些ID提供了一個結(jié)構(gòu),非常類似于計算機上的文件系統(tǒng)。
分布式哈希表:IPFS定位內(nèi)容的方式
那么我們可以如何找到我們想要的數(shù)據(jù)呢?基本上,有一個大的數(shù)據(jù)庫,它會將內(nèi)容ID與承載該內(nèi)容的計算機的位置相匹配,數(shù)據(jù)庫本身也會被網(wǎng)絡(luò)中的每個人分割。當(dāng)您請求一塊由CID表示的內(nèi)容時,您的計算機將搜索CID,直到它找到了擁有它的人的列表。然后你的電腦將連接到這些人,下載你需要的東西,并把它們組裝起來。這就是分布式哈希表--本質(zhì)上是一個關(guān)于誰擁有什么東西的大列表。
IPFS很酷,但它會變得流行嗎?
IPFS始于2015年,自那以后已經(jīng)取得了快速的發(fā)展。已經(jīng)有數(shù)十個應(yīng)用程序和網(wǎng)站建立在它之上(包括分散的YouTube,或DTube),一個區(qū)塊鏈文件存儲系統(tǒng)(Filecoin),和一個GeoCities的替代品(Neocities)。它成功地將去中心化和用戶友好性結(jié)合在了一起,這可能就是為什么它成為了所有想要實現(xiàn)去中心化的項目的首選,比如Sociall(一個去中心化的社交網(wǎng)絡(luò))和Brave。
Cloudflare的IPFS網(wǎng)關(guān)已經(jīng)大受歡迎,網(wǎng)絡(luò)的使用也變得越來越容易了;你所要做的就是下載一個程序并安裝一個瀏覽器擴展。當(dāng)然,對于它是否真的是最好的解決方案依然存在爭議--它也遠(yuǎn)非是唯一一個有同樣愿景的項目--但它也還沒有顯示出任何可能放緩的跡象。即使它不能完全取代HTTP,它也肯定會成為下一個版本的Internet的一部分。
原文標(biāo)題:How the Interplanetary File System (IPFS) Could Decentralize the Web,作者:Andrew Braun