精通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數據結構格式
交換區塊傳輸和複製
路由定位對等體和對象
網路在對等體之間建立連接
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。
(作者:黑螢科技,內容來自鏈得得內容開放平台「得得號」;本文僅代表作者觀點,不代表鏈得得官方立場)


TAG:鏈得得APP |