ipfs 簡介

IPFS(Inter Planetary File System即星際文件系統)是一種基於內容尋址、版本化、點對點的超媒體傳輸協議,允許網絡中的參與者互相存儲、索取和傳輸可驗證的數據,對標http的新一代通信協議。IPFS的目標是打造一個更加開放、快速、安全的互聯網。

IPFS產生的背景

2014年5月,斯坦福大學計算機碩士畢業的Juan Benet創立了協議實驗室(Protocol Lab)。協議實驗室是一個網絡協議的研究、開發和部署的實驗室,致力於構建協議、系統和工具來改進互聯網的工作方式,並關注如何存儲、定位和傳輸信息。協議實驗室的目標是用新的技術突破、偉大的用戶體驗設計和開源的方法來解決傳統互聯網的種種弊端,並創建了IPFS、Filecoin、libp2p、IPLD、Multiformats等五個項目。

ipfs 簡介


在介紹IPFS之前,大家可以先看下協議實驗室官方發佈的視頻。

IPFS概述

IPFS(InterPlanetary File System即星際文件系統)是一種基於內容尋址、版本化、點對點的超媒體傳輸協議,是一個P2P的分佈式文件系統,對標http的新一代通信協議,目標是打造一個更加開放、快速、安全的互聯網。

IPFS可以被視為一個單一的BitTorrent群,交換對象在一個Git倉庫,提供了一種高通量處理的依託於內容尋址超鏈接的塊存儲模型。對於一個存放在IPFS網絡的文件資源,通過這個文件資源的內容生成的唯一編碼去訪問。IPFS可以講數據分片存儲到分佈式的存儲節點,與BitTorrent類似,在訪問時不需要關係存儲在哪裡,可以從多個存儲節點分片獲取。

IPFS繼承了Git版本管理技術,從而可以使用內容的升級變化。為了實現真實性、不可篡改性,IPFS維護一個分佈式的哈希表,實現一種Merkle DAG的數據結構,還結合了自我證明單命名空間。IPFS中沒有單節點故障,且眾多節點無須信任彼此。

所以,IPFS是集合了BitTorrent—BT協議技術、Git—版塊化技術、DHT—分佈式哈希表、SFS—自認證命名技術這四個成熟技術組合形成的一種通訊協議方式,允許網絡中的參與者互相存儲、索取和傳輸可驗證的數據。IPFS的目標是取代HTTP,打造一個更加開放、快速、安全的互聯網。

HTTP協議的弊端

我們現在使用互聯網都是在http或https協議下運行的,http協議也就是超文本傳輸協議,是用於從萬維網服務器傳輸超文本到本地瀏覽器的傳送協議,從1990年提出至今已經近30年了,他對於目前互聯網的爆炸性成長居功至偉,成就了互聯網的繁榮。

但是HTTP協議是基於C/S架構下的互聯網通信協議,基於主幹網絡中心化運行的機制,也存在諸多弊端。

ipfs 簡介


首先,互聯網上的數據經常因為文件被刪除或服務器關閉而永久被抹去。有人統計過目前互聯網上的web頁面平均保存壽命只有100天左右,我們經常看到一些網站出現“404錯誤”。近幾年,新浪網盤、騰訊微雲、金山快盤等網盤紛紛關閉,如果你不把數據下載到本地硬盤的話,你在網盤上的數據就會被清零。

IPFS提供了文件的歷史版本回溯功能,可以很容易的查看文件的歷史版本, 且數據無法刪除,可以得到永久保存。

ipfs 簡介


其次,主幹網絡運行效率低,使用成本高。由於中心化的通訊模式導致所有終端都要從一個Web服務器查找數據,相同的文件會在不同的服務器上重複存儲,這就要求服務器的帶寬很大。使用HTTP協議每次需要從中心化的服務器下載完整的文件,速度慢、效率低。

IPFS是基於內容尋址的存儲模式,相同的文件都不會重複存儲,它會把過剩的資源擠壓下來,包括存儲空間都釋放出來,數據存儲成本就會降低。如果改用P2P的方式下載,帶寬使用成本可以節省近60%。

ipfs 簡介


