當前位置:
首頁 > 最新 > 星際文件系統:雄心勃勃的互聯網顛覆者

星際文件系統:雄心勃勃的互聯網顛覆者

引子

在IPFS的白皮書的開篇寫道,互聯網正處在一場革命中。這場革命體現在幾個方面:

1 中心化的專有服務正在被去中心化的開放服務所取代;

2 基於實體保證的信任正被可驗證的計算所取代;

3 臨時的基於位置的地址正被持久的基於內容的地址所取代;

4 低效率的寡頭實體也正被基於點對點演算法的分散市集所取代。

上面第1、2兩點提到的就是區塊鏈及其相關技術如何去中心化,去中介。第4點講的是一直以來開源人士的願景,在逐步的實現過程之中,而其中的第3點,內容的訪問方式的變革,恰恰就是IPFS要實現的,是這一盤大棋中的重要一環。

在我的上一篇關於去中心化存儲的文章中,我們討論了去中心化存儲是未來的一個趨勢,而且也是區塊鏈應用真正落地的重要條件。其中提到的一個關鍵技術就是IPFS(Interplanetary File System,星際文件系統),名字很大,野心也很大,是一個非常讓人期待的項目。其實,它不僅僅是一個分散式存儲系統,它真正的野心是要取代HTTP,實現一種去中心化的互聯網方案。它通過點對點的分散式系統來實現高效的可為星際服務的共享平台。

IPFS的實現包含通信協議和分散式系統中的多項創新,這些創新組合在一起生成了一個文件系統。 因此,要理解IPFS試圖實現的全面廣度和深度,了解實現這一目標的突破性技術非常重要。


IPFS不只是一個文件系統,它的宏偉目標是取代現有的HTTP協議,構建新型的互聯網。在講具體的實現技術之前,有必要先簡單介紹一下,IPFS通過什麼方式去實現這麼目標。最重要的,就是如何實現根據內容定址,而不是根據地址來定址。

IPFS通過散列函數為每個文件(數據對象)計算哈希值,文件相同,哈希值就相同,反之,文件內容不同,哈希值也不同。這個哈希值就是文件的標記,或者說是獨一無二的指紋。當你訪問文件時,不是使用文件的存儲地址,而是直接使用這個哈希值

由於文件內容相同,哈希值相同,那麼在整個網路中,十分容易定位兩個文件是否一致,因此在網路存儲時將被看成同樣的文件。那麼也就是說,沒有必要另存一份。舉個例子說,比如你很喜歡某一部蒼老師的電影,你打算存一份在IPFS中,但其實這部電影已經有很多人存過了,那麼存進去完全是重複的,IPFS就沒有必要為你再存一份。只需直接告訴你存好了。

當你要取某個文件(如上面說到的電影),你直接使用文件的指紋(哈希值)進行訪問,注意,這裡沒有任何地址,你也不需要知道伺服器在哪裡,誰為你服務,直接用哈希值就可以訪問。這樣一來,無論網路如何改變,文件被移到何處,你的定址方式是不變的。這個絕對是革命性的。

當然哈希值的記憶不容易,本質上對你而言,他就是一長串無意義的字元,如何記憶呢?IPFS推出了文件域名服務,即IPNS,來把哈希值映射成相應的易記的名字

IPFS的另一個很重要的特性是版本管理,採用類似Git的技術,讓你的文件版本可追溯,這樣,你的源碼,文件修改等完全可以放到IPFS中進行。

那麼具體IPFS如何實現這一切呢?下面從通信協議和分散式系統談起。


如果兩個人要交換信息,他們需要一套共同的規則來定義如何以及何時傳遞信息。這些規則就被稱為通信協議,如果口語化一點,我們可以簡單地稱之為語言。當你和和你說不一樣語言的人交流的時候,那麼你可能會遇到失敗(或缺乏)通信協議。計算機也是如此,當網路協議沒有產生的時候,他們無法相互溝通,直到20世紀80年代早期,第一個計算通信協議發明後,計算機有了自己的通信方式。注意這裡所說的與編程語言是兩碼事。

編程語言是為了模式化的計算而傳輸協議為了更暢通的交流

在計算機中,通信協議通常以協議套件的方式,包含不同的層次。例如,互聯網協議套件由4層組成(按照ISO的定義,你也可以說是7層),每層都負責特定的功能。除了通信協議之外,計算機相互通信還需要實現這些通信的一些網路和系統組件,他們是網路互聯的基本結構。這也被稱為系統架構。與我們今天所講的相關的一些概念包括:客戶伺服器模型,點到點網路等。

