Qtum量子鏈對等節點通訊原理剖析以及除錯

買賣虛擬貨幣

這篇文章深入探討了執行 Qtum 全節點時其中一個最有趣的問題:Qtum節點如何連線到其他對等節點,過程是怎樣的以及無法連線時如何排除錯誤?對大多數應用程式來說,家庭網路足夠簡單易用,但是當你使用 Qtum 節點遇到問題時,你打算怎麼處理? 路由器 - 防火牆 - 防毒軟體體系具有許多內建保護功能,可以確保你網路的安全和正常執行,但執行區塊鏈對等網路可能會與這些內建保護措施發生衝突。

舉例而言,你的節點將 “好友請求” 傳送出去,與其他節點試圖連線,它們確認請求方可和你的節點聊天了。你的節點也能夠從其他節點接收“好友請求”。我們將會了解什麼是 Qtum 全節點,Qtum 網路與對等連線如何運作,以及如何設定可能阻止這些通訊的這些通訊的防火牆和路由器。

我們將花一些時間在埠和網路協議上,並會涉及與 “netstat” 網路狀態相關的工具。 我希望在我們完成這些工作之後,你將瞭解你的 Qtum 節點如何能愉快地與世界各地的節點進行資訊交換。

Qtum 主網效能

據我計算,Qtum 主網持續穩定執行中,Qtum全網權重約為20.800.00.推算依據是 一個餘額為20.800.000的穩定挖礦地址獲得了8.9%的區塊獎勵,這意味著挖礦的年化收益約為4.2%。

設定防毒軟體

由於許多歷史原因,許多防毒程式在下載 Qtum 錢包安裝檔案時會誤報病毒錯誤,並隔離或刪除這些下載。 要解決此問題,請為防毒程式新增白名單,如果有問題,請從 Qtum GitHub 站點https://github.com/qtumproject/qtum/releases下載並使用驗證檔案校驗。

Qtum 對等連線

Qtum 節點(核心錢包)將連線多達 125 個對等點。 前 8 個連線僅出站:連線到其他 8 個節點。 如果路由器和家庭網路的埠 3888 處於開啟狀態,則該節點將接受對等點 9 到 125 的入站連線。值得注意的是,無論挖礦節點連線到8個節點還是125個節點,都不影響其獲得挖礦獎勵。具有大於 8 個對等連線的節點支援連線到網路的新節點,並將下載塊來同步這些新節點。 有 8 個出站連線的節點不能這樣做。現在我們已經繞過防毒程式並安裝了錢包,我們可以啟動該節點並開始連線到其他節點。

全節點連線

在瞭解關於 Qtum 對等連線如何工作的細節之前,我們先看一下全節點的角色,挖礦錢包以及出站連線與入站連線的問題。Qtum 全節點連線到 Qtum 對等網路,將整個區塊鏈同步到本地儲存中,並實時驗證和傳送每個區塊和交易。 Qtum 節點以此驗證來保護網路,然後將塊/交易轉發給其他節點。 Qtum 全節點可能另外持有 QTUM 並挖礦以贏取塊獎勵。這些全節點有助於保護網路,並有機會贏得塊獎勵。

對 Qtum 來說,全節點始終是錢包,但錢包並不總是全節點,具有入站連線的節點在 Qtum 網路上具有特殊功能:它們將允許新節點連線到網路,並且將它們以前存的塊下載到這些新節點。對於有入站連線的節點,我們應該特別感謝,沒有它們,網路無法透過新增新節點來增長。我們將在下面看到,節點在主網上允許入站連線的能力取決於路由器到家庭網路的埠 3888 ,所以這些入站的好友請求可以實際到達節點。

路由器和家庭網路

大多數家庭網路透過因特網服務提供商(ISP)提供的網路接入裝置連線到因特網,該服務提供商可以是電纜調變解調器,DSL調變解調器或其他網路介面裝置。 調變解調器通常有一個內建路由器,路由器的工作是提供從 ISP 提供的單個公共 Internet 地址到家庭網路上多個內部IP地址的地址轉換。 這些內部IP地址通常由諸如 UPnP(universal plug and play)之類的協議自動分配,重要的是要知道,路由器將單個外部 IP 地址對映到家庭網路上連線的多個裝置的內部IP地址。

Netstat工具

