IPFS powers the Distributed Web
A peer-to-peer hypermedia protocol
designed to preserve and grow humanity's knowledge
by making the web upgradeable, resilient, and more open.
「IPFS」星際檔案系統 (InterPlanetary File System) 是一個分佈式的網路傳輸協議,提共速度更快、更加安全,並且更加開放的檔案儲存及檢索服務。IPFS本質上是一種內容可尋址、版本化、點對點超媒體的分布式存儲、傳輸協議,目標是補充甚至取代過去20年裡使用的超文本媒體傳輸協議(HTTP),希望構建更快、更安全、更開放的網際網路時代。
IPFS 協議為針對傳統互聯網 HTTP協議的缺陷所提出的peer-to-peer的hypermeaida(超媒體)協議。如:
Today's web is inefficient and expensive
HTTP的中心化是低效的,並且成本很高:HTTP 協議每次需要從中心化的服務器下載完整的檔案 (網頁、視頻、圖片等),速度慢、效率低。如果改用 P2P 的方式下載,可以節省近 60% 的帶寬。P2P 將檔案分割為小的塊,從多個服務器同時下載,速度非常快。
Today's web can't preserve humanity's history
定址(addressing)檔案系統的檔案刪除後不復存在: 由於存儲及維護成本太重,無法永久保存,網路檔案經常會被移除、刪除。而IPFS 提供了檔案的歷史版本回溯功能 (就像 git 版本控制工具一樣),可以很容易的查看檔案的歷史版本,數據可以得到永久保存。
Today's web is centralized, limiting opportunity
去中心化:現有互聯網是一個高度中心化的網絡,中心化限制了web的成長,例如: 互聯網管制,中心化服務器宕機、互聯網封鎖、管制、監控等等,這些都源於互聯網的中心化。而分佈式的 IPFS 可以克服這些缺點。
Today's web is addicted to the backbone
IPFS 支持創建多樣化的彈性網絡,以實現持久可用性——無論有沒有互聯網骨幹網連接。 這意味著為發展中國家提供更好的連接,在自然災害期間,或者當你在咖啡店的 wi-fi 上網時。
How IPFS works
當您將文件添加到 IPFS 時,您的文件會被拆分為更小的塊,經過加密散列,並被賦予一個稱為內容標識符 (CID) 的唯一指紋。該 CID 充當您文件的永久記錄,因為它在那個時間點存在。
當其他節點查找您的文件時,它們會詢問其對等節點誰存儲了文件 CID 所引用的內容。當他們查看或下載您的文件時,他們會緩存一個副本——並成為您內容的另一個提供者,直到他們的緩存被清除。
節點可以固定內容以永久保留(和提供)它,或者丟棄一段時間未使用的內容以節省空間。這意味著網絡中的每個節點只存儲它感興趣的內容,以及一些有助於確定哪個節點存儲什麼的索引信息。
如果您將文件的新版本添加到 IPFS,它的加密哈希是不同的,因此它會獲得一個新的 CID。這意味著存儲在 IPFS 上的文件可以抵抗篡改和審查——對文件的任何更改都不會覆蓋原始文件,並且可以重複使用跨文件的公共塊,以最大限度地降低存儲成本。
但是,這並不意味著您需要記住一長串 CID——IPFS 可以使用 IPNS 分散命名系統找到您文件的最新版本,並且 DNSLink 可用於將 CID 映射到人類可讀的 DNS 名稱。
IPFS 工作原理的三個基本原則
通過內容尋址的唯一標識:
集中式網絡和分散式網絡之間的主要區別之一是識別和檢索各自的數據/信息。在集中式網絡上,通過 URL(或 URI)的位置尋址用於識別和“定位”數據。另一方面,去中心化網絡使用內容尋址通過唯一的內容標識符 - CID - 從各種來源(對等點和/或節點)檢索數據。
內容標識符 - CID 是為 IPFS 開發的一種特殊形式的內容尋址。它是一個單一標識符,同時包含加密哈希(打開新窗口)和編解碼器,保存有關如何解釋數據的信息。使用加密散列,任何對相同數據使用相同算法的人都將獲得相同的散列。對於上下文,IPFS 中的大多數內容使用 sha2-256 算法進行散列。
內容標識符不指示數據的存儲位置。然而,它根據數據的底層內容形成一種地址。
通過有向無環圖 Directed Acyclic Graphs (DAG) 鏈接內容:
數據是從去中心化網絡中的對等方訪問的,而不是從中央機構訪問。從高級概述來看,圖是一種數學抽象,用於表示對象集合之間的關係。我們使用節點來指代圖中的一個對象,使用邊來指代對象之間的關係。
DAG 是一個compound word。
有向圖(Directed Graphs):如果每條邊都有某種方向性,則稱該圖是有向圖。節點之間的連接僅在一個方向上正確關聯,並且單頭箭頭指示該方向。我們使用像祖先、後代、父母和孩子這樣的系譜術語來指代有向圖中的節點。
無環圖(Acyclic Graphs):無環圖在圖中沒有環。這意味著無法沿著圖的邊緣從該節點導航回自身。
有向無環圖(Directed Acyclic Graphs - DAG):稱為有向無環圖。
通過分佈式哈希表 (DHT) 發現內容
分佈式哈希表 - DHT 是用於將鍵映射到值的分佈式系統。在 IPFS 中,DHT 用作內容路由系統的基本組件,並充當目錄和導航系統之間的交叉。
DHT 將用戶正在尋找的內容(CID)映射到實際存儲匹配內容的對等點。
使用 DHT 映射的鍵值對分為三種類型:
提供記錄 - 將數據標識符映射到已宣傳他們擁有該內容並願意為您提供的對等方。 IPFS 用於查找內容,IPNS over PubSub 用於查找 pubsub 主題的其他成員。
IPNS 記錄 - 將 IPNS 密鑰(公鑰的散列)映射到 IPNS 記錄。
對等記錄 - 將一個 peerID 映射到一組可以到達對等點的多個地址。當我們知道有內容的對等方,但不知道其地址和手動連接時,由 IPFS 使用,例如:ipfs swarm connect/p2p/Qmxyz...
以下是一些學習資源,可幫助您深入了解 IPFS:
ProtoSchool
IPFS YouTube 頻道
IPFS文件
https://ipfs.io/