IPFS一般指星際檔案系統,
星際檔案系統是一個旨在創建持久且分布式存盤和共享檔案的網路傳輸協議,
它是一種內容可尋址的對等超媒體分發協議,
在IPFS網路中的節點將構成一個分布式檔案系統,
它是一個開放源代碼專案,自2014年開始由Protocol Labs在開源社區的幫助下發展,
其最初由Juan Benet設計,
IPFS星際檔案系統的特點簡介
IPFS(InterPlanetary File System,星際檔案系統)是一個將現有的成功系統分布式哈希表(Distributed Hash Tables (DHTs))、BitTorrent、版本控制系統Git、自認證檔案系統(Self-Certified Filesystems - SFS)與區塊鏈相結合的檔案存盤和內容分發網路協議,這些系統的綜合優勢給它帶來的顯著特性:
1.永久的、去中心化保存和共享檔案 (區塊鏈模式下的存盤DHTs),
2.點對點超媒體:P2P 保存各種各樣型別的資料(BitTorrent),
3.版本化:可追溯檔案修改歷史(Git - Merkle DAG默克爾有向無環圖)),
4.內容可尋址:通過檔案內容生成獨立哈希值來標識檔案,而不是通過檔案保存位置來標識,相同內容的檔案在系統中只會存在一份,節約存盤空間,
IPFS星際檔案系統的歷史
在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,
IPFS星際檔案系統Merkle資料格式
每個Merkle都是一個有向無環圖,因為每個節點都通過其名稱訪問,每個Merkle分支都是其本地內容的哈希,它們的子節點使用它們的哈希而非完整內容來命名,因此,在創建后將不能編輯節點,這可以防止回圈(假設沒有哈希碰撞),因為無法將第一個創建的節點鏈接到最后一個節點從而創建最后一個參考,
對任何Merkle來說,要創建一個新的分支或驗證現有分支,通常需要在本地內容的某些組合體(例如串列的子哈希和其他位元組)上使用一種哈希演算法,IPFS中有多種散列演算法可用,
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.內容尋址:所有內容(包括鏈接)都由其多哈希校驗和進行獨立標識
-
防篡改:所有內容都使用其校驗和進行驗證,如果資料被篡改或損壞,則IPFS會檢測到該資料,
-
去冗余:所有內容完全相同的物件,只存盤一次,
IPFS并不會要求每一個節點都存盤所有的內容,節點的所有者可以自由選擇想要維持的資料,在備份了自己的資料之外,自愿的為其他的關注的內容提供服務,(資料的保存是Pinning,是將檔案長期保留在本地)
如果IPFS得以普及,節點數達到一定規模,即使每個節點只存放一點點內容,所累計的空間、帶寬和可靠性(共享模式)將超過HTTP以中心服務器傳輸的模式,
顯然,整個系統要正常運行起來,除了需要有大量人參與外,還得避免出現BT中很多人不愿意做種的問題,代幣Filecoin(FIL)就是為了獎勵“礦工”,礦工負責貢獻存盤和資料檢索服務,讓IPFS網路真是的變得實用起來,而需要儲存服務的用戶需要為服務購買和支付代幣,(FIL的作用類似玩客幣WKC或流量礦石LLT)
正哥IPFS整理
正哥IPFS~filecoin布道者,誠邀共建IPFS生態,共享財富盛宴,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/225418.html
標籤:區塊鏈
上一篇:區塊鏈知識系列 - 區塊鏈大事記
下一篇:參與POC挖礦,來四維礦業就夠了
