IPFS(星際文件系統)
星際文件系統(InterPlanetary File System,縮寫為IPFS)是一個旨在實現文件的分布式存儲、共享和持久化的網絡傳輸協議[1]。它是一種內容可尋址的對等超媒體分發協議,用於在分布式哈希表中存儲和共享數據。通過使用內容尋址,IPFS 在連接 IPFS 主機的全局命名空間中唯一標識每個文件,從而創建了一個彈性的文件存儲和共享系統。
在 IPFS 網絡中的節點構成一個分布式文件系統。它是一個開放原始碼項目,自 2014 年開始由協議實驗室在開源社區的幫助下發展。其最初由 Juan Benet 設計[2]。IPFS 允許用戶以類似於 BitTorrent 的方式託管和接收內容。與以中央伺服器為中心的傳統協議(如 HTTP 和 HTTPS)相反,IPFS 圍繞用戶運營商的去中心化系統構建,這些運營商持有部分總體數據。網絡中的任何用戶都可以通過其內容地址提供文件,網絡中的其他對等節點可以使用分布式哈希表 (DHT) 從擁有該文件的任何節點查找和請求該內容。
與傳統的基於位置的協議(如 HTTP 和 HTTPS)相比,IPFS 使用基於內容的尋址來提供一種去中心化的替代方案來分發全球資訊網。IPFS 用於去中心化應用程式和內容存檔。
開發者 | Protocol Labs |
---|---|
當前版本 | 0.32.1(2024年11月15日;穩定版本) |
原始碼庫 | github.com/ipfs/kubo |
程式語言 | 協議實現:Go(參考實現)、JavaScript、C語言、Python
客戶端庫:Go、Java、JavaScript、Python、Scala、Haskell、Swift、Common Lisp、Rust、Ruby、PHP、C♯、Erlang |
作業系統 | FreeBSD、Linux、macOS、Windows |
語言 | Go、JavaScript、Python |
類型 | 協議、分布式文件系統、內容分發網絡 |
許可協議 | MIT許可證 |
網站 | ipfs.tech |
發展歷程 編輯
IPFS 由 Juan Benet 創建,他於2014年5月後來創立了 Protocol Labs。Alpha 版本於2015年2月推出,同年10月被 TechCrunch 描述為「通過口口相傳迅速傳播」。網絡服務提供商 Cloudflare 於2018年開始使用 IPFS,並於2022年在系統中推出了自己的網關。
IPFS 協議是類似於比特幣區塊鏈協議的網絡基礎設施,有著存儲不可更改的數據的優勢,可以移除網絡上的冗餘文件,獲取存儲節點的地址信息——以搜索網絡中的文件。
目前的實現採用 Go 和 JavaScript,並有 Python 實現(上次提交時間2020年1月29日)。Go實現被認為是開發正式規範時的「參考實現」[3]。
2020年3月,Opera 瀏覽器通過在 IPFS 中託管內容,提供了對 Unstoppable Domains 提供商的集中資源的訪問。
2021年1月19日,Brave 瀏覽器宣布從 1.19 版本開始,將默認支持 IPFS。這意味著 Brave 成為首個將 IPFS 集成到瀏覽器中的瀏覽器。
概述 編輯
星際文件系統 (InterPlanetary File System,簡稱 IPFS) 是一種去中心化的協議、超媒體和點對點 (P2P) 網絡,用於分布式文件存儲和共享。通過使用內容尋址,IPFS 在連接 IPFS 主機的全局命名空間中唯一標識文件,創建了一個超媒體系統,可實現高效可靠的數據分發。
IPFS 允許用戶以類似於 BitTorrent 的方式託管和接收內容。與以中央伺服器為中心的傳統協議(如 HTTP 和 HTTPS)相反,IPFS 圍繞用戶運營商的去中心化系統構建,這些運營商持有部分總體數據,從而創建了一個彈性的文件存儲和共享系統。網絡中的任何用戶都可以通過其內容地址提供文件,網絡中的其他對等節點可以使用分布式哈希表 (DHT) 從擁有該文件的任何節點查找和請求該內容。與 BitTorrent 不同,IPFS 旨在創建一個單一的全球網絡。這意味著,如果兩個用戶發布具有相同哈希值的數據塊,則從一個用戶下載內容的對等節點也將與從第二個用戶下載內容的對等節點交換數據。
IPFS 的關鍵特性包括:
- 基於內容尋址的文件存儲: 每個文件都根據其內容哈希進行唯一標識,確保數據完整性並促進高效檢索。
- 點對點架構: 分布式節點網絡促進了直接文件共享,無需中央伺服器。
- 版本控制文件系統: 支持文件版本控制,允許用戶跟蹤隨時間推移的變化。
- 與分布式應用程式的互操作性: IPFS 與去中心化應用程式 (dApp) 無縫集成,為區塊鏈和 Web3 生態系統提供了一個強大的存儲層。
IPFS 旨在通過使用可通過 HTTP 訪問的網關來取代用於靜態網頁交付的協議。用戶可以選擇不在其設備上安裝 IPFS 客戶端,而是使用公共網關。這些網關的列表在 IPFS GitHub 頁面上維護。
除了提供替代的網頁託管方式之外,IPFS 還廣泛用於去中心化應用程式、科學數據共享和內容存檔,作為新興去中心化網際網路的基礎層。
IPFS是一個對等的分布式文件系統,它嘗試為所有計算設備連接到同一個文件系統。在某些方面,IPFS類似於全球資訊網,也可以被視作一個BitTorrent節點群、在同一個Git倉庫中交換對象。 換種說法,IPFS提供了一個高吞吐量、按內容尋址的塊存儲模型,及與內容相關超連結。這形成了一個廣義的Merkle有向無環圖(DAG)。IPFS結合了分布式散列表、鼓勵塊交換和一個自我認證的命名空間。IPFS沒有單點故障,並且節點不需要相互信任。分布式內容傳遞可以節約伺服器帶寬,並防止HTTP方案可能遇到的DDoS攻擊。
該文件系統可以通過多種方式訪問,包括FUSE與HTTP。將本地文件添加到IPFS文件系統後,其他用戶通過IPFS網關進行訪問。文件表示基於其哈希,因此有利於緩存。文件的分發採用一個類似BitTorrent的協議。其他查看內容的用戶也有助於將內容提供給網絡上的其他人。
IPFS有一個稱為IPNS的名稱服務,可以綁定域名或者用戶公鑰,固定訪問的連結,但是訪問的內容可以更新。
Merkle數據格式 編輯
每個Merkle都是一個有向無環圖 ,因為每個節點都通過其名稱訪問。每個Merkle分支都是其本地內容的哈希,它們的子節點使用它們的哈希而非完整內容來命名。因此,在創建後將不能編輯節點。這可以防止循環(假設沒有哈希碰撞),因為無法將第一個創建的節點連結到最後一個節點從而創建最後一個引用。
對任何Merkle來說,要創建一個新的分支或驗證現有分支,通常需要在本地內容的某些組合體(例如列表的子哈希和其他字節)上使用一種哈希算法。IPFS中有多種散列算法可用[4]。
使用 編輯
用戶通過ipfs網關上傳文件後,獲得文件cid,再通過cid在ipfs網關訪問文件,訪問者可以無需安裝客戶端。
ipfs官方提供了一個網關,同時也有用戶自行搭建的網關,ipfs官方的網關在中國大陸地區已經被屏蔽。
部分瀏覽器內置ipfs的支持,可以使用網關或者本地節點訪問ipfs資源內容。
不足 編輯
一個文件如果沒有節點進行存儲,也會丟失,無法訪問。
NAT網絡內的一個節點內的文件,其它網關很難訪問。
非熱門資源,存儲的節點過少,網關的訪問速度很慢。
應用案例 編輯
- 2017年9月至10月間,舉辦的2017年加泰隆尼亞獨立公投,因被西班牙憲法法院認定違法而使網站被屏蔽。此後,加泰隆尼亞海盜黨將網站整個鏡像到IPFS上以迴避加泰隆尼亞高等法院的屏蔽命令。
- IPFS被用於建立維基百科的鏡像,讓那些住在維基百科被國家法律屏蔽的地方的人民能繼續訪問到維基百科的內容。不過那份被鏡像的維基百科是一份被限制改動的複製本且無法被更新。
- 文件幣也與IPFS有關,其是由Juan Benet和協議實驗室合作開發的一套基於IPFS的協作存儲雲。
- Cloudflare營運有一個分布式Web網關,使用戶可在無本地節點的情況下,簡化、加速且安全的訪問IPFS。
- IPLF是Dean Reynaud在2001年發表於「Data Science」的一篇開創性文章中創造的一個術語。[來源可靠?]
- 博客平台 Matters 發布的文章會自動被分布存儲到ipfs上,並生成唯一的文章指紋。此後文章無法被他人刪改,並可以在IPFS的公共節點上通過文章指紋被找到。
- Filecoin 是一種基於 IPFS 的協作存儲雲,也是由 Protocol Labs 創立的。
- Cloudflare 運行著一個分布式 Web 網關,以簡化、加速和保護對 IPFS 的訪問,而無需本地節點。
- 影子圖書館 Anna's Archive 和 Library Genesis 也通過 IPFS 提供書籍,使最大的在線圖書庫更加強大。
- 2018年,網際網路檔案館和 Protocol Labs 舉辦了一次去中心化網絡峰會,探索 IPFS 和其他技術在完全去中心化網際網路中的應用。2022年,網際網路檔案館探索將 Wayback Machine 數據放入 IPFS。
- Brave 使用 Origin Protocol 和 IPFS 託管其去中心化商品商店,並在 2021 年將其支持添加到其瀏覽器中。(對本地節點 IPFS 的支持已於 2024 年刪除)
- 適用於 Android 的 Opera 默認支持 IPFS,允許移動用戶瀏覽 ipfs:// 連結以訪問 IPFS 網絡上的數據。
惡意軟體 編輯
2018年7月以來,網絡釣魚攻擊也通過 Cloudflare 的 IPFS 網關進行分發。網絡釣魚詐騙 HTML 存儲在 IPFS 上,並通過 Cloudflare 的網關顯示。連接通過 Cloudflare TLS 證書顯示為安全。
2019年6月,IPStorm 殭屍網絡首次被檢測到,它使用 IPFS 可以在 IPFS 網絡的合法數據流中隱藏其命令和控制。安全研究人員之前已經研究出了使用 IPFS 作為殭屍網絡命令和控制系統的理論可能性。
參考連結 編輯
- ↑ The Inventors of the Internet Are Trying to Build a Truly Permanent Web | WIRED
- ↑ IPFS Documentation | IPFS Docs
- ↑ GitHub - ipfs/specs: Technical specifications for the IPFS protocol stack
- ↑ GitHub - ipfs/kubo: An IPFS implementation in Go