當程序第一啓動時,它並不知道任何活躍節點的ip地址。爲了發現一些全節點的ip地址,他們會查詢硬編碼在比特幣內核或BitCoinJ中的,一個或多個DNS域名,在返回的結果中應該包含一個或多個DNS A記錄,裏面有一些可接受新連接的全節點的ip地址。
DNS 種子由比特幣社區成員維護。其中一部分提供動態DNS種子服務器,它通過掃描比特幣網絡,自動獲取活動節點的ip地址;其他的提供一些靜態DNS種子,這需要手動更新,不過他們很有可能提供不活躍節點的ip地址。不管是動態的,還是靜態的DNS種子,如果節點在主網上運行在端口號8333,或在測試網絡運行在端口號18333,就會被加入到DNS種子。
DNS種子結果沒有被授權,一個惡意的DNS種子運營者或網絡中間人能返回僅被自己控制的節點的ip地址,在自己的網絡中,孤立節點,並給他們假的交易,區塊數據。因爲這個原因,程序不應該只依賴一個DNS種子。
然而,節點通常會離開網絡或者改變ip地址,這樣程序在啓動時,在需要多次嘗試纔有可能連接到比特幣網絡。這了會增加連接到比特幣網絡的延遲時間,使得用戶在發送交易或檢查支付狀態前,不得不等待一段時間。
爲避免這種延遲,BitcoinJ總是使用動態DNS種子,來獲取那些被確定爲活躍節點的IP地址。比特幣處內核也嘗試在降低延遲,避免使用不必要的DNS節點中權衡。如果比特幣內核在它的節點數據庫中有記錄,它就會用11秒時間去連接至少其中一個節點,失敗後,才使用DNS節點獲取ip地址;如果在11秒內成功建立連接,則不在向DNS種子查詢。
比特幣代碼分析4 節點發現機制
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
比特幣價格下跌,DDoS攻擊的數量可能會增加!
therfigeln
2021-05-26 13:50:33
“比特幣殺手”chia幣為何突然爆火?chia幣又是什麼?
therfigeln
2021-05-19 10:55:32
比特幣的原理及運作機制
天夣
2019-02-23 00:36:41
挖礦程序中毒分析(有這篇夠不)
冷暖己知
2019-02-23 00:29:40
MyEclipse上運行比特幣全節點bitcoinj
thao888
2019-02-22 23:41:58
深入理解Plasma(二)Plasma 細節
登鏈學院
2019-02-22 23:35:59
比特幣如何挖礦(挖礦原理)-工作量證明
登鏈學院
2019-02-22 23:35:59
精選文章推薦彙總-2018.03.01
51CTO文章精選
2019-02-22 22:49:07
bitcoin: 何爲燃燒地址
shooter
2019-02-22 22:04:23
幣圈九四一週年大事記
Venus1100
2019-02-22 21:20:43
源碼分析(五)—配置篇
瀟塵淵
2019-02-23 15:22:46
SpringMVC源碼分析
pogy
2019-02-23 00:09:45
二、後臺登陸login.php【dedecms後臺源碼分析】
heyubingfeng
2019-02-22 21:13:16
三、後臺退出exit.php【dedecms後臺源碼分析】
heyubingfeng
2019-02-22 21:13:12