在本節中,我們新增一些實用的網路程式和診斷技術。 通常,你的家庭網路允許 Qtum 節點自動同步,但如果沒有,這些工具可能有助於排除錯誤。為了監控你的家庭網路,netstat(網路狀態)程式是一個很好的開始。它內建於 Mac 和 Windows,在Linux上你可能需要安裝它(apt-get install net-tools)。“netstat -n” 命令將以數字形式顯示網路地址和埠,顯示一個節點連線到埠 3888 上的遠端節點:

Addnode 命令

如果你的新節點沒有與對等方連線,則需要使用 “addnode” 命令提供幫助。 你可以告訴節點向特定 IP 傳送“好友請求”。但是你應該使用哪些 IP?addnode 命令的一個很好的對等 IP 地址來源是 CoinExchange.io,它列出了來自其 Qtum 節點的 “getpeerinfo” 資料。要使用此站點中的IP地址,在debug window中透過命令列輸入,例如·addnode 123.45.67.89:3888 add對 addnode 命令的正確響應是 “null”,然後你的節點將嘗試一兩分鐘連線到該對等點 IP 地址。 你可以嘗試手動新增 5 個或 10 個對等連線。

啟動時連線

在本節中,我們將瞭解節點如何在啟動時建立連線,並使用 netstat 來監聽網路並檢視節點如何連線。 我們的 netstat 命令是 “netstat -an 30”,意思是每隔 30 秒以數字格式顯示所有連線和監聽埠。啟動節點時,有幾種方法可以找到要連線的對等點。如果節點先前已經執行,它將儲存 IP 地址和時間在 peers.dat 檔案中。

如果節點是新的或者在 peers.dat 檔案中找不到一些好的IP地址,它將向 DNS 伺服器查詢當前 IP 地址的列表。 最後,你可以手動輸入 IP 地址來嘗試使用 “addnode” 命令。首先,我們安裝時將節點設定為在全域性啟動,且不使用 peers.dat 檔案中的歷史記錄(只需重新命名 peers.dat 檔案,使節點找不到它)。

下面是一個新節點尋找其他節點的訊息序列。 這個節點沒有使用留有以前“朋友”的 peers.dat 檔案。 在半小時的過程中,它將嘗試多個IP地址,找到兩個要連線的對等點:

Qtum 核心錢包有一個檔案,其中包含所有“好友請求”,即 peers.dat 檔案。 同一個節點使用 peers.dat 檔案啟動(將先前的檔名改回 “peers.dat”)可使錢包在 12 分鐘內與 10 個對等點連線。 下面的圖表顯示錢包另找新朋友(沒有 peers.dat 檔案 - 如上所示)與僅僅聯絡以前的朋友(使用peers.dat 檔案)時的差異:

用於網路事件的 Debug.log 檔案

Qtum 節點現在已經就緒它的特寫,我們將透過設定 debug.log 來捕獲所有網路事件。 這是啟動錢包時透過 debug=net 開關完成的:·C:\Program Files\Qtum>qtum-qt.exe -debug=net根據你的作業系統調整此命令。加上該選項後,節點將記錄有關網路活動的所有詳細資訊。有關顯示連線如何建立簡單的列表(下面的參考文獻7中給出了更完整的序列),日誌顯示:

(1)啟動後,我們的節點嘗試根據 peers.dat 檔案連線到多個 IP。 它在十天前看到節點 59.189.111.143.但現在不能連線。

(2)我們的節點連線到 DNS 種子伺服器以獲取最近的一些 IP 地址。

(3)我們的節點試圖連線到地址 35.226.31.206.要嘗試的是第6個節點。

(4)我們的節點在 35.226.31.206 處向節點傳送版本訊息(軟體版本,塊編號和時間參考)。 該版本訊息是“好友請求”。遠端節點將使用自己的版本訊息進行響應。

(5)節點交換 verack 訊息(版本確認)以確認連線。 現在它們是好友,可以開始聊天了。 我們的節點將向遠端節點請求額外的IP地址,傳送其他“好友請求”。

(6)我們的節點將其最新的塊(它離線差了 4 塊)傳送到 35.226.31.206.並請求下載塊以追上。

(7)我們的節點開始接收來自節點 6 的塊。請注意時間戳,節點啟動後嘗試連線節點 6(對等節點 1 到節點 5 未連線)需要45秒,然後等待一秒完成連線(verack 訊息)並開始下載塊。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;