星際檔案系統

星際檔案系統

星際檔案系統是一個旨在創建持久且分散式存儲和已分享檔案的網路傳輸協定。它是一種內容可定址的對等超媒體分發協定。在IPFS網路中的節點將構成一個分散式檔案系統。它是一個開放原始碼項目,自2014年開始由Protocol Labs在開源社區的幫助下發展。其最初由Juan Benet設計。

特點簡介

IPFS(InterPlanetary File System,星際檔案系統)是一個將現有的成功系統分散式哈希表(Distributed Hash Tables (DHTs))、BitTorrent、版本控制系統Git、自認證檔案系統(Self-Certified Filesystems - SFS)與區塊鏈相結合的檔案存儲和內容分發網路協定。這些系統的綜合優勢給它帶來的顯著特性:

1.永久的、去中心化保存和已分享檔案 (區塊鏈模式下的存儲DHTs)

2.點對點超媒體:P2P 保存各種各樣類型的數據(BitTorrent)

3.版本化:可追溯檔案修改歷史(Git - Merkle DAG默克爾有向無環圖))

4.內容可定址:通過檔案內容生成獨立哈希值來標識檔案,而不是通過檔案保存位置來標識。相同內容的檔案在系統中只會存在一份,節約存儲空間

歷史

在2014年,IPFS協定利用比特幣區塊鏈協定和網路基礎設施的優勢來存儲不可更改的數據,移除網路上的重複檔案,以及獲取存儲節點的地址信息——用以搜尋網路中的檔案。

當前的實現採用Go和JavaScript,並有Python的實現正在發展。Go實現被認為是開發正式規範時的“參考實現”。

描述

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

該檔案系統可以通過多種方式訪問,包括FUSE與HTTP。將本地檔案添加到IPFS檔案系統可使其面向全世界可用。檔案表示基於其哈希,因此有利於快取。檔案的分發採用一個基於BitTorrent的協定。其他查看內容的用戶也有助於將內容提供給網路上的其他人。IPFS有一個稱為IPNS的名稱服務,它是一個基於PKI的全局名字空間,用於構築信任鏈,這與其他NS兼容,並可以映射DNS、.onion、.bit等到IPNS。

Merkle數據格式

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

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

實現過程

IPFS是8個元素的組合:(每個對等節點的)身份+(管理與其他對等點的連線的)網路+(定位對等點和存儲對象需要的信息的)路由(分散式哈希表)+數據交換(BitTorrent)+(可定址又不可篡改)Merkle-DAG + (版本控制)GIT+命名(自我認證檔案系統)+ 應用程式(Web)。

每個節點採用nodeID作為身份識別,節點存儲著公鑰和加密過的私鑰,技術上使用基於S/Kademlia和Coral的分散式鬆散哈希表DSHT來尋找匹配的節點和特定節點的地址信息,小值(等於或小於1KB)直接存儲在DHT上生成一個NodeID,對於更大的值,IPFS會拆成小塊,DHT存儲擁有這些塊的節點NodeIds。

數據交換使用基於BitTorrent的BitSwap協定來傳送和接收分散式數據區塊。BitSwap 維持著兩個列表,想要獲得的塊和已保存的塊。但與 BitTorrent 不同的是,BitSwap 不限於一個torrent中的塊。BitSwap 節點可以從整個IPFS網路獲取所需的塊,而不管這些塊屬於哪些檔案,這大大提高了下載效率。同時,網路中存在一些激勵節點會主動快取和傳播稀有的檔案片段。

DHT 和 BitSwap 技術讓 IPFS形成一個用於快速而強大的存儲和分發塊的 P2P 系統。在此之上,IPFS還構建了一種有向無環圖 Merkle DAG,使用嵌入數據源中的目標哈希散列構建對象之間的連結。Merkle DAGs 為IPFS提供了許多有用的屬性,包括:

1.內容定址:所有內容(包括連結)都由其多哈希校驗和進行獨立標識

2. 防篡改:所有內容都使用其校驗和進行驗證。如果數據被篡改或損壞,則IPFS會檢測到該數據。

3. 去冗餘:所有內容完全相同的對象,只存儲一次。

IPFS並不會要求每一個節點都存儲所有的內容,節點的所有者可以自由選擇想要維持的數據,在備份了自己的數據之外,自願的為其他的關注的內容提供服務。(數據的保存是Pinning,是將檔案長期保留在本地)

如果IPFS得以普及,節點數達到一定規模,即使每個節點只存放一點點內容,所累計的空間、頻寬和可靠性( 共享模式)將超過HTTP以中心伺服器傳輸的模式。

顯然,整個系統要正常運行起來,除了需要有大量人參與外,還得避免出現BT中很多人不願意做種的問題,代幣Filecoin(FIL)就是為了獎勵“礦工”,礦工負責貢獻存儲和數據檢索服務,讓IPFS網路真是的變得實用起來,而需要儲存服務的用戶需要為服務購買和支付代幣。(FIL的作用類似玩客幣WKC或流量礦石LLT)

相關詞條

熱門詞條

聯絡我們