IPFS技術淺析


  • 一、IPFS是什么?

星際文件系統IPFS(Inter-Planetary File System)是一個面向全球的、點對點的分布式版本文件系統,致力於創建持久且分布式存儲和共享文件的網絡傳輸協議。目標是為了補充(甚至是取代)目前統治互聯網的超文本傳輸協議(HTTP),將所有具有相同文件系統的計算設備連接在一起。

簡單來說IPFS是一個可以永遠存在的、由多個節點組成且沒有中心化的文件存儲和共享系統。

  • 二、IPFS的起源

      IPFS是一個開放源代碼項目,在2014年開始由Protocol Labs在開源社區的幫助下發展。其最初由Juan Benet設計,他建立實驗室開發IPFS初衷正是為了通過設計一個協議建立更加安全、高效、開放的網絡。他進入斯坦福大學后,學習計算機技術方面的知識,從事對分布式存儲網絡技術的研究開發。

  • 三、IPFS原理

原理用基於內容的地址替代基於域名的地址,也就是用戶尋找的不是某個地址而是儲存在某個地方的內容,不需要驗證發送者的身份,而只需要驗證內容的哈希,通過這樣可以讓網頁的速度更快、更安全、更健壯、更持久。

IPFS中文件通常不會都存在.一個節點上,.而是分片存在其他一些子節點上。提取.文件時IPFS把這些節點列表全部並行抓取,最后在本地拼成完整的.文件。並行的速度遠遠大於直接下載完整⽂文件的速度,用戶很快就能在本地獲得文件,還可以繼續分享給其他人。分布式的儲存方式能有效解決數據丟失的風險,同時減輕個體數據庫的存儲壓力。

在IPFS中,每個文件及其中的所有數據都被賦予一個唯一的加密指紋。IPFS通過網絡刪除重復具有相同哈希值的文件,計算之后判斷哪些文件是冗余重復的。並跟蹤每個文件的版本歷史記錄。每個網絡節點只存儲想存儲的內容,檢索自己想要的信息。查找文件時,通過文件的哈希值就在網絡查找到儲存改文件的節點,找到所需的文件。 並且,每個節點除了存儲了數據以外,還存儲了一張哈希表,用來記錄文件存儲所在的位置,便於進行文件的查詢下載。

采用IPNS即去中心化命名系統,每個文件都可以被協作命名為易讀的名字。搜索之后可以很快地找到想要的文件。

IPFS設想的是讓所有的網絡終端節點不只是扮演使用瀏覽器 Browser或者終端Client的角色。人人參與IPFS,人人都是網絡節點,人人都可以是服務器,從而組建一個去中心化的分布式網絡。

 

當我們搜索/下載內容時,IPFS網絡系統就會從離我們最近的距離(這里不是物理距離,是數學距離)的若干存儲節點,傳輸數據或者文件的碎片(不是整個文件)給我們,它是若干節點同時下載傳輸到我們的設備上(類似於P2P、BT技術),速度非常快。當然,從這些節點下載出來的文件碎片,最終會整合成一個完整的文件呈現給我們。

IPFS網絡是一個細粒度的、不可靠的、分布式的、易聯合的內容分發網絡(Content Delivery Network , CDN)。這就是IPFS與HTTP的區別,傳統HTTP協議是從單個中心服務器將整個文件下載傳輸到設備上的,下載的速度相對慢很多。

 

上傳到IPFS網絡的文件會被分割成若干塊,那如果其中的一塊意外被損壞了,怎么辦呢?不用擔心,IPFS系統有一個容錯機制,容錯機制的意思就是,假設一份文件被分割成10份,其中4份損壞了,那么還是可以根據剩下的6份還原出原文件來。所以說,你的文件是可以被永久保存在IPFS網絡里面的。

 

  • 四、IPFS挖礦背景

IPFS系統下挖礦得到FIL(Filecoin),Filecoin是一個去中心化的存儲網絡,Filecoin有兩個市場:存儲市場和檢索市場,這兩個市場結構相同,但結構不同。
Filecoin:把基於IPFS應用的數據價值化,通過類似比特幣的激勵政策和經濟模型,讓更更多的.人去創建節點,提供服務,去讓更多的人使用IPFS。(所謂提供的服務就是,有人提供存儲服務,有人提供檢索服務,存儲市場和檢索市場屬於去中心化的交易所)。

存儲市場上,客戶付費給存儲礦工,令其存儲數據。檢索市場上,客戶向檢索礦工付費后取回數據。(付費:Filecoin)
存儲礦工為網絡提供數據存儲,存儲礦工通過提供磁盤空間和響應客戶請求來參與Filecoin運作。
檢索礦工為網絡提供數據檢索服務,檢索礦工通過提供用戶檢索請求所需要的數據來參與Filecoin運作。
(1)存儲礦工可以同時擔任檢索礦工;
(2)存儲礦工需要抵押存儲磁盤空間,而檢索礦工就不需要。

 

  • 五、IPFS與Http相比有哪些優勢?