客戶伺服器(Client-Server)關係模型長期以來主導著互聯網(Internet),這在互聯網協議中也很明顯地體現出來。比如說,超文本傳輸協議(HTTP),瀏覽器是客戶端,你要訪問的網路就是伺服器端。而HTTP協議是互聯網最基本的應用協議。

在這樣的網路里,數據存儲在服務商中心化的伺服器中,並通過基於位置(路徑)定址的方式進行訪問。在一個中心化的世界裡,這樣可以更輕鬆地分發,管理和保護數據,並易於擴展伺服器和客戶端的容量。然而,其在安全,隱私和效率領域存在許多弱點:服務提供商從對伺服器的控制就是對數據的控制。這意味著1)您的數據可以通過任何一台有相應許可權的伺服器來訪問,更改和刪除;伺服器被黑客攻擊,掌控,也有可能被公司內部人員惡意操縱。在基於位置的定址中,數據通過它所處的位置而不是其內容來標識。這種限制意味著即使有相同的數據在更近的伺服器內,您也必須一直到指定的位置獲取一段數據。也沒有辦法告訴您數據是否已經改變,因為您總是被告知到哪裡去取數據,而不是說去什麼樣的數據。

有些奇怪,是嗎?但是你已經習以為常了。計算機系統和網路系統一直都是這麼做的,你要存取文件,你要給出地址,而不是直接給出內容即可,恰恰這就是IPFS最為創新之處。

客戶端 - 伺服器模型和HTTP在其大部分歷史中都非常可靠地服務於互聯網。這是因為HTTP網頁對於移動文本和圖像等小文件非常有效。在網路的頭20年中,平均網頁的大小僅從?2千位元組增加到?2兆位元組。

HTTP非常適合訪問網站,載入網站數據,但它不適用於傳輸大量數據(如音頻和視頻文件)。 正是因為這些限制,Napster(音樂)和BitTorrent/迅雷(電影和幾乎任何其他東西)等替代文件共享系統出現,並取得很大成功。

當我們快步邁進2018年,點播高清視頻流和大數據變得無處不在; 我們正在繼續產生和消費越來越多的數據,同時開發越來越強大的計算機來處理它們。 雲計算的主要進步在助推這一轉變,但分發所有這些數據的基礎設施和技術卻沒有改變。


通過採用已有的一些創新技術,IPFS致力於通過一個創造性的P2P文件共享系統解決客戶端 - 伺服器模型和HTTP網路的缺陷。 IPFS是Protocol Labs開發的一個開源項目,Protocol Labs其前身是Y Combinator初創公司的研發實驗室。Protocol Labs還開發了IPLD和Filecoin 等協作系統,這將在下面進行進一步闡述。 世界各地的數百名開發人員為IPFS的發展作出了貢獻,因此其協調工作一直是一項巨大的任務。 IPFS主要包含如下基本技術:


哈希表是一種將信息存儲為鍵/值對的數據結構。 在分散式散列表(DHT, Distributed Hash table)中,數據分布在計算機網路中,並進行高效協調,以實現節點之間的高效訪問和查找。

DHT的主要優勢在於分散性(去中心化),容錯性和可擴展性。 節點不需要中央節點協調,即使節點發生故障或離開網路,系統也能可靠運行,並且DHT可以擴展以容納數百萬個節點。 這些特性使得IPFS系統比客戶機 - 伺服器結構更具彈性。


Bittorrent是非常流行的文件共享系統(別告訴我說你不知道)。Bittorrent能夠依靠創新的數據交換協議成功地協調數百萬個節點之間的數據傳輸,但它僅限於文件的多點傳輸和共享。 IPFS實現了稱為BitSwap協議的文件共享通用版本,該協議可用作任何類型數據共享的場合。 這在IPFS里被稱為市集(Marketplace)。Filecoin是建立在IPFS上的點對點的存儲市集,與IPFS一起構建整個生態系統


別搞混了默克爾樹 (左)和 Merkle樹(右)

