
常常隨 NFT 出現的 IPFS 到底是啥?
IPFS定義

這段文字的重點有兩個:
- IPFS 是以分散式系統來儲存資料與分享資料的 P2P網路傳輸協定
- IPFS 使用「內容定位」的方式去找資料
所以這篇文章將會用簡單的方式帶讀者了解
- 什麼是網路傳輸協定
- 中心化儲存系統與分散式儲存系統的差別
- 什麼是內容定位
- IPFS 的遠大目標
正式開始…
Now: 中心化儲存的世界

正常來說,所有公司都會有自己的資料庫,這些資料庫可能是自己架的,也可能是用 GCP, AWS等等服務去儲存。
這些公司保有存取權,可以隨時對資料取用、更改,在某種程度上算是保有一定的彈性以及效率,但當控制權太過集中,就會有人開始有別的疑慮,我在這邊舉幾個例子。
資料控制權過於集中產生問題的案例
說是因為反恐所以封鎖,過程如下圖

2019 年 12 月 26 日,土耳其憲法法院裁定,土耳其政府對維基百科的封鎖侵犯了公民的言論自由。
2020 年 1 月 15 日,土耳其政府解除了對維基百科的封鎖。
說封就封,這是權力太集中的一次案例。
這個案例大家應該比較有感了,這是今年 2 月 12 日的災情。

當大公司維護的伺服器因故斷線或是當機,如果我們把資料託管在上面,就沒有辦法即時取得想要的資料,這時候就會有人開始講啦,如果有一顆核彈直接炸掉大公司機房怎麼辦。
可能有些人會疑惑為什麼大公司維護的伺服器當機,我們就沒辦法訪問了,要了解這點,必須先提到現在全世界最廣泛的、通用的網路傳輸協定 — HTTP。
HTTP介紹
HTTP (Hypertext Transfer Protocol,超文本傳輸協定),是一個客戶端與伺服器間溝通的標準。
這篇文章中,我們不會對這個主題作太深入的講解,只會提到基本需要的知識。
Request and Response
如下圖,右側是我們使用的瀏覽器,我們透過點選前端向伺服器送出請求,這個請求 (request)依照超文本傳輸協議的形式傳送,因此稱作 http request;相反的,伺服器在收到請求後,經過事先寫好的處理方式回傳 (response) 資料給使用者。

這個請求通常是怎麼傳輸的呢?相信大家都看過 URL這個詞。
URL (Uniform Resource Locator)
URL (Uniform Resource Locator,統一資源定位符)。 「https://zh.wikipedia.org:443/w/index.php?title= 比 GregShen還帥的人」,這一整串就是一個 URL
- https,超文本傳輸安全協定。
是 http 透過 HTTP 進行通訊,但通訊過程使用 SSL/TLS 進行加密,比較安全,那個 s 是 secure 的意思。 - zh.wikipedia.org,是伺服器名稱。
正常來說伺服器是以 198.35.26.96 這種形式存在,但是這真的很難記,所以後來有人發明了 DNS (Domain Name System,網域名稱系統),讓我們可以用可讀性高的方式記憶並針對特定伺服器送出請求。 - 443,網路埠號 (port)。
有時伺服器會開特定的 port 給特定服務,https 預設的 port 就是 443,所以其實這邊可寫可不寫。 - /w/index.php,是路徑。
- ?title = 比 GregShen還帥的人,是 request。
想當然爾,你各位是找不到這個人的。

各位現在知道 URL怎麼運作的,我們會先找伺服器在哪,再看他的 port,再看它開了什麼 API,最後再執行我們要的動作。其實不難看出它是以「地址定位」的方式去找資料的。
其實現在這種做法真的已經非常方便了,但這篇既然是要寫 IPFS 的好處,不免就要寫一下 HTTP 的壞處。
所以結合一開始提到的中心化儲存,有哪些壞處,我們來盤點一下:
HTTP 弱勢
- HTTP 中心化儲存在某種程度上是很低效率的。
使用 HTTP 協議每次需要從中心化的服務器下載完整的文件 (網頁、影片、圖片等),速度慢、效率低。 - Web 文件經常被刪除。
數據顯示,HTTP 頁面生存週期平均只有 100 天,這是因為儲存成本高、而且無法永久保存。 - 中心化在某種程度上限制了 Web 的發展。
封鎖、管制、監控等中心化行為雖然有好處,但同時也威脅到科技發展。
這三個弱點,IPFS 又是怎麼解決的呢?
前情提要到這裡,終於可以回到 IPFS了!
IPFS
希望各位對這段還有印象,沒有也沒關係

- IPFS 是以分散式系統來儲存資料與分享資料的P2P網路傳輸協定
- IPFS 使用「內容定位」的方式去找資料
有了我們前面一大段的講解,現在大家是否比較看得懂這兩句話的意思了。
先說第二點,IPFS 使用「內容定位」的方式去找資料。
何謂「內容定位」?
你只需要告訴電腦你要什麼資源,而不是去哪裡找資源。
- 因為每個檔案上傳後都有不一樣的 hash,沒看過 hash 這個詞的人把它想像成身分證字號。
- 當你要搜尋檔案的時候只需要去問誰有這個 hash 值的檔案,IPFS 就會將檔案提供給你。
我會不會收到被篡改過的資料?
- 篡改過的檔案hash就不一樣了,因此我們不會取到不一樣的檔案。
- 也因為hash完全相同代表資料一樣,IPFS 不會重複儲存相同的檔案。
所以不同人上傳一樣的檔案,只會被IPFS 生成一次。
如何做到分散式存儲?
IPFS 檔案都儲存在 IPFS 物件中,每個物件最多 256 KB。
若檔案大於 256KB,會被分割為多個物件,之後系統會生成一個空白 IPFS 物件與包含這個檔案的其它所有 IPFS 物件連結,如下圖。

回到剛剛提到的 HTTP 弱勢,IPFS 怎麼分別改善的:
一、HTTP 中心化儲存在某種程度上是很低效率的。
IPFS 優勢:改用 P2P 網路可節省頻寬
改用 P2P 的方式下載,可以節省近 60% 的帶寬。而且 P2P 將文件分割為小的塊,從多個服務器同時下載,速度非常快。
二、Web 文件經常被刪除。
IPFS 優勢:IPFS 的資料可永久保存
只要儲存者標記了,便可以永久保存,甚至提供歷史版本回溯功能。
這也是為什麼很多 NFT 圖片存在上面。
三、中心化的監管限制了 Web 的發展。
IPFS 優勢:所以他就去中心化了啊!
IPFS 優點整理
- P2P 網路傳輸協定(不會有單點失效)
- 版本管理系統(讚)
- ipfs:// 進行搜尋(目前只有幾個瀏覽器可以,例如 Brave Browser)
- 有 IPNS 可命名檔案
- 永久 web(No more 404)
講這麼多好處,但總不會都是優點而沒有缺點吧!
IPFS 局限性
取不到資料的情況
像 BitTorrent 沒人在線上,若檔案儲存在十個節點上,這十個節點都剛好離線,就抓不到資料了。
為了避免這種情況,IPFS 想出了一套解決方案,就是獎勵那些儲存資料並且保持在線的人。他們希望可以做到:
- 獎勵那些確實儲存資料並且長時間在線上的人。
- 主動把檔案分佈儲存,以保證網路上總會有一定數量的節點線上。
這套獎勵系統就是 Filecoin。

對沒錯,IPFS 開發團隊與 Filecoin 團隊是一樣的,考慮到文長,這就留到之後說吧!
結論
IPFS不只想加速 Web,它的最終目標實為取代 HTTP