IPFS

contributed by < steven1lung >

Introduction

IPFS 全名 InterPlanetary File System,是一個提供檔案、網頁、app 資料存取的分散式系統。
IPFS 是一個 P2P 的 storage network,裡面的 content 可以透過世界各地的 peers 去存取,IPFS 會從 content address 去找你要的資料。

What's Special about IPFS ?

比如說我們想要到維基百科查有關 apple 的資料,那我們可能會到下面的網址瀏覽我們要的資訊。

https://wikipedia.org/wiki/apple

當我們在瀏覽器把 URL 輸入後,我們會向維基百科的伺服器要這個 apple 的 page,維基百科的伺服器會回傳我們要的資料,之後我們就可以瀏覽這個page了。

但是,如果有天台灣政府決定封鎖維基百科這個網域,我們再輸入相同的URL後就會無法獲取我們要的資料。這是現在網路存在的一種問題,上面的資訊都是中心化的,幾乎所有的資料或資訊都是被儲存在一個大型的伺服器center中,而這些伺服器通常都是由某家公司所控制。

其實中心化的另外一個問題就是審查制度,因為資料都在那幾個伺服器上,政府很容易就可以透過一些手段來封鎖資訊。
2017土耳其政府封鎖維基百科

What can IPFS Do ?

現在我們輸入一個網址,就是跟瀏覽器說要去哪裡找資料,但如果這個地方的伺服器壞了,那我們就無法取得我們要的東西。就算有人在伺服器炸掉前下載了我們要的資料,我們也無法從那個人身上獲得資料。

IPFS 把以往的 Location Addressing 改成 Content Addressing,意思就是我們不再跟電腦說要哪裡找資料,而是跟電腦說我們要什麼資料

跟 IPFS 要 apple 的 page 看起來會像是這樣

/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki/Aardvark.html

/ipfs/後面的一串字串就是 content identifier(CID),可以理解成每個檔案自己的 label,CID 會根據你的 content 用 [hash] (https://docs.ipfs.io/concepts/hashing/)來產生出來。

所以從 hash 產生出 CID 就可以知道兩個人到 IPFS 上傳同一個檔案後所產生的 CID 會是同一組,這邊就跟 google drive 之類的方式有很大的不同。

Are There Any Cons ?

俗話說一體兩面,有優點一定有缺點。

  1. IPFS 的安裝過程非常麻煩,並不是對使用者完全地友善
  2. IPFS 通常會將 bandwith 佔據大部份,並不是網路使用者想看到的
  3. IPFS 現在使用者大多都是科技宅宅,一般人不太會去建立自己的節點,所以造成節點稀少。