1. 程式人生 > >曲速未來:瞭解以太坊的P2P網路

曲速未來:瞭解以太坊的P2P網路

區塊鏈安全諮詢公司 曲速未來 表示:P2P技術有可能通過利用終端裝置的豐富資源來緩解集中式系統的缺點,並且自20世紀90年代以來已被eMule,bitTorrent和Skype等流行軟體採用。它也是區塊鏈系統的關鍵組成部分,如比特幣或乙太網,也就是Shyft網路衍生自的系統。大多數人都聽說過P2P,但不知道究竟是什麼。

什麼是P2P網路?

點對點(P2P)網路是一種覆蓋網路 - 也就是說,它建立在公共網際網路之上。在數學上,它可以被視為有向圖G =(V,E),其中V是網路中的對等體集合,E是對等體之間的連結集合。每個對等體 p具有唯一的標識號pid。E中的連結(p,q)表示p具有向q傳送訊息的直接路徑; 也就是說,p可以使用q的pid作為目的地通過網路向q傳送訊息。雖然在底層TCP / IP網路中,類似的IP地址可以轉換到附近的物理位置,但很少有這種直接相關。

理想情況下,所有對等體都應通過路徑連線。由於各個對等體僅具有網路拓撲和對等成員資格的不完整檢視,因此覆蓋依賴於中間對等體以將訊息轉發到覆蓋的正確區域。圖結構在每對對等體之間提供多條路徑,並且通過在對等節點改變的情況下啟用連通性來促進彈性。在每個對等級別,圖表的連線性反映在與其他對等方的鄰接關係中。當對等體加入或離開網路時,相鄰對等體可能具有不正確的鄰接資訊。覆蓋維護機制用於保持鄰接資訊的更新,從而保持所有節點之間的連通性。

P2P網路的參與者將其部分資源提供給其他網路參與者。每個對等體都提供計算週期(CPU),磁碟儲存和網路頻寬,而無需中央協調例項。與傳統的客戶端 - 伺服器模型相比,同行既是供應商又是網路資源的消費者 - 只有伺服器供應和客戶消費。因此,P2P網路有可能解決客戶端 - 伺服器模型的侷限性,例如可擴充套件性和單點故障。

對於加入P2P覆蓋的對等體,通常存在最小資源貢獻閾值。資源貢獻應該是公平的。公平性標準可以規定,例如,任何對等體的平均貢獻應該在P2P系統的總體平均值的統計界限內。資源貢獻也應該是互利的。如果利益與所貢獻的資源相當,則激勵使用者參與P2P應用程式。

以太坊的P2P網路如何運作?

官方的以太坊客戶端節點軟體Geth基於稱為Kademlia DHT的覆蓋維護機制實現其對等發現協議(RLPx節點發現協議)。雖然Kademlia旨在有效地定位和儲存P2P網路中的內容,但以太坊的P2P網路僅用於發現新的同伴。

Kademlia

在以太坊網路中,每個客戶端節點與一個enode ID相關聯,然後進行雜湊將SHA3轉換為256位值。Kademlia通過XOR度量定義距離,因此兩個256位數之間的距離是它們的按位異或。每個對等體具有由256個不同桶組成的資料結構,其中桶i儲存關於距其自己的節點ID在距離2 ^(i-1)到2 ^ i處的16個對等體的資訊。為了發現一個新的對等體,以太坊節點選擇自己作為目標x,在其桶中查詢最接近目標x的16個節點,並要求它們各自從它們的桶“返回”更接近目標x的16個節點,從而導致最多16x16個新發現的節點。從這些16x16個新發現的節點中,最接近目標x的16個節點然後被要求返回更接近x的16個節點。該過程迭代地繼續,直到找不到新節點。

同行通訊

Geth使用UDP連線來交換有關P2P網路的資訊。有四種類型的UDP訊息。一平訊息請求乒乓球在返回訊息。這對訊息用於確定相鄰節點是否響應。甲findnode訊息請求的鄰居包含業經響應節點16個節點的列表的訊息。建立對等連線後,Geth節點通過加密和認證的TCP連線交換區塊鏈資訊。

資料結構

Geth客戶端在兩個資料結構中儲存有關其他節點的資訊。第一個是名為db的長期資料庫,它儲存在磁碟上並在客戶端重新啟動後持續存在。該資料庫包含每個客戶端已經看到節點的資訊。每個db條目包括節點ID,IP地址,TCP埠,UDP埠,傳送到節點的最後一次ping的時間,從節點接收的最後一個pong的時間,以及節點未能響應findnode訊息的次數。如果從節點收到的最後一個pong的時間超過1天,則該節點將從db中刪除。

第二個資料結構是一個名為table的短期資料庫。客戶端重新啟動時,該表為空。該表由256個桶組成,每個桶最多可容納16個條目。每個條目記錄有關另一個以太坊節點的資訊-其節點ID,IP地址,TCP埠和UDP埠。如果節點連續4次以上未對findnode做出響應,則將從表中刪除該節點。

區塊鏈安全諮詢公司 曲速未來 提醒:當客戶端首次啟動時,它具有一個空資料庫,並且只知道六個硬編碼的載入程式節點。然後,當客戶端開始發現對等體時,它會根據上述機制將它們新增到db和table。

本文內容由 曲速未來 (WarpFuture.com) 安全諮詢公司整理編譯,轉載請註明。 曲速未來提供包括主鏈安全、交易所安全、交易所錢包安全、DAPP開發安全、智慧合約開發安全等相關區塊鏈安全諮詢服務。