第三,主幹網絡併發機制制約互聯網訪問速度。這種中心化主幹網絡的模式也導致在高併發情況下網絡訪問時候的擁堵,最典型的就是春運搶購火車票以及雙11剁手節的時候。

第四,中心化限制了web的成長。現在的互聯網是由數百萬個分佈在世界各地的服務器構成的,是一個高度中心化的網絡。在現有的http協議下,所有的數據都保存在這些中心化服務器上,互聯網巨頭們不但對我們的數據有絕對的控制權和解釋權,各種各樣的監管、封鎖、監控一定程度上也極大的限制了創新和發展。

建立在去中心化的分佈式網絡上的IFPS很難被中心化管理和限制,互聯網將更加開放。

ipfs 簡介


第五,HTTP對主幹網絡依賴嚴重,存在嚴重的安全隱患。所有數據存儲在一個地方,為尋求規模效應,機房就會建設在一個地方,就會非常依賴一個主幹節點,一旦“單點式”的中心被摧毀或者發生數據丟失、造假的情況,那麼整個網絡都會隨之癱瘓,或者接收到錯誤的信息,用戶的信息安全和隱私容易受到威脅。

為了支撐HTTP協議,服務器7*24小時開啟,對於大流量公司,比如百度、騰訊、阿里等,投入大量資源維護服務器和安全隱患,防止DDoS、XSS、CSRF等攻擊。主幹網絡受制於戰爭,自然災害,中心服務器宕機等因素,都可能造成整個互聯網中斷服務。IPFS分佈式存儲可以極大的降低對中心主幹網絡的依賴。

ipfs 簡介


Juan Benet指出兩個關鍵:“我們使用的是內容尋址的技術,也就是說內容可以從源服務器分離出來,並永久儲存。這就意味著內容可以在距離用戶非常近的地方儲存和託管,甚至是儲存在同一個房間裡面。內容尋址還可以讓我們校驗數據,因為其他主機可能是不受信任的。一旦內容被下載到用戶的設備之後,它就可以被無限期的保存。”

IPFS還可以解決困擾HTTP互聯網多時的安全問題:內容尋址和內容簽名技術可以保護基於IPFS的網站,杜絕DDoS攻擊發生的可能。IPFS還可以歸檔重要的公共記錄內容,避免網站終止運營所帶來的損失。

IPFS的最後一個核心改進是去中心化的內容分佈,這點可以讓人們在分散的互聯網服務(甚至是離線的情況)之下獲取互聯網的內容。“我們讓網站和網頁應用擺脫了源服務器的牽制。”Juan Benet解釋,“它們可以按照比特幣網絡的模式進行分佈。”這是HTTP無法做到的這一點,而且對於網絡條件欠佳的地方和市郊地區來說是一個極大的好處。

IPFS包含的內容

節點身份。每一個IPFS節點都有一個獨一無二的身份ID,利用節點的公鑰生成的加密哈希,節點的活動都需要使用這個ID,就像是IPFS網絡裡面節點的身份證。

網絡。IPFS節點要和網絡裡面成百上千的其他節點通訊,現實中的網絡結構如此複雜,IPFS使用ICE NAT穿透技術來保障網絡的連通性。

路由。IPFS網絡的路由使用的事DHT,借鑑了S/Kademlia,使用一個節點可以快速地查找到其它節點。

數據交換協議。IPFS借鑑BitTorrent協議,使用了叫做BitSwap的數據交換協議,該協議使用兩個列表,想要的數據塊(want_list)和我有的數據塊(have_list)與其他節點進行數據交換。

對象存儲。IPFS存儲數據私用的事MerkleDAG結構,這賦予了IPFS內容尋址、防篡改、去重功能。

版本控制系統。

IPFS在MerkleDAG上面添加了Git版本控制功能,這使得IPFS文件擁有了時光機功能,可以輕鬆查看文件的變動歷史。

自認證命名系統。IPFS使用了SFS自認證系統給文件命名,同時提供了IPNS解決傳播問題,而且還兼容了現有的域名系統。

IPFS的技術架構

ipfs 簡介


IPFS有八層子協議棧,從低往高分別為身份、網絡、路由、交換、對象、文件、命名、應用,每個協議棧各司其職,又互相搭配。

身份層和路由層

