星際文件系統

一種基於P2P協定的檔案系統

星際文件系統InterPlanetary File System,縮寫為IPFS)是一個旨在實現文件的分布式存儲、共享和持久化網絡傳輸協議[3]它是一種內容可尋址英語Content-addressable storage對等超媒體分發協議。在IPFS網絡中的節點構成一個分布式文件系統。它是一個開放源代碼項目,自2014年開始由協議實驗室英語Protocol Labs在開源社區的幫助下發展。[4]其最初由Juan Benet設計。[5]

星際文件系統
開發者Protocol Labs
當前版本
  • 0.32.1(2024年11月15日;穩定版本)[1]
編輯維基數據鏈接
源代碼庫github.com/ipfs/kubo
編程語言協議實現Go(參考實現)、JavaScriptC語言[2], Python
客戶端庫GoJavaJavaScriptPythonScalaHaskellSwiftCommon LispRustRubyPHPC♯Erlang
操作系統FreeBSDLinuxmacOSWindows
語言GoJavaScriptPython
類型協議、分佈式文件系統、內容傳遞網路
許可協議MIT許可證
網站ipfs.io

歷史

在2014年,IPFS協議是類似於比特幣區塊鏈協議英語Bitcoin protocol的網絡基礎設施,有着存儲不可更改的數據的優勢,可以移除網絡上的冗餘文件,獲取存儲節點的地址信息——以搜索網絡中的文件。[6]

目前的實現採用Go[7]JavaScript[8],並有Python實現(上次提交時間2020年1月29日)。[9]Go實現被認為是開發正式規範英語Specification (technical standard)時的「參考實現」[10][11]

描述

IPFS是一個對等的分布式文件系統,它嘗試為所有計算設備連接到同一個文件系統。在某些方面,IPFS類似於萬維網,也可以被視作一個BitTorrent節點群、在同一個Git倉庫中交換對象。 換種說法,IPFS提供了一個高吞吐量、按內容尋址的塊存儲模型,及與內容相關超連結[12]這形成了一個廣義的Merkle有向無環圖(DAG)。IPFS結合了分散式雜湊表、鼓勵塊交換和一個自我認證的命名空間。IPFS沒有單點故障,並且節點不需要相互信任。[13]分布式內容傳遞可以節約服務器帶寬,並防止HTTP方案可能遇到的DDoS攻擊。

該文件系統可以通過多種方式訪問,包括FUSEHTTP。將本地文件添加到IPFS文件系統後,其他用戶通過IPFS網關進行訪問。文件表示基於其哈希,因此有利於緩存。文件的分發採用一個類似BitTorrent的協議。其他查看內容的用戶也有助於將內容提供給網絡上的其他人。

IPFS有一個稱為IPNS的名稱服務,可以綁定域名或者用戶公鑰,固定訪問的鏈接,但是訪問的內容可以更新。[14]

使用

用戶通過ipfs網關上傳文件後,獲得文件cid,再通過cid在ipfs網關訪問文件,訪問者可以無需安裝客戶端。

ipfs官方提供了一個網關,同時也有用戶自行搭建的網關,ipfs官方的網關在中國大陸地區已經被屏蔽。

部分瀏覽器內置ipfs的支持,可以使用網關或者本地節點訪問ipfs資源內容。

不足

一個文件如果沒有節點進行存儲,也會丟失,無法訪問。

NAT網絡內的一個節點內的文件,其它網關很難訪問。

非熱門資源,存儲的節點過少,網關的訪問速度很慢。

Merkle數據格式

每個Merkle都是一個有向無環圖 ,因為每個節點都通過其名稱訪問。每個Merkle分支都是其本地內容的哈希,它們的子節點使用它們的哈希而非完整內容來命名。因此,在創建後將不能編輯節點。這可以防止循環(假設沒有哈希碰撞),因為無法將第一個創建的節點鏈接到最後一個節點從而創建最後一個引用。

對任何Merkle來說,要創建一個新的分支或驗證現有分支,通常需要在本地內容的某些組合體(例如列表的子哈希和其他字節)上使用一種哈希算法。IPFS中有多種散列算法可用。

輸入到散列算法中的數據的描述見 https://github.com/ipfs/go-ipfs/tree/master/merkledag