這裡講的默克爾DAG實際上是Merkle樹和有向無環圖(Directed Acyclic Graph,DAG)的結合。 Merkle樹確保在p2p網路上交換的數據塊是正確的,未損壞的和未改變的。其實現通過使用加密散列函數和層次化地組織數據塊來完成。通過逐層接受輸入,計算哈希值,來產生唯一的字串。其葉節點是真正存儲數據的節點,葉節點上數據的任何改變,都可以非常容易地通過Merkle樹的各層散列值的變化輕易地找出來。當然,由於散列函數不可逆,不可能通過散列值去確定輸入的具體內容。

DAG是一種模擬沒有循環的信息的拓撲序列的方法。DAG的一個簡單例子是家譜圖。一個Merkle DAG基本上是這樣的一個數據結構,和Merkle樹一樣,逐級求對數據和DAG中的對象一起求散列值。這種方式有以下幾個特性:IPFS中的任何內容,都可以有唯一的散列值,這也就是數據唯一的標識。因為每個數據塊都有一個唯一的標識(散列值),那麼,數據是防篡改的,因為修改它會改變散列值,如下所示:

圖片來源: ethereum.org

IPFS的中心原則就是對所有數據文件對應到一個統一的Merkle DAG上。這樣的安全特性是無可比擬的。如果要與傳統的客戶伺服器模型做對比的話,只要看看每年有多少網站被黑,比如一個例子,看看這個傢伙如何在7分鐘內入侵40個網站。


Merkle DAG結構的另一個強大的特徵是,你可以利用它建立一個分散式的版本控制系統(VCS)。最流行的例子就是GitHub,GitHub在版本控制方面已經佔據主流,開發人員通過它能夠輕鬆地進行項目合作。同時,文件在GitHub中存儲和版本管理通過Merkle DAG進行。它允許用戶獨立複製和編輯一個文件的多個版本,存儲這些版本,修改和在需要的時候和原始文件合併編輯。

IPFS對數據對象使用類似的模型:對應於原始數據對象的任何新版本都是可追溯的,可以檢索整個文件歷史記錄。 鑒於數據塊由本地存儲至整個網路中,並且可以無限期地緩存,這意味著IPFS對象可以永久存儲。

另外,IPFS不依賴於Internet上任何一種單獨的協議。數據的分發可以通過嵌套網路協議進行,也就是說,可以利用現有網路,但也可以在此之上構建新的網路協議。這種網路協議的中立性質非常值得注意,因為有了這樣的方案,你可以自己構建設置、選擇和構建所要使用的網路協議,從而完全可以避開網路審查。 因此,IPFS可能成為促進言論自由以對抗全球互聯網審查流行的有用工具,但同時,也可能存在被不良行為者濫用的可能性。


這是本文中IPFS的最後一個重要組成部分:自認證文件系統(Self-certifying File System, SFS)。 它是一個分散式文件系統,不需要特殊的數據交換許可權。 它是「自我認證」的,因為文件名就是文件內容的哈希值,內容被客戶端加密。這樣,你就可以像訪問本地數據一樣,安全地使用網路存儲服務。

IPFS基於這個概念創建了InterPlanetary(星際)名稱空間(IPNS)。 它是一個使用公鑰密碼體系來自我認證由網路用戶發布的對象的SFS。 我們前面提到,IPFS上的所有對象都可以唯一標識,但這也可以擴展到節點。 網路上的每個節點都有一組公鑰,私鑰和節點ID,它們是公鑰的散列。 因此,節點可以使用他們的私鑰"簽名"他們發布的任何數據對象,並且可以使用發件人的公鑰來驗證這些數據的真實性。


使用分散式散列表,節點可以在沒有中心服務協調的情況下存儲和共享數據

IPNS允許交換的數據被即時預先驗證並使用公鑰密碼術進行驗證

Merkle DAG支持唯一識別,防篡改和永久存儲的數據

您可以通過版本控制系統訪問以前版本的編輯數據


IPFS提供高吞吐量,低延遲,數據分散式存儲。 它是去中心化,也十分安全。 這就打開了一扇門,使得很多有趣和令人興奮的應用可以建立在其之上。 它可用於存儲網站內容,全球化的數據共享和分散式存儲,自動版本控制和文件備份管理,便於安全的文件共享和加密通信,等等。

下面是一些正在開發的,建立在IPFS上的一些項目:

Akasha, 下一代的社交網路

Balance3, 三方匯接的會計平台

BlockFreight, 開放的全球航運網路

Digix, 通證化的實物黃金交易平台