IPFS具備內容可尋址、版本化、點對點超媒體的分布式協議,它的目標就是取代HTTP協議。

先說一下什么是HTTP。

HTTP指超文本傳輸協議(英文:HyperText Transfer Protocol),是計算機網絡和超媒體信息系統的應用層協議。HTTP是互聯網的數據通信的基礎。但是仍然存在一些不可避免的缺點:

HTTP效率低,中心化服務器成本昂貴,並且依賴主干網,文件和數據容易丟失,網絡攻擊和安全問題頻出等。

具體來說,在http協議的中心化造成效率非常低,並且成本還很高。一旦使用HTTP協議每次需要從中心化的服務器下載完整的文件(網頁,視頻,圖片等),速度慢,效率低.如果改用P2P的方式下載,可以節省近60%的帶寬. P2P將文件分割為小的塊,從多個服務器同時下載,速度非常快.

還有一種就是web文件經常被刪除。我們可能在上網的過程中會遇到,收藏某個網頁,在使用的時候瀏覽器網頁會顯示404。而且現在web的存儲成本非常高,時間也就是最多100天。所以會發現web文件經常被刪除。. IPFS提供了文件的歷史版本回溯功能(就像git版本控制工具一樣),可以很容易的查看文件的歷史版本,數據可以得到永久保存

IPFS目標是是取代傳統HTTP,那么使用IPFS會帶來哪些好處?

(1)一個宇宙圖書館,存儲人類文件數據

       IPFS是一個分布式存儲網絡,無論是文字、圖片、音樂、視頻等,都可以成為存儲資源。對於你來說,相當於有一個無限空間的網盤,對於企業來講也是如此,海量的數據均可以存儲。並且,通過文件地址就可以打開它們,這個地址是可以被分享的。由於是分布式存儲,你的文件和數據不會丟失。

(2)你的文件安全你做主

  • 在IPFS系統里,文件及數據具有存在的唯一性,一個文件加入了IPFS的網絡,將基於計算對內容賦予一個唯一加密的哈希值。意味着IPFS哈希運算過后生成的地址是唯一。該地址不可篡改,也不可刪除的特性。因此,一旦數據存儲在IPFS中,它就會是完全的。而傳統的HTTP網絡,黑客可以對你進行攻擊,盜取你的文件。在IPFS網絡中,所有的文件和數據是分散在許許多多節點上的,而且都是加密的,黑客沒有辦法進行攻擊。
  • 對於文件的使用,你手上私鑰只有你擁有,是惟一的,你完全掌控着自己的文件安全。而在傳統網絡中,比如一筆存放在某個支付錢包中,其實你的密碼和賬戶是在中心化服務器中,不止你一個人知道賬戶密碼,當然一般正規支付錢包不會冒着法律風險隨意公開你的密碼,但是平台一旦服務器癱瘓或被攻擊,你的所有信息都是可能被盜取的。而IPFS則很好解決了這些問題,保證了文件和數據的安全性。

(3)不用多花錢了,網絡會更好用

在IPFS中通過P2P即點對點傳輸的方式進行數據傳輸,可以節省帶寬成本的60%。而在傳統中心化網絡中,服務器成本是巨大的。

同時,IPFS還有文件重復檢測機制,不會出現資源冗余問題。而傳統的HTTP一部電影會被反復儲存,產生極大的網絡資源浪費。

(4)作為區塊鏈基礎設施

區塊鏈項目存在數據容量問題,IPFS可以與之進行無縫銜接,作為基礎設施存在。

  • 六、IPNS命名系統

如果我們要在IPFS網絡上查詢想要的文件或信息,只要輸入對應的哈希值,就可以檢索到這個文件。由於這個哈希值是全網唯一的,查詢起來的速度非常快。

但是,如果使用哈希值來區分文件的話,我難道要記住那么多的一串串的哈希值?一個哈希值可是有64位的數字加字母啊,記起來多麻煩啊。假如我在IPFS網絡上搭建了一個網站,生成一個這么復雜的哈希值,這不利於宣傳啊,也會造成傳播困難。

事實上,當然不會這樣。因為哈希值不容易記憶,就像IP地址一樣不容易記憶。所以Protocol Labs協議實驗室弄出了IPNS(InterPlanetary Name System),IPFS的域名命名系統,這樣,IPFS就可以利用IPNS將哈希值映射為容易記的名字了。

用一個例子演說IPFS的工作流程

比如我想觀看一部叫ABC的視頻:

1. 加入IPFS網絡,在網絡中搜索叫ABC的文件(ABC是通過IPNS映射得來的名字)。

2. IPFS網絡迅速索引區塊鏈上的哈希值,反饋出搜索結果。