對等節點身份信息的生成以及路由規則是通過Kademlia協議生成制定,KAD協議實質是構建了一個分佈式鬆散Hash表(distributed hash table),簡稱DHT,每個加入這個DHT網絡的人都要生成自己的身份信息,然後才能通過這個身份信息去負責存儲這個網絡裡的資源信息和其他成員的聯繫信息。

網絡層

lib2p可以支持任意傳輸層協議。ICE NAT traversal框架整合STUN、TURN和其他類型的NAT協議,該框架可以讓客戶端利用各種NAT方式打通網絡,從而完成NAT通信,這對於IPFS的p2p網絡非常重要。

交換層

類似迅雷、電驢這樣的BT工具,IPFS團隊把BitTorrent進行了創新,叫作Bitswap,它增加了信用和帳單體系來激勵節點去分享,用戶在發送給其他節點數據可以增加信用值,從其他節點接受數據降低信用值。如果用戶只去接收數據而不分享數據,信用分會越來越低而被其他節點忽略掉。

對象層和文件層

對象層共同管理IPFS上80%的數據結構。大部分數據對象都是以Merkle DAG的結構存在,這為內容尋址和數據去重提供了便利。

文件層是一個新的數據結構,和DAG並列,採用Git一樣的數據結構來支持版本快照。

命名層

具有自我驗證的特性(當其他用戶獲取該對象時,使用指紋公鑰進行驗籤,即驗證所用的公鑰是否與NodeId匹配,這驗證了用戶發佈對象的真實性,同時也獲取到了可變狀態),並且加入了IPNS這個巧妙的設計來使得加密後的DAG對象名可定義,增強可閱讀性。

應用層

IPFS核心價值就在於上面運行的應用程序,可以利用它類似CDN的功能,在成本很低的帶寬下,去獲得想要的數據,從而提升整個應用程序的效率。

IPFS的關係圖譜

協議實驗室團隊在開發IPFS時,採用高度模塊集成化的方式,像搭積木一樣去開發整個項目。其中IPLD、LibP2P、Multiformats這三個模塊服務於IPFS底層。下面這張是IPFS的關係圖譜。

ipfs 簡介


Mutiformats是一系列hash加密算法和自描述方式的集合,用以加密和描述nodeID以及指紋數據的生成,它在現有協議基礎上對值進行自我描述改造,即從值上就可以知道是如何產生的。

libP2P是IPFS核心中的核心,面對各式各樣的傳輸層協議以及複雜的網絡設備,它可以幫助開發者迅速建立一個可用P2P網絡層,快速且節約成本。libp2p的主要功能包括:發現節點、連接節點、發現數據、傳輸數據。它類似現實世界的快遞公司,連接著千千萬萬個節點,除了負責分發數據,還負責查找數據。

ipfs 簡介


IPLD是一個轉換中間件,將現有的異構數據結構統一成一種格式,方便不同系統之間的數據交換和互操作。現在IPLD支持比特幣、以太坊的區塊數據。IPLD中間件可以把不同的區塊結構統一成一個標準進行傳遞,為開發者提供了成功性比較高的標準,不用擔心性能、穩定和bug,這也是IPFS為什麼受到區塊鏈系統歡迎的重要原因。

IPFS應用了這幾個模塊的功能,集成為一種容器化的應用程序,運行在獨立節點上,以Web服務的形式,供大家使用訪問。IPFS允許網絡中的參與者互相存儲,索取和傳輸可驗證的數據。但是由於IPFS是開源的,可以被免費下載和使用,並且已經被大量的團隊使用。運用IPFS及技術各個節點可存儲它們認為重要的數據;但目前沒有簡單的方法可以激勵他人加入網絡或存儲特定數據,IPFS的推廣普及的速度明顯很慢。

IPFS是如何工作的

IPFS是基於文件內容進行尋址的。IPFS為每一個文件分配一個獨一無二的哈希值(文件指紋:根據文件的內容進行創建),即使是兩個文件內容只有1個比特的不同,其哈希值也是不相同的。所以IPFS是基於文件內容進行尋址,而不像傳統的HTTP協議已於基於域名尋址。

文件版本管理。IPFS在整個網絡範圍內去掉重複的文件,並且為文件建立版本管理,也就是說,每一個文件的變更歷史都將被記錄,可以很容易回到文件的歷史版本查看數據。

