'精通IPFS系列之一:IPFS入門簡介'

數據結構 瀏覽器 DNS Links P2P理財 鏈得得APP 2019-08-07
"

摘要: 精通IPFS系列之一:IPFS入門簡介,包括IPFS是什麼、Merkle DAG、節點和網絡模型,以及協義棧。

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系列之一:IPFS入門簡介,包括IPFS是什麼、Merkle DAG、節點和網絡模型,以及協義棧。

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系列之一: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 中,通過路由系統)。 這是一種在互聯網上分配可變名稱的平等主義方式,沒有任何集中化或證書頒發機構。

參考命名規範。

作者:喬瘋,加密貨幣愛好者,ipfs 愛好者,黑螢科技CTO。

(作者:黑螢科技,內容來自鏈得得內容開放平臺“得得號”;本文僅代表作者觀點,不代表鏈得得官方立場)

"

相關推薦

推薦中...