使用案例

  • 在2017年9月至10月間的舉辦的2017年加泰隆尼亞獨立公投,因被西班牙憲法法院認定違法而使網站被封鎖。此後,加泰隆尼亞海盜黨將網站整個鏡像到IPFS上以迴避加泰隆尼亞高等法院的封鎖命令。[15][16]
  • IPFS被用於建立維基百科的鏡像[17],讓那些住在維基百科被國家法律封鎖的地方的人民能繼續存取到維基百科的內容。[18]不過那份被鏡像的維基百科是一份被限制改動的複製本且無法被更新。
  • 文件幣也與IPFS有關,其是由Juan Benet和協議實驗室英語Protocol Labs合作開發的一套基於IPFS的協作存儲雲。[19]
  • Cloudflare營運有一個分佈式Web網關,使用戶可在無本地節點的情況下,簡化、加速且安全的訪問IPFS。[20]
  • IPLF是Dean Reynaud在2001年發表於「Data Science」的一篇開創性文章中創造的一個術語。[21][來源可靠?]
  • 博客平台 Matters 發布的文章會自動被分布存儲到ipfs上,並生成唯一的文章指紋。此後文章無法被他人刪改,並可以在IPFS的公共節點上通過文章指紋被找到。[22]

參見

參考資料

  1. ^ Release 0.32.1. 2024年11月15日 [2024年11月23日]. 
  2. ^ Agorise. c-ipfs: IPFS implementation in C. Why C? Think Bitshares' Stealth backups, OpenWrt routers (decentralize the internet/meshnet!), Android TV, decentralized Media, decentralized websites, decent... GitHub. 2017-10-23 [2017-10-25]. (原始內容存檔於2020-04-22). 
  3. ^ Finley, Kurt. The Inventors of the Internet Are Trying to Build a Truly Permanent Web. Wired. 2016-06-20 [2017-04-10]. (原始內容存檔於2020-12-15) (英語). 
  4. ^ The IPFS Project. [2015-09-11]. (原始內容存檔於2021-03-27). 
  5. ^ IPFS README - Who designed it?. GitHub. [2015-09-11]. (原始內容存檔於2020-11-11) (英語). 
  6. ^ 存档副本. [2017-04-10]. (原始內容存檔於2020-11-08). 
  7. ^ ipfs/kubo. GitHub. [2023-07-08]. (原始內容存檔於2023-08-17) (英語). 
  8. ^ ipfs/helia. GitHub. [2023-07-08]. (原始內容存檔於2023-07-22) (英語). 
  9. ^ ipfs-shipyard/py-ipfs. GitHub. [2017-02-13]. (原始內容存檔於2023-07-08) (英語). 
  10. ^ IPFS Docs. ipfs.io. [2017-02-13]. (原始內容存檔於2020-09-30) (英語). 
  11. ^ ipfs/specs. GitHub. [2017-02-13]. (原始內容存檔於2020-11-29) (英語). 
  12. ^ Ian Allison. Juan Benet of IPFS talks about Filecoin. 國際財經時報. 2016-10-13 [2016-12-26]. (原始內容存檔於2021-01-20) (英語). 
  13. ^ The IPFS Project - How it works. [2015-09-11]. (原始內容存檔於2021-03-27) (英語). 
  14. ^ Publishing IPNS names. IPFS Docs. [2023-07-08]. (原始內容存檔於2023-07-09). 
  15. ^ Balcell, Marta Poblet. Inside Catalonia's cypherpunk referendum. Eureka Street. 2017-10-05 [2020-06-14]. (原始內容存檔於2018-11-05) (英語). 
  16. ^ Hill, Paul. Catalan referendum app removed from Google Play Store. Neowin. 2017-09-30 [2017-10-06]. (原始內容存檔於2020-11-01) (英語). 
  17. ^ ipfs. distributed-wikipedia-mirror. github. [2024-08-21]. (原始內容存檔於2024-08-30). 
  18. ^ Dale, Brady. Turkey Can't Block This Copy of Wikipedia. Observer Media. 2017-05-10 [2017-12-20]. (原始內容存檔於2017-10-18) (英語). 
  19. ^ Johnson, Steven. Beyond the Bitcoin Bubble. The New York Times. 2018-01-16 [2018-09-26]. (原始內容存檔於2021-12-21) (英語). 
  20. ^ Orcutt, Mike. A big tech company is working to free the internet from big tech companies. MIT Technology Review. 2018-10-05 [2020-04-21]. (原始內容存檔於2021-01-26) (英語). 
  21. ^ 深入了解IPFS :什麼是IPLF無際鏈. 萬鏈之家. 2021-01-03 [2021-01-03]. [失效連結]
  22. ^ 許明恩. Matters 透過 IPFS 讓內容永存網路. 區塊勢. 2018-11-06 [2021-06-15]. (原始內容存檔於2021-06-16). 

外部連結