Loading AI tools
一種基於P2P協定的檔案系統 来自维基百科,自由的百科全书
星際檔案系統(InterPlanetary File System,縮寫為IPFS)是一個旨在實現檔案的分散式儲存、共用和持久化的網絡傳輸協定。[3]它是一種內容可定址的對等超媒體分發協定。在IPFS網絡中的節點構成一個分散式檔案系統。它是一個開放原始碼專案,自2014年開始由協定實驗室在開源社區的幫助下發展。[4]其最初由Juan Benet設計。[5]
![]() | 此條目翻譯自英語維基百科,需要相關領域的編者協助校對翻譯。 |
在2014年,IPFS協定是類似於比特幣區塊鏈協定的網絡基礎設施,有着儲存不可更改的數據的優勢,可以移除網絡上的冗餘檔案,取得儲存節點的地址資訊——以搜尋網絡中的檔案。[6]
目前的實現採用Go[7]和JavaScript[8],並有Python實現(上次提交時間2020年1月29日)。[9]Go實現被認為是開發正式規範時的「參考實現」[10][11]。
IPFS是一個對等的分散式檔案系統,它嘗試為所有計算裝置連接到同一個檔案系統。在某些方面,IPFS類似於萬維網,也可以被視作一個BitTorrent節點群、在同一個Git倉庫中交換對象。 換種說法,IPFS提供了一個高吞吐量、按內容定址的塊儲存模型,及與內容相關超連結。[12]這形成了一個廣義的Merkle有向無環圖(DAG)。IPFS結合了分散式雜湊表、鼓勵塊交換和一個自我認證的命名空間。IPFS沒有單點故障,並且節點不需要相互信任。[13]分散式內容傳遞可以節約伺服器頻寬,並防止HTTP方案可能遇到的DDoS攻擊。
該檔案系統可以通過多種方式訪問,包括FUSE與HTTP。將本地檔案添加到IPFS檔案系統後,其他用戶通過IPFS閘道器進行訪問。檔案表示基於其雜湊,因此有利於快取。檔案的分發採用一個類似BitTorrent的協定。其他檢視內容的用戶也有助於將內容提供給網絡上的其他人。
IPFS有一個稱為IPNS的名稱服務,可以繫結域名或者用戶公鑰,固定訪問的連結,但是訪問的內容可以更新。[14]
用戶通過ipfs閘道器上載檔案後,獲得檔案cid,再通過cid在ipfs閘道器訪問檔案,訪問者可以無需安裝客戶端。
ipfs官方提供了一個閘道器,同時也有用戶自行搭建的閘道器,ipfs官方的閘道器在中國大陸地區已經被封鎖。
部分瀏覽器內建ipfs的支援,可以使用閘道器或者本地節點訪問ipfs資源內容。
一個檔案如果沒有節點進行儲存,也會遺失,無法訪問。
NAT網絡內的一個節點內的檔案,其它閘道器很難訪問。
非熱門資源,儲存的節點過少,閘道器的訪問速度很慢。
每個Merkle都是一個有向無環圖 ,因為每個節點都通過其名稱訪問。每個Merkle分支都是其本地內容的雜湊,它們的子節點使用它們的雜湊而非完整內容來命名。因此,在建立後將不能編輯節點。這可以防止迴圈(假設沒有雜湊碰撞),因為無法將第一個建立的節點連結到最後一個節點從而建立最後一個參照。
對任何Merkle來說,要建立一個新的分支或驗證現有分支,通常需要在本地內容的某些組合體(例如列表的子雜湊和其他位元組)上使用一種雜湊演算法。IPFS中有多種雜湊演算法可用。
輸入到雜湊演算法中的數據的描述見 https://github.com/ipfs/go-ipfs/tree/master/merkledag。