IPFS (1) 初步简介
1. 定義
IPFS InterPlanetary File System 是基于P2P的分布式文件存儲系統。
| 尋址方式 | 位置尋址 一維尋址,低效、脆弱 內容尋址 | 多維尋址,高效、穩定 |
| 效率 | 低效 | 高效 |
| 穩定性 | 脆弱 | 穩定 |
| 開放性 | 封閉、壟斷 | 開放、共享 |
2. IPFS介紹
IPFS 結合了 Git,BitTorrent,Kademlia,SFS 和 Web 的優勢,提供跟 HTTP web 一樣簡單的接口。
IPFS 分為 3 個代碼庫:
github.com/ipfs/ipfs - IPFS 規范
github.com/ipfs/go-ipfs - Go 實現
github.com/protocol/ipfs-webui - Web 工作臺
它嘗試為所有計算設備連接同一個文件系統。在某些方面,IPFS類似于萬維網,也可以被視作一個獨立的BitTorrent群、在同一個Git倉庫中交換對象。換種說法,IPFS提供了一個高吞吐量、按內容尋址的塊存儲模型,及與內容相關超鏈接。這形成了一個廣義的Merkle有向無環圖(DAG)。IPFS結合了分布式散列表、鼓勵塊交換和一個自我認證的名字空間。IPFS沒有單點故障,并且節點不需要相互信任。分布式內容傳遞可以節約帶寬,和防止HTTP方案可能遇到的DDoS攻擊。
該文件系統可以通過多種方式訪問,包括FUSE與HTTP。將本地文件添加到IPFS文件系統可使其面向全世界可用。文件表示基于其哈希,因此有利于緩存。文件的分發采用一個基于BitTorrent的協議。其他查看內容的用戶也有助于將內容提供給網絡上的其他人。IPFS有一個稱為IPNS的名稱服務,它是一個基于PKI的全局名字空間,用于構筑信任鏈,這與其他NS兼容,并可以映射DNS、.onion、.bit等到IPNS。
3. Merkle數據格式
每個Merkle都是一個有向無環圖 ,因為每個節點都通過其名稱訪問。每個Merkle分支都是其本地內容的哈希,它們的子節點使用它們的哈希而非完整內容來命名。因此,在創建后將不能編輯節點。這可以防止循環(假設沒有哈希碰撞),因為無法將第一個創建的節點鏈接到最后一個節點從而創建最后一個引用。
對任何Merkle來說,要創建一個新的分支或驗證現有分支,通常需要在本地內容的某些組合體(例如列表的子哈希和其他字節)上使用一種哈希算法。
【參考】
[1] “IPFS 官網”
[2] 星際文件系統 wiki
總結
以上是生活随笔為你收集整理的IPFS (1) 初步简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: IPFS (2) 系统技术架构