--- tags: Blockchain --- # IPFS contributed by < [steven1lung](https://github.com/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土耳其政府封鎖維基百科](https://zh.wikipedia.org/wiki/%E5%9C%9F%E8%80%B3%E5%85%B6%E5%B0%81%E9%94%81%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%E4%BA%8B%E4%BB%B6) ## 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 現在使用者大多都是~~科技宅宅~~,一般人不太會去建立自己的節點,所以造成節點稀少。