Qtum節(jié)點(diǎn)是如何實(shí)現(xiàn)全球的通信與協(xié)作的
4月12日,Qtum量子鏈全節(jié)點(diǎn)激勵(lì)計(jì)劃發(fā)布,瓜分百萬(wàn)大獎(jiǎng)!活動(dòng)正式啟動(dòng)截止目前為止獎(jiǎng)勵(lì)持續(xù)發(fā)出了32個(gè),社區(qū)熱度持續(xù)不減,但對(duì)于Qtum全節(jié)點(diǎn)如何去連接,為什么家庭網(wǎng)絡(luò)無(wú)法實(shí)現(xiàn)連接Qtum全節(jié)點(diǎn)?包括相關(guān)的端口設(shè)置卻知之甚少,因此奉上此篇社區(qū)教程幫助你更深入了解。在參加活動(dòng)收獲獎(jiǎng)勵(lì)的同時(shí),也讓社區(qū)的朋友能夠成為Qtum技術(shù)專家。
傳統(tǒng)中心化的應(yīng)用程序有時(shí)僅需家庭網(wǎng)絡(luò)就可以很好的使用,但Qtum全節(jié)點(diǎn)設(shè)置會(huì)出現(xiàn)很多的狀況,例如你的防火墻、路由器、病毒軟件都會(huì)為自動(dòng)阻止你。
隨時(shí)打開社交APP,你可以隨時(shí)向陌生人發(fā)起好友請(qǐng)求,本文就以 “好友請(qǐng)求”為例來(lái)講解Qtum節(jié)點(diǎn)的連接,就容易理解Qtum的節(jié)點(diǎn)是如何實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)作的。
那么,究竟什么是Qtum全節(jié)點(diǎn),節(jié)點(diǎn)網(wǎng)絡(luò)是如何相互連接的?如何設(shè)置這些內(nèi)置的防火墻和路由器?
為了解答以上的問(wèn)題,我們有必要先了解端口和網(wǎng)絡(luò)協(xié)議基本概念,熟悉“netstat”這個(gè)工具。Qtum節(jié)點(diǎn)(核心錢包)會(huì)與多達(dá)125個(gè)節(jié)點(diǎn)相連接。前8個(gè)連接僅為出站連接:節(jié)點(diǎn)向外連接到其他8個(gè)節(jié)點(diǎn)。如果打開路由器和家庭網(wǎng)絡(luò)的端口3888,節(jié)點(diǎn)將接受其他9到125個(gè)節(jié)點(diǎn)的接入連接。具有接入連接的節(jié)點(diǎn)會(huì)支持連接到網(wǎng)絡(luò)的新節(jié)點(diǎn),并會(huì)上傳區(qū)塊從而同步那些新節(jié)點(diǎn)。具有8個(gè)出站連接的節(jié)點(diǎn)做不到這一點(diǎn)。
1. 節(jié)點(diǎn)、錢包、共識(shí)
開始之前,先回顧下節(jié)點(diǎn)、錢包和共識(shí)在區(qū)塊鏈中的作用。
· 節(jié)點(diǎn):在計(jì)算機(jī)網(wǎng)絡(luò)中,節(jié)點(diǎn)是連接到網(wǎng)絡(luò)的端點(diǎn)應(yīng)用程序,為網(wǎng)絡(luò)提供數(shù)據(jù)接口。Qtum全節(jié)點(diǎn)會(huì)接入到Qtum網(wǎng)絡(luò),將區(qū)塊鏈同步到本地存儲(chǔ)空間,并實(shí)時(shí)驗(yàn)證。Qtum節(jié)點(diǎn)可以增強(qiáng)具有這些功能的網(wǎng)絡(luò)的安全性,并有助于提高對(duì)該類網(wǎng)絡(luò)效率。
· 錢包:錢包持有用于管理交易、顯示賬戶余額等的私鑰。輕錢包(移動(dòng)錢包、網(wǎng)絡(luò)錢包、硬件錢包等)具有此功能,但它們并不是全節(jié)點(diǎn),因?yàn)樗鼈儾粫?huì)管理區(qū)塊鏈賬本,也不會(huì)像全節(jié)點(diǎn)那樣對(duì)所有交易和區(qū)塊進(jìn)行處理。相反,這些輕錢包會(huì)通過(guò)調(diào)用API連接到運(yùn)行了全節(jié)點(diǎn)的主服務(wù)器上。
· 共識(shí): “共識(shí)”就是一個(gè)協(xié)議達(dá)成的過(guò)程,用于確定下一個(gè)生產(chǎn)區(qū)塊的節(jié)點(diǎn)。所有礦工(或委托人)都遵循相同的共識(shí)協(xié)議。
那么你會(huì)意識(shí)到Qtum核心錢包具有以下三個(gè)功能:節(jié)點(diǎn)、錢包、共識(shí),并且核心錢包應(yīng)用程序可以通過(guò)以下方式運(yùn)行:
1. 僅一個(gè)節(jié)點(diǎn)(沒有QTUM)
2. 一個(gè)節(jié)點(diǎn)和一個(gè)錢包(有QTUM,但沒有被委托)
3. 一個(gè)節(jié)點(diǎn)、錢包和共識(shí)(有QTUM并且正處于委托狀態(tài))
2. Qtum 節(jié)點(diǎn)
根據(jù)設(shè)計(jì),Qtum節(jié)點(diǎn)的前8個(gè)連接僅為外聯(lián)。你發(fā)起了好友請(qǐng)求,并與其他節(jié)點(diǎn)連接。這種“外聯(lián)”概念可能會(huì)讓人覺得困惑;節(jié)點(diǎn)總是與對(duì)等節(jié)點(diǎn)進(jìn)行雙向通信,但對(duì)此的解釋是對(duì)于前8個(gè)連接,你的節(jié)點(diǎn)會(huì)主動(dòng)向其他節(jié)點(diǎn)發(fā)起連接從而來(lái)啟動(dòng)連接。
超過(guò)8個(gè)對(duì)等節(jié)點(diǎn)的連接都將是傳入連接(除非你使用的是“addnode”命令,該命令始終會(huì)發(fā)起好友請(qǐng)求)。同時(shí),你的節(jié)點(diǎn)將接受來(lái)自其他節(jié)點(diǎn)的連接請(qǐng)求-遠(yuǎn)程節(jié)點(diǎn)正在發(fā)送“好友請(qǐng)求”。具有傳入連接的節(jié)點(diǎn)在Qtum網(wǎng)絡(luò)上具有特殊功能:它們?cè)试S新節(jié)點(diǎn)接入網(wǎng)絡(luò),并將之前存儲(chǔ)的區(qū)塊上傳到這些新節(jié)點(diǎn)。正是因?yàn)樗鼈?,網(wǎng)絡(luò)就不能隨著新的節(jié)點(diǎn)而擴(kuò)大。
下面我們將看到,節(jié)點(diǎn)接收傳入連接的能力取決于路由器和家庭網(wǎng)絡(luò)是否打開了端口3888,以便這些傳入的好友請(qǐng)求能夠到達(dá)節(jié)點(diǎn)。
3. 路由器和家庭網(wǎng)絡(luò)
大多數(shù)的家庭網(wǎng)絡(luò)是通過(guò)互聯(lián)網(wǎng)服務(wù)提供商(ISP)提供的網(wǎng)絡(luò)訪問(wèn)設(shè)備連接到互聯(lián)網(wǎng)的,該設(shè)備可以是電纜調(diào)制解調(diào)器、DSL調(diào)制解調(diào)器或其他網(wǎng)絡(luò)接口設(shè)備。調(diào)制解調(diào)器通常有一個(gè)內(nèi)置的路由器,路由器提供從單個(gè)ISP到家庭網(wǎng)絡(luò)上多個(gè)內(nèi)部IP地址的地址轉(zhuǎn)換。這些內(nèi)部IP地址通常由UPNP(通用即插即用)等協(xié)議自動(dòng)分配,需要了解的是路由器會(huì)將單個(gè)外部公共IP地址映射到多個(gè)內(nèi)部專用IP地址從而使得設(shè)備能接入家庭網(wǎng)絡(luò)。
讓我們來(lái)看一個(gè)在家庭網(wǎng)絡(luò)上運(yùn)行的Qtum節(jié)點(diǎn)的簡(jiǎn)化網(wǎng)絡(luò):
ISP為這個(gè)寬帶客戶提供的公共IP地址是123.24.67.89,互聯(lián)網(wǎng)上任何地方的計(jì)算機(jī)都可以向這個(gè)地址發(fā)送消息。運(yùn)行Qtum節(jié)點(diǎn)的計(jì)算機(jī)A的內(nèi)部網(wǎng)絡(luò)IP地址為192.168.1.10,運(yùn)行網(wǎng)絡(luò)瀏覽服務(wù)的計(jì)算機(jī)B的內(nèi)部網(wǎng)絡(luò)IP地址為192.168.1.11,計(jì)算機(jī)C也是如此。
若進(jìn)行通訊,路由器知道如何將一個(gè)網(wǎng)頁(yè)請(qǐng)求發(fā)送回計(jì)算機(jī)B,以及將一個(gè)Qtum節(jié)點(diǎn)傳出的節(jié)點(diǎn)請(qǐng)求返回到計(jì)算機(jī)A。但是在Qtum節(jié)點(diǎn)與具有這些傳出的對(duì)等節(jié)點(diǎn)請(qǐng)求的前8個(gè)節(jié)點(diǎn)連接之后又會(huì)發(fā)生什么呢?
對(duì)于傳入的對(duì)等節(jié)點(diǎn)的請(qǐng)求,路由器并不能夠智能地自動(dòng)將這些好友請(qǐng)求路由到計(jì)算機(jī)A中的節(jié)點(diǎn)。網(wǎng)絡(luò)上的其他對(duì)等節(jié)點(diǎn)可以看到IP地址123.45.67.89正在運(yùn)行著一個(gè)Qtum節(jié)點(diǎn),它們會(huì)發(fā)送好友請(qǐng)求(通過(guò)端口3888),但路由器不知道是否要將該消息發(fā)送到計(jì)算機(jī)A、B或C。好友請(qǐng)求會(huì)被忘記,因此無(wú)法建立傳入連接,計(jì)算機(jī)A中的Qtum對(duì)等節(jié)點(diǎn)永遠(yuǎn)都交不到任何新朋友。
IP地址上的端口后綴將傳入消息導(dǎo)向特定應(yīng)用程序。例如,你的網(wǎng)絡(luò)可以接收發(fā)送到端口80或端口101或端口3888的消息。要將傳入的好友請(qǐng)求發(fā)送到節(jié)點(diǎn),我們需要開放計(jì)算機(jī)A的端口3888來(lái)使用端口轉(zhuǎn)發(fā)功能。
在這里我們需要,要打開端口3888,我們將路由器配置為將端口3888的任何流量都轉(zhuǎn)發(fā)到IP地址192.168.1.10上,從而到達(dá)計(jì)算機(jī)A中的節(jié)點(diǎn)。根據(jù)你的網(wǎng)絡(luò)設(shè)置,你還可以從錢包中映射端口3888:選擇設(shè)置--選項(xiàng)-網(wǎng)絡(luò)-使用UPnP來(lái)映射端口。
4. 安全性說(shuō)明
網(wǎng)絡(luò)上總是存在風(fēng)險(xiǎn)的,并且不能100%保證安全性。請(qǐng)理解端口是如何進(jìn)行轉(zhuǎn)發(fā)的,并確定它是否適合于你的網(wǎng)絡(luò)和安全配置。為了提高安全性,你可以使用VPN或TOR連接,并更新你的的所有路由器、防火墻、操作系統(tǒng)和錢包軟件。最大程度的保證加密貨幣的安全性的方式就是使用是硬件錢包或離線的冷錢包。
5. 端口轉(zhuǎn)發(fā)
要設(shè)置端口轉(zhuǎn)發(fā),你需要登錄到路由器,首先,讓我們獲取路由器在網(wǎng)絡(luò)上的IP地址。在待運(yùn)行節(jié)點(diǎn)的計(jì)算機(jī)上(本例中的計(jì)算機(jī)A),打開Web瀏覽器并在URL地址欄中輸入地址192.168.1.1(路由器IP)。如果這樣打不開路由器的登錄頁(yè)面,請(qǐng)打開計(jì)算機(jī)上的終端或命令行窗口,然后在Mac/Linux上輸入“ifconfig”或在Windows上輸入“ipconfig”。你將看到家庭網(wǎng)絡(luò)上的設(shè)備列表。查找“默認(rèn)網(wǎng)關(guān)”行從而獲取路由器的IP地址:
接下來(lái),你需要登錄到路由器。如果你之前從來(lái)沒有更改過(guò)帳戶名和密碼,你可以在路由器文檔中查找信息,也可以在顯示默認(rèn)路由器密碼的網(wǎng)站中獲取。
網(wǎng)站portforward.com有流程和屏幕截圖,教你如何在數(shù)百個(gè)路由器上配置端口轉(zhuǎn)發(fā)(只需點(diǎn)擊它們的廣告),過(guò)程基本上就是登錄到你的路由器,找到設(shè)置端口轉(zhuǎn)發(fā)的部分,然后填寫一個(gè)表,將TCP輸入端口3888分配給節(jié)點(diǎn)的本地IP地址。
6. Canyouseeme.Org
可以使用網(wǎng)站canyouseeme.org來(lái)確認(rèn)端口3888是否已經(jīng)打開。這個(gè)網(wǎng)站的運(yùn)行機(jī)制是將“好友請(qǐng)求”發(fā)送到本地計(jì)算機(jī)上的特定端口(正在運(yùn)行canyouseme網(wǎng)頁(yè)的瀏覽器所在的計(jì)算機(jī))。確保Qtum節(jié)點(diǎn)正在運(yùn)行中,以便它能夠響應(yīng)請(qǐng)求。如果端口已經(jīng)打開并且節(jié)點(diǎn)正在運(yùn)行,則該網(wǎng)站會(huì)返回下面這條提示消息:
7. Qtum-Qt錢包對(duì)等節(jié)點(diǎn)信息
你可以使用幫助-調(diào)試窗口…-對(duì)等節(jié)點(diǎn) 來(lái)查看Qtum-Qt錢包上的對(duì)等節(jié)點(diǎn)的連接情況。在這里,你可以看到出站對(duì)等節(jié)點(diǎn)連接旁邊有一個(gè)小的“向下箭頭”,在入站對(duì)等節(jié)點(diǎn)連接旁邊有一個(gè)小的“向上箭頭”。或者只需單擊對(duì)等節(jié)點(diǎn)來(lái)查看詳細(xì)信息,信息顯示如下:
通過(guò)使用帶有命令行接口的服務(wù)器錢包qtumd,你可以通過(guò)輸入命令“getconnectioncount”和“getpeerinfo”來(lái)查看對(duì)等節(jié)點(diǎn)連接情況。
8. Netstat實(shí)用程序
在本節(jié)中,我們介紹了一些網(wǎng)絡(luò)實(shí)用程序和診斷技術(shù)。通常情況下,家庭網(wǎng)絡(luò)允許Qtum節(jié)點(diǎn)自動(dòng)開始同步,但如果不能自動(dòng)同步的話,這些工具可能有助于排除故障。
要想監(jiān)控家庭網(wǎng)絡(luò),推薦使用netstat,它可以使用程序通過(guò)命令提示符來(lái)運(yùn)行此工具。Mac和Windows系統(tǒng)是內(nèi)置該程序的,不過(guò)在Linux上你可能需要手動(dòng)安裝它(#apt get install net tools)。參考文獻(xiàn)2中給出了netstat選項(xiàng)列表。
“netstat -n”命令將以數(shù)字的形式顯示網(wǎng)絡(luò)地址和端口,它會(huì)列出連接到遠(yuǎn)程節(jié)點(diǎn)端口3888上的節(jié)點(diǎn)。這里的前3行顯示了連接到節(jié)點(diǎn)端口3888的傳入連接,其余8行顯示了路由器分配的隨機(jī)端口號(hào)的傳出連接,因此它可以知道哪個(gè)本地計(jì)算機(jī)應(yīng)該得到響應(yīng):
參考材料:
1. 只有輸出連接的節(jié)點(diǎn)才有助于網(wǎng)絡(luò)的運(yùn)行,但由于不能接受新的對(duì)等節(jié)點(diǎn)或上傳區(qū)塊來(lái)幫助新的對(duì)等節(jié)點(diǎn)同步區(qū)塊鏈
2. netstat程序