一篇文章帶你深入瞭解IPFS

什麼是IPFS?

星際檔案系統IPFS(InterPlanetary File System)是一個面向全球的、點對點的分散式版本檔案系統,目標是為了補充(甚至是取代)目前統治網際網路的超文字傳輸協議(HTTP),將所有具有相同檔案系統的計算裝置連線在一起。原理用基於內容的地址替代基於

域名

的地址,也就是使用者尋找的不是某個地址而是儲存在某個地方的內容,不需要驗證傳送者的身份,而只需要驗證內容的雜湊,透過這樣可以讓網頁的速度更快、更安全、更健壯、更持久。

一篇文章帶你深入瞭解IPFS

點選載入圖片

HTTP存在的弊端

HTTP的效率低下,並且伺服器昂貴。

使用HTTP協議從中心化的伺服器叢集中一次需要下載一個完整檔案,而P2P的方式可以從許多peers(對等節點)中下載不同的資料塊,經研究可以節省60%的頻寬成本。

歷史檔案被刪除。

網頁的平均壽命是100天,部分網站資料不能得到永久儲存。這也是受限於中心化伺服器的高儲存成本。

HTTP的中心化限制了發展機會。

全球網際網路的域名解析服務,根源上是由13個根伺服器所提供。同時主要的雲服務也由幾家重要的雲服務商所提供。政府和機構可以在這些中心化叢集前擷取HTTP訊息包,窺探和監控網民的生活;駭客們也可以透過DDOS等手段攻擊中心化的伺服器叢集,網路癱瘓的案例屢見不鮮。

網路應用過於依賴主幹網。

當主幹網因為不可抗力因素造成擁塞或宕機等,無法繼續服務時,應用也會受到影響。

IPFS的工作原理

IPFS的出現,則是為了解決中心化web的這些問題。

基於內容定址而非域名定址

當檔案被上傳到IPFS網路,它被賦予一個雜湊值,這個雜湊值類似於我們的身份證號,他是獨一無二的,它是從檔案內容中被計算出來的。即使檔案內有一個標點的改動,被計算出來的雜湊值也是完全不同的,就像一對雙胞胎,也擁有不同的身份證號。

一篇文章帶你深入瞭解IPFS

點選載入圖片

於是,在

ipfs

網路中查詢檔案就是在ipfs網路中尋找雜湊值,它透過雜湊表能快速的找到儲存內容的節點,從中找到相應內容。

IPFS使用一個叫IPNS的分散式命名系統

IPFS使用一個叫IPNS的分散式命名系統,這可以類比於域名與IP地址的對映關係,將難於記憶的資料雜湊值對映為易於記憶的字串

IPFS是一個分散式的檔案儲存系統

ipfs網路裡的下載,是一種類似迅雷下載的技術(p2p下載)。當檔案上傳到ipfs網路,這個檔案會被分散成很多份,每一份都存在全國各地不同的節點中,每個節點都有這個檔案的一部分。節點的儲存空間有上百G甚至幾個T,下載檔案的時候,就從每個節點同時獲取資料,這叫做去中心化儲存,速度非常快。

IPFS發行了一種Filecoin代幣,只要你幫助他們儲存檔案,那麼就能獲得Filecoin獎勵。有了這個獎勵機制後,我們只需要共享閒餘的儲存空間就能獲得相應的回報,這也促使大家願意為ipfs的節點發展貢獻自己的一份力量

每個節點維護一張DHT(分散式雜湊表)

Ipfs全網路裡的每個節點都有一張DHT(分散式雜湊表),這張表包含相應查詢內容(雜湊值)與目標節點(雜湊值存在的位置)的對應對映關係。整個雜湊表用二叉樹的演算法,平均查詢聯絡節點的複雜度是O(log2N)。例如要查詢10000萬節點只需20跳,尋表的速度非常快,所以如果你要查詢一個內容很快就可以幫你遍歷到,搜尋到結果

IPFS解決了哪些問題?

1。下載速度快

整個IPFS系統是一個分散式的檔案儲存系統, 那麼在下載相關資料的時候, 將從多個節點同時下載, 相比於HTTP從中心伺服器的下載速度要快很多, 大家都用過P2P下載(比如: 迅雷, BitTorrent), IPFS下載過程跟這個類似。

IPFS資料去重複性

IPFS是透過雜湊值(身份證號)標記所儲存內容的,所以同樣的內容在IPFS主鏈上只有獨一無二的一份,保證檔案不會被重複儲存,大大節省網路儲存空間,儲存成本自然更加便宜。

一篇文章帶你深入瞭解IPFS

點選載入圖片

3 。安全性

中心化伺服器目前很難抵擋DDoS攻擊, 當大量的訪問請求從四面八方湧來, 中心化的伺服器幾乎會在一瞬間癱瘓, IPFS天生就擁有抵擋這種攻擊的能力。 因為所有的訪問將會被分散到不同的節點。 甚至攻擊者自己也是節點之一。 某種程度上講, IPFS甚至能抵擋量子計算的攻擊。

4 。開放性

眾所周知, 比特幣是一種去中心化, 匿名的資料貨幣, 這些特性使得比特幣無法被管制, 交易無法篡改。 IPFS同樣, 由於是建立在去中心化的分散式網路上的, 所以IFPS很難被中心化管理, 限制。 網際網路將更加開放。

用一個劇情來總結IPFS

1。小紅和小剛以前看過該影片,於是他們將影片檔案加入IPFS網路,得到相同的雜湊指紋B。(現實中,若該影片在周邊好幾個節點都持有,IPFS會把檔案分塊去重,節省節點的儲存成本)

2。小明在本地透過雜湊指紋B(形如 /ipfs/B 的路徑名),試圖從IPFS網路拉取該影片。小明不關心最終的影片資料來自哪些節點。

3。小明的節點索引DHT中的雜湊值所對應的節點列表,並行地從這些節點下載部分資料塊。

相關文章