Infura, DApp基礎設施平台

Livepeer, 去中心化的實時視頻媒體平台

Origin, 共享經濟的點對點市場

uPort, 一個自主主權的身份系統

這些應用的多樣性證明了IPFS在多種不同應用場合中的普遍使用性。它也被用作公共區塊鏈和其他P2P應用程序的補充文件系統。在我撰寫這篇文章之時,在Ethereum智能合約中存儲一千位元組的數據需要花費幾美元。 這成為目前正去中心化應用程序(DApps)大規模增長的主要障礙。 IPFS可與智能合約和區塊鏈數據互操作,從而可以為以太坊生態系統增加可靠,低成本的存儲容量。支持在IPFS上本地訪問以太坊區塊鏈數據的協議是IPLD(InterPlanetary Linked Data),它是一個獨立協議,與IPFS一起為去中心化應用提供支撐。


儘管IPFS的願景令人印象深刻,但目前仍有不少問題尚未完全解決。首先,IPNS上的內容定址目前對用戶而言不太方便。典型的IPNS鏈接如下所示:

可以使用域名系統(DNS)將這些鏈接縮短為更簡單的名稱,但這會引入內容分發的外部故障點。當然,內容仍然可以通過原始IPNS地址訪問。一些用戶還報告說,IPNS在解析域名方面速度可能會很慢,延遲時間可能高達幾秒。目前尚不清楚這個問題的根源是什麼。

在IPFS上,節點維護網路數據的長期備份的動力也不大。節點可以選擇清除緩存的數據以節省空間,這意味著理論上,如果沒有其他節點託管數據,文件可能隨著時間的推移而「消失」。在目前的採用水平上,這不是一個重要問題,但從長遠來看,備份大量數據需要有力的經濟激勵措施。


提到IPFS的應用,Filecoin是必須提到的一個重要部分。Filecoin是一個單獨的協議,旨在為IPFS上的文件存儲增加經濟激勵,從而有能力培育與企業雲存儲(如Amazon S3,Google Drive等)相媲美的分散式存儲市場。 IPFS + FileCoin不是採用固定定價的中心化的基礎設施,而是在全球本地供應商或用戶網路上提供存儲,這些存儲的提供者可以根據供需自由設定價格。 Filecoin使用Proof-of-Storage來確保安全性和可靠性,而不是像比特幣這樣的Proof-of-Work一致性演算法。因此,任何人都可以加入網路,在其計算設備上提供未使用的硬碟空間,並獲得用於數據存儲和檢索服務的Filecoin Token獎勵。

目前,該網路正在Ethereum上開發,一旦可以付諸使用,與智能合約相結合,IPFS+Filecoin講可以提供很多有意思的應用,比如:存儲市場託管,保障等高級功能。從理論上講,與大規模中心化的存儲供應商相比,潛在成本更低、高度競爭的自由存儲市場可以被開發出來。但是FileCoin目前還沒有推出,所以拭目以待吧,觀察這些概念在現實中的進一步發展和實現會很有趣。


IPFS是一項雄心勃勃的計劃,顯然系統功能的精確機制比本文中描述的要複雜得多。 這裡只是粗淺介紹,把那些複雜的知識和細節我們就留給密碼學家和計算機大牛去細細品味,也許他們可以來點科普。 您不必成為使用IPFS的專家,管它內部如何,好用才是王道,因此,如果您感興趣,請即可下載IPFS,從現在開始。 如果您擁有數個G或數個T的閑置存儲空間,並且希望它們得到充分利用,那麼您可以在網路啟動時註冊成為早期的Filecoin礦工。 如果您有興趣成為早期存儲用戶,也可以註冊。

IPFS已經可以試用,試試看,你會覺得它非常了不起,理解使其成為可能的技術更加令人興奮。 如果成功,IPFS及其補充協議可為下一代網路提供更靈活的基礎設施。我們的網路瀏覽將變得分散式,更安全,更靈活和自由。

主要參考資料

IPFS whitepaper (draft 3)

Filecoin whitepaper

A Beginner』s Guide to IPFS

關於去中心化存儲的思考

區塊鏈是關於信任的技術

此文首發幣乎,轉載請註明出處。

幣乎註冊領KEY,獎勵豐厚,趕緊看看!點此加入

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 前沿技術跟蹤分析投資 的精彩文章:

TAG:前沿技術跟蹤分析投資 |