文件查詢。當查詢文件的時候,IPFS網絡根據文件的哈希值(全網唯一)進行查找。由於每個文件的哈希值全網唯一,所以查詢將很容易進行。每個節點除了存儲自己需要的數據,還存儲了一張哈希表,用來記錄文件存儲所在的位置,用來進行文件的查詢、下載。

IPNS。如果僅僅使用哈希值來區分文件的話,會給傳播造成困難,因為哈希值不容易記憶,就像IP地址一樣不容易記憶,於是人類發明了域名。IPFS利用IPNS將哈希值映射為容易記的名字。IPFS哈希代表不可變的數據,這意味著他們是不能被更改的,否則會導致哈希值的變更。IPFS通過一種特殊的功能來實現,即IPNS。IPNS允許用戶使用一個私鑰來對IPFS哈希附加一個引用,使用一個公鑰哈希表示你的網站是最新版本。如果你使用過比特幣,可能會對此比較熟悉,一個比特幣地址也是一個公鑰,如果該鏈接不起作用,不用擔心,能夠通過更改公鑰所指向的內容,而公鑰卻永遠保持不變。這樣,網站的更新問題就得到了解決。接下來,只需要保證這些網站的位置是人類可讀的,所有問題就解決了。

人類可讀的可變地址。IPFS/IPNS哈希是一些很大的、難看的字符串,而且不容易記住。所以IPFS允許用戶使用現有的域名系統(Domain Name System,DNS)來為IPFS/IPNS內容提供人類可讀的鏈接。它允許用戶通過在域名服務器上將哈希插入TXT記錄來實現這一點。

IPFS HTTP網關,新舊網絡之間的橋樑。通過一個HTTP網關,IPFS可以實現從HTTP到IPFS的過渡,在瀏覽器完全支持IPFS之前,現在已經允許當前的Web瀏覽器訪問IPFS。用戶很快就可以切換到IPFS,完成Web網絡的存儲、分發和服務。

IPFS可以用來做什麼

在/ipfs和/ipns下面掛在全球永久文件系統。就是說所有的文件都可以存到上面。掛在個人同步的文件夾,可以自動進行版本管理、自動備份,也就意味著未來將擁有無限空間的網盤,不用擔心數據丟失和隱私洩露。

作為帶版本控制的軟件包管理系統。

作為虛擬機的根文件系統。利用管理程序,把IPFS作為虛擬機的引導文件系統、在線操作系統。

作為數據庫。應用可以直接操作IPFS的MerkleDAG數據結構,並且可以使用IPFS的版本控制、緩存,自動備份、永不丟失、安全加密、無限空間、高速連接。

作為加密通訊平臺。

作為加密CDN。

永久Web。不存在不能訪問的鏈接,不會出現404錯誤。

入門必讀:IPFS白皮書(中文版)

IPFS與Filecoin

ipfs 簡介


協議實驗室在創建IPFS的時候就提出了與IPFS相輔相成的Filecoin,Filecoin是一個共有區塊鏈,是IPFS的經濟激勵系統,承載著IPFS的價值傳遞,維繫著IPFS生態的發展。

在Filecoin的激勵機制下,用戶通過支付Filecoin獲得存儲數據以及檢索數據服務,而礦工們則通過存儲數據並以加密方式證明數據存儲來獲得付款和獎勵。IPFS和Filecoin的關係有點類似於區塊鏈與比特幣之間的關係。

ipfs 簡介


Filecoin用戶與礦工交互圖

Filecoin基於時空證明的共識機制,其存儲數據的區塊由礦工創建。Filecoin協議通過一個獨立的存儲提供者的網絡提供數據存儲與檢索服務,它並不依賴於單一的協調組,在這裡,用戶為存儲與檢索數據而付費,存儲礦工按存儲報價獲得Tokens獎勵,檢索礦工按服務數據獲得Tokens獎勵。

Filecoin是基於區塊鏈的存儲網絡和加密貨幣,我們講的挖礦,其實就是Filecoin挖礦。礦哥將在下篇文章詳細分析Filecoin挖礦的投資邏輯。敬請關注。



分享到:


相關文章: