用最簡單的方式看懂 IPFS

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

IPFS定義

維基百科上的定義

這段文字的重點有兩個:

  • IPFS 是以分散式系統來儲存資料與分享資料的 P2P網路傳輸協定
  • IPFS 使用「內容定位」的方式去找資料

所以這篇文章將會用簡單的方式帶讀者了解

  1. 什麼是網路傳輸協定
  2. 中心化儲存系統與分散式儲存系統的差別
  3. 什麼是內容定位
  4. IPFS 的遠大目標

正式開始…

Now: 中心化儲存的世界

以上單位皆儲存大量資訊

正常來說,所有公司都會有自己的資料庫,這些資料庫可能是自己架的,也可能是用 GCP, AWS等等服務去儲存。

這些公司保有存取權,可以隨時對資料取用、更改,在某種程度上算是保有一定的彈性以及效率,但當控制權太過集中,就會有人開始有別的疑慮,我在這邊舉幾個例子。

資料控制權過於集中產生問題的案例

一、土耳其封鎖維基百科事件

說是因為反恐所以封鎖,過程如下圖

2019 年 12 月 26 日,土耳其憲法法院裁定,土耳其政府對維基百科的封鎖侵犯了公民的言論自由。

2020 年 1 月 15 日,土耳其政府解除了對維基百科的封鎖。

說封就封,這是權力太集中的一次案例。

二、Google體系網站當機

這個案例大家應該比較有感了,這是今年 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

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

各位現在知道 URL怎麼運作的,我們會先找伺服器在哪,再看他的 port,再看它開了什麼 API,最後再執行我們要的動作。其實不難看出它是以「地址定位」的方式去找資料的。

其實現在這種做法真的已經非常方便了,但這篇既然是要寫 IPFS 的好處,不免就要寫一下 HTTP 的壞處。

所以結合一開始提到的中心化儲存,有哪些壞處,我們來盤點一下:

HTTP 弱勢

  1. HTTP 中心化儲存在某種程度上是很低效率的。
    使用 HTTP 協議每次需要從中心化的服務器下載完整的文件 (網頁、影片、圖片等),速度慢、效率低。
  2. Web 文件經常被刪除。
    數據顯示,HTTP 頁面生存週期平均只有 100 天,這是因為儲存成本高、而且無法永久保存。
  3. 中心化在某種程度上限制了 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。

圖片取自cryptoitunes.com

對沒錯,IPFS 開發團隊與 Filecoin 團隊是一樣的,考慮到文長,這就留到之後說吧!

結論

IPFS不只想加速 Web,它的最終目標實為取代 HTTP

本文不構成投資建議,虛擬貨幣波動大請謹慎小心

掌握虛擬貨幣、區塊鏈大小事