精通IPFS:IPFS入門簡介

1、IPFS 是什麼

IPFS 是一個可快速索引的版本化的點對點文件系統。

IPFS是一個協議

定義了基於內容的尋址文件系統

協助內容分發

結合了分佈式哈希、p2p傳輸、版本管理系統

IPFS是一個文件系統

有文件夾和文件

可掛載文件系統(通過 FUSE)

IPFS是一個web

可以像 web 那樣查看文檔

可能通過 https://ipfs.io/ 訪問文件

瀏覽器或擴展可以直接支持 ipfs:/ 或者 dweb:/ipfs/

基於哈希確保內容真實性

IPFS是個模塊化

通過任何網絡協議的連接層

路由層,尋找/定位文件所在位置

使用路由層的 DHT (kademlia/coral)

使用基於路徑的命名服務

使用 bittorrent-inspired 的區塊交換

IPFS 使用加密

加密哈希內容尋址

區塊級的去重

文件完整性和版本控制

文件系統級的加密和簽名支持

IPFS是一個p2p系統

世界範圍內的 p2p 文件傳輸網絡

完全分散的架構

沒有單點失效問題

IPFS天生是一個CDN

文件添加到本地文件系統,將會在全世界可用

緩存友好(內容哈希命名)

基於 bittorrent 的帶寬管理

IPFS有一個命名服務

IPNS,一個受SFS啓發的名稱系統

基於PKI的全局命名空間

有助於建立信任鏈

與其他NSes兼容

可以將DNS,.onion,.bit等映射到IPNS

2、Merkle DAG

IPFS 的核心是 MerkleDAG,一個有向無環圖,其鏈接是哈希。 這爲 IPFS 中的所有對象提供了有用的屬性:

認證可以對內容進行哈希處理並根據鏈接進行驗證

持久化一旦獲取,對象可以永久緩存

通用任何數據結構都可以表示爲merkledag

分佈式對象可以由任何人創建,沒有集中的編寫者

IPFS 是一個網絡協義棧,用於組織代理網絡以創建,發佈,分發,提供和下載merkledag。 它是經過身份驗證的,分散的,永久性的網絡。
3、節點和網絡模型

IPFS網絡使用基於身份的 PKI。 IPFS 節點是一個可以查找、發佈和複製 merkledag 對象的程序。 其身份由私鑰定義。 特別:

privateKey, publicKey := keygen()

nodeID := multihash(publicKey)

3.1、multihash和可升級的哈希

IPFS 中的所有哈希都使用 multihash 進行編碼,multihash 是一種自描述哈希格式。使用的實際哈希函數取決於安全性要求。IPFS的密碼系統是可升級的,這意味着當哈希函數被破壞時,網絡可以轉移到更強的哈希值。
目前 IPFS 節點必須支持:

sha2-256

sha2-512

sha3

4、協義棧

IPFS 有一個模塊化的協義棧,每一個模塊都有多種實現,全部在不同的模塊中。 此規範僅解決層之間的接口,並簡要提及可能的實現。 詳細信息留待其他規格。
IPFS 有5層:

命名自我認證的PKI命名空間(IPNS)

merkledag數據結構格式

交換區塊傳輸和複製

路由定位對等體和對象

網絡在對等體之間建立連接

IPFS 協義棧
4.1 網絡層

網絡層在網絡中的任何兩個 IPFS 節點之間提供點對點傳輸。 它處理:

NAT遍歷

支持多種傳輸

支持加密,簽名或清除通信

多路複用

具體參考 libp2p。
4.2、路由

路由層有兩個重要的目標:

節點路由發現其他的節點

內容路由發現發佈到 IPFS 上的數據

路由系統是一種滿足各種實現的接口。 例如:

DHTs

mdns

snr

dns

具體參考 libp2p。
4.3、區塊交換

區塊交換負責協商批量數據傳輸。 一旦節點彼此瞭解,並且連接,交換協議就會控制內容尋址塊的傳輸方式。
區塊交換是一種滿足各種實現的接口。 例如:

Bitswap

HTTP

4.4、Merkledag

理解數據。merkledag 數據結構是:
message MDagLink {

bytes Hash = 1; // multihash of the target object

string Name = 2; // utf string name. should be unique per object

uint64 Tsize = 3; // cumulative size of target object

}
message MDagNode {

MDagLink Links = 2; // refs to other objects

bytes Data = 1; // opaque user data

}

參考 merkledag 規範和路徑解析規範。
4.5、命名-PKI命名空間和可變指針

IPFS 主要關注內容尋址數據,這些數據本質上是不可變的:更改對象會改變其哈希值,從而改變其地址,使其成爲一個完全不同的對象。 (將其視爲寫時複製文件系統)。
IPFS命名層(或 IPNS )處理以下內容的創建:

可變指向對象的指針

人類可讀的名字

IPNS基於SFS。 它是PKI命名空間,名稱只是公鑰的哈希。 控制私鑰的人控制名稱。記錄由私鑰簽名並分佈在任何地方(在 IPFS 中,通過路由系統)。 這是一種在互聯網上分配可變名稱的平等主義方式,沒有任何集中化或證書頒發機構。
參考命名規範。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章