IPFS到底是如何運用Libp2p的?

語言: CN / TW / HK

Libp2p是協議實驗室建立的一流專案,等同於IPFS和Filecoin, Libp2p也是IPFS和Filecoin的基礎設施,也就是說Libp2p是IPFS和Filecoin的底層協議 ,那麼IPFS是如何使用Libp2p技術的呢?為什麼協議實驗室如此重視?本文將詳細介紹Libp2p在IPFS的應用。

Libp2p到底是什麼?

Libp2p是協議、規範和庫的模組化系統,支援對等網路應用的開發。簡單來說, IPFS上的任意兩個節點 ,無論在哪裡,無論在什麼環境,無論執行什麼作業系統,無論是否經過NAT(網路地址轉換),只要有物理連結的可能, Libp2p都可以完成這個連結 。眾所周知,在任何系統或網路中,資料(訊號)傳輸都是關鍵。否則, 兩個節點之間沒有通訊,系統或網路就起不到大的作用。

協議實驗室構建Libp2p的原因:

對於協議實驗室來說,為什麼一開始就要考慮構建Libp2p呢?在做IPFS專案的時候,我們發現有 大量的異構裝置執行不同的作業系統,它們的網路環境非常複雜 。例如,儘管有許多協議變化,比特幣仍需要51%的節點支援。國內有一些NAT,有些場景不需要TCP(傳輸控制協議)鏈路,因為它的 檔案系統多樣且不協調,需要通過其他協議的變化來統一,所以Libp2p應運而生。

Libp2p有哪些核心功能?

Libp2p是一個 P2P 的網路,分為網路層、路由層、交換層 ,在之前的文章也有提到過這三點,只不過當時介紹的比較淺,下面會將這些結合起來一起解析。

例如,在當前擁有數十億臺聯網裝置的世界中,我們都知道有許多欺詐電話(甚至冒充110號碼進行欺詐),而Libp2p使用公鑰密碼作為對等方身份的基礎,它可以以點的形式給每個對等方一個全球唯一的“名稱”。其次,PeerId還允許任何人檢索識別出的對等體的公鑰,從而實現對等體之間的安全通訊。每個人都可以認為 每個人的通訊裝置也有自己的金鑰身份,這意味著別人無法輕易破解你的通訊裝置,安全性極強。

它不僅是身份確認的安全性,也是對等體(節點)之間傳送和接收資料的安全性 。在交流的過程中,任何第三方都無法讀懂我們的對話,也無法在飛行中更改。Libp2p支援從交通工具“升級”一個安全的加密通道。過程相當靈活,可以支援多種加密通訊方式。TLS 1.3和noise已經實現了很長時間,但有一點是libp2p的每種語言實現都不一定支援這兩種語言。

擁有身份後,確定其身份是安全的,不會被第三方讀取和交換,然後節點通過網路進行傳輸和通訊 。Libp2p的基礎是傳輸層,它可以負責從一個對等點到另一個對等點的實際資料傳輸和接收。Libp2p還提供了一個簡單的介面,可以調整以支援現有和未來的協議,允許Libp2p應用程式在許多不同的執行時和網路環境中執行。

其實運輸交換過程都可以看做節點連結的建立過程,連結之後自然也能交流或交換資料。其中主要包括3個步驟, 包括地址解析、傳輸協議適配、雙方協商。這也是Libp2p核心功能之一。

連線建立後,Libp2p會先與雙方協商確定對方支援哪些功能,主要使用identify協議,這是Libp2p內建的基礎協議,可以交換節點的公鑰和本地監聽地址。協商完成後,連線兩端的節點將找到相互支援的協議並初始化它們。每個協議的處理程式(回撥函式)將在初始化期間註冊,當協議資料到達時,將呼叫相應的處理程式。因為多個傳輸協議會重用同一個底層連線,所以連線會被拆分成多個“Stream”,從而構建一個強大的p2p網路。

總結

上述功能流程基本都應用到了IPFS網路,但是Libp2p還在不斷髮展迭代的過程中,但是已經應用到了IPFS非常成熟。其他很多區塊鏈專案也使用Libp2p作為底層,相當於分佈層、呼叫層、傳輸層和網路層。IPFS和Filecoin在“塊資料同步”、“檔案傳輸”和“節點搜尋”等核心環節使用Libp2p。比如Polkadot Poka Chain,為了相容Ethereum等主鏈,採用異構多鏈架構,同時也考慮了終端裝置的複雜場景,選擇libp2p作為其底層傳輸層。

些核心功能?哪些核心功能?