3. 你支付一點Filecoin代幣,獲取ABC文件緩存到本地,ABC文件不是從雲或者服務器上面下載下來的,而是由IPFS網絡的參與者貢獻的,它可能是離你最近的一個網絡節點。這樣的好處是,不僅不需要中間服務器,而且網絡傳輸效率最快。

4. 如果ABC文件恰巧你周邊好幾個人都有,那IPFS網絡會把這個文件拆成一小片一小片,節省了這些節點的儲存成本,也讓你用最具效率的方式下載到該視頻。

5. 這個ABC視頻文件緩存在你自己電腦里,不僅自己可以觀看,同時也為其他需要ABC這部視頻的人提供資源。

6. 另外,你也可以自己發布新內容到這個網絡上,並且有機會獲得Filecoin代幣,因為你也為網絡做了貢獻。

通過這樣的方式,實現了整個網絡的文件利用達到最優效率。

  •  七、應用場景
  •  

    基於IPFS技術的應用已經越來越多,目前已經有不少的成功項目,從數據存儲到文件傳輸,從社交媒體到買賣交易,這些APP、應用、平台,正在重構整個互聯網。在上圖中,是目前IPFS星際文件系統這一底層協議的項目大全。其中一些其采用了多種協議棧,值得我們關注。

    1.Filecoin:是基於IPFS的分布式存儲區塊鏈項目,是IPFS官方團隊開發的項目。IPFS可以獨立存在,而Filecoin是IPFS的激勵層。

    2.Poseidon:一個基於IPFS網絡的中心化的分布式搜索引擎,可以讓用戶快速檢索IPFS網絡上的文件,尋找到所需要的數據,同時用戶參與挖礦還能獲得通證激勵。被譽為區塊鏈版Google。Google是世界上最大的搜索引擎,但它是中心化的。Poseidon支持打標簽即挖礦,支持雙挖POSC+FILECOIN。

    3.Orbit:是一個數據平台,在IPFS誕生之初就已經發揮了它的重要作用。用Orbit可以開發一個“局域網”匿名聊天網絡。

    4.Textile:一個數字資產平台,Textile Photos是其官方開發的去中心化版相冊,致力於取代Instagram。

    5.Peepeth:Peepeth是一個分布式社交平台,可以看作是區塊鏈版推特。包括以太坊V神等人均在使用。不過筆者提示,該平台注冊流程較為復雜,正常使用有一些難度。

    6.GLOBAL UPLOAD:是IPFS全球文件上傳,你在哪里都可以將文件Upload到IPFS網絡,獲取到hash地址。網站簡潔、易用。對於需要普通人來說,它是一個上傳文件到IPFS的絕佳助手。

    實際上,IPFS技術已經運用到了許多領域。依舊是上圖,你會發現IPFS項目類型多樣,基本是涵蓋了當前的多個領域。不過也需要注意,國內已經出現借着IPFS的名義進行傳銷的項目,或者剽竊IPFS的功能,然后宣稱它們的項目是有更多優勢的,等等諸如此類,從一開始就是一個騙局。

 

  • 八、加密存儲

(1)HealthWalletStorage   IPFS系列存儲

參考: http://www.healthwallet.cc/storage.html#storage3

 

(2)

下圖簡單的表述了IPFS的工作流程:

 

John打算上傳一份PDF文檔到IPFS: 他首先把PDF文件放到電腦工作區;然后,使用IPFS相關命令添加這個文件,並且得到了文件的hash值。上面動作結束后,這個PDF文件就可以在IPFS上面被訪問了。

 

現在John打算把這個PDF通過IPFS分享給他的同事Mary。他只需要得到的hash值告訴Mary,然后Mary就能按圖索驥,從IPFS上面下載這份文件。 

不對稱加密技術能夠讓我們用文件接收方的公鑰加密文件,之后接收方從IPFS下載文件之后,再用私鑰解密即可。作惡方就算從IPFS上取得這個文件,也不能做任何事情,因為無法解密其內容。讓我們重新設一下前面的工作流程,這次引入加密和解密的過程: 

 

 

 

John打算上傳一份PDF到IPFS,但只打算給Mary一個人看。他將PDF放入電腦的工作區,然后用Mary的公鑰對其進行加密。然后使用IPFS相關命令添加這個加密后的文件,並且得到了加密文件的hash值。上面動作結束后,這個加密過的文件就可以在IPFS上面被訪問了。Mary得知hash值之后,可以從IPFS上下載,並用她的秘鑰解密得到原PDF文件。

任何企圖作惡的一方,由於沒有Mary的密鑰,所以他們無法解密這個文件,從而保證了文件在IPFS上面的安全共享。

 

(3)CarBlock

參考:http://www.woshipm.com/blockchain/992480.html

GitHub: https://github.com/zhangerna/carblock

 

(4)textile.photos

參考: http://www.btb8.com/fil/1810/18253.html

Github:

https://github.com/textileio/photos    https://www.textile.photos/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM