IPFS(InterPlanetary File System)是一個分散式系統,用於點對點的內容儲存和傳輸。與傳統的網路服務商不同,該系統是去中心化的,不受任何中心化機構控制。任何人都可以參與到該系統中,成為節點,並貢獻自己計算設備中的閒置內存,用於儲存和分享內容(文件)。
例如,當你在維基百科上搜尋某個術語時,你的電腦會要求維基百科的中心化伺服器把相關內容分享給你。而在 IPFS,你的電腦會問其他的電腦設備,請他們把內容分享給你。
IPFS 由 Protocol Labs 在 2015 年創立。其致力於建構一個系統,連結各個地方甚至是星際宇宙。這也是 IPFS 名字的由來。
內容檢索(Content Addressing)是一種透過內容本身而非位置來進行檢索的檢索方式。延續前文的例子,當你在TokenInsight 中搜尋「比特幣」時,瀏覽器會跳到一個特定的URL:https://tokeninsight.com/en/cryptocurrencies,也就是TokenInsight 上比特幣的幣種詳情頁面。而透過 IPFS,你的計算機會詢問其他計算設備誰擁有這個頁面,並請其他計算機將該頁面分享給你。這裡的內容可以是文件、網頁、應用程式或是 Metadata。
引用一個IPFS 官方的例子:當你想在圖書館找一本書,你通常會透過這本書的書名來尋找它,而不是透過擺放的位置。很少人會說:我想要那本放在二層一號書架第三排左邊的第四本。這樣如果這本書被挪動過,你就很難找到它了。
當使用者在IPFS 上傳內容時,該內容將會被標記上一個唯一標識(CID)並被儲存在節點上,然後系統會將內容傳播到整個網路(即儲存在多個網路節點中) 。為了確保網路的速度,IPFS 可能會將上傳的內容分成幾塊,並且每一個都標記上 CID,單獨保存。然後系統會使用一種叫 Merkle DAG 的資料結構,將這些資料進行關聯、整理。
如果使用者想要尋找特定內容,可以搜尋對應的 CID,然後系統會找到哪個參與者擁有該內容,並要求其將內容交付給請求方。
IPFS 的內容擷取是透過Content Identifier( CID)來實現的。 IPFS 網路中每一個檔案/子檔案都會有一個專屬的 ID,即 CID。 CID 是每個檔案資訊的哈希,來自內容本身。因此,相同的內容會產生相同的 CID,而內容的任何變動都會直接反映到 CID 上。
IPFS 預設使用 sha-256 哈希演算法,但也支援許多其他的演算法。
為將網路中的 CID 進行結構化整理/處理,IPFS 使用了 Merkle DAG 資料結構。 Merkle DAG 全稱為 Merkle Directed Acyclic Graph,源自 DAG。
什麼是 Merkle DAG?
我們可以將 Merkle DAG 拆分為四個字。首先 Graph 是指用來表示不同物件之間關係的圖表,包含物件(也叫作節點)和邊。而 Directed 是指方向,每一邊都有一個方向,指向下一個物件。 Acyclic 表示圖表中沒有循環,每個物件都不會指向先前的物件。 DAG 的中文為有向無環圖。 Merkle DAG 是 DAG 中的一種。在 Merkle DAG 中每一個物件都有一個專屬的 ID,也就是內容的雜湊。
為確保網路的運作速度,IPFS 會將使用者上傳的內容(檔案)分割成小塊/子檔案(例如:256KB 每塊),每一個小塊存放在一個區塊中,然後用Merkle DAG 來連接各個區塊。 Merkle DAG 可用來展現各內容與其子文件的關係,甚至用來給文件分類(類似資料夾和文件)。
Merkle DAG 的特性:
在IPFS上,使用者可以透過Distributed Hash Table(分散式散列表)來尋找標的內容,也就是誰擁有你想要的內容,他的位置在哪。
Hash Table 是指一個由 key 和 value 組成的資料庫,每一個 value 都有一個唯一對應的 key,因此使用者可以透過 key 來尋找 value。這裡的 key 可以理解為 CID,value 可以理解為內容。 Distributed Hash Table 是指系統中有多個參與者,每個參與者都有一個 Hash Table,使用者可以查看參與者的 Hash Table 來尋找想要的內容。
Distributed Hash Table 適用於在大量資料中尋找信息,因為每個key 格式一致,並且每個參與者都會將資料進行分類以提高資料擷取的效率。
當使用者定位了他們想要的目標內容後,他們會與該參與者的計算設備建立聯繫,並獲得目標內容(該過程將透過 IPFS 上的 Bitswap 模組完成)。收到目標檔案後,使用者可透過比對收到內容和目標內容的 CID 來確認是否一致。
目前,已經有部分web3 專案使用IPFS 作為其儲存基礎設施,橫跨各個領域,例如Filecoin(儲存服務商)、Audius(去中心化音樂服務商)、Pinata(NFT 託管服務商)、OpenBazaar(點對點電子商務平台)、Morpheus.Network (供應鍊網路服務商)等。
你可能也對以下內容感興趣:
- 什麼是 Arweave?
- 什麼是分散式帳本?