bitcoin P2P協議分析

比特幣網絡節點具有所有四個功能(理論上的很多來自《精通比特幣》):

  • 錢包:用戶錢包也可以作爲全節點的一部分(桌面比特幣客戶端中比較常見);當前,越來越多的用戶錢包都是SPV節點(諸如智能手機)
  • 礦工:挖礦節點通過運行在特殊硬件設備上的工作量證明(proof-of-work)算法,以相互競爭的方式創建新的區塊,一些挖礦 節點同時也是全節點,保有區塊鏈的完整拷貝;還有一些參與礦池挖礦的節點是輕量級節點,它們必須依賴礦池服務器維護的全節點進行工作
  • 完整的區塊鏈數據庫:保有一份完整的、最新的區塊鏈拷貝,這樣的節點被稱爲“全節點”。全節點能夠獨立自主地校驗所有交易,而不需藉由任何外部參照
  • 網絡路由:每個節點都參與驗證並傳播交易及區塊信息,發現並維持與對等節點的連接

比特幣主網絡:大約5000-8000個運行着不同版本比特幣核心客戶端(Bitcoin Core)的監聽節點  +   以及幾百個運行着各類比特幣P2P協議的應用,一小部分節點也是挖礦節點,大型公司運行 着基於Bitcoin核心客戶端的全節點客戶端(它們具有區塊鏈的完整拷貝及網絡節點,但不具備挖礦及錢包功能),這些節點是網絡中的邊緣路由器(edgerouters),通過它們可以搭建其他服務,例如交易所、錢包、區塊瀏覽器、商家支付處理。

比特幣P2P主網絡上連接着許多礦池服務器以及協議網關,它們把運行其他協議的節點連接起來。這些節點通常都是礦池挖礦節點(參見挖礦章節)以及輕量級錢包客戶端,它們通常不具備區塊鏈的完整備份。

比特幣整個網絡:

網絡發現:

          新的網絡節點必須發現至少一個網絡中存在的節點並建立連接

          由於比特幣網絡的拓撲結構並不基於節點間的地理位置,因此各個節點之間的地理信息完全無關

          節點通常採用TCP協議、使用8333端口

首先,節點之間是握手:

 

實踐出真知,通過抓包來解析一下這個過程吧(A是自己,B是公網節點)

A=>B(公網上一個bitcoin節點)發送一個version握手包:

B=>A也發送一個version握手包:

B=>A回一個verack握手包:

 

A=>B回一個verack握手包:

 

要求從peer節點批量獲取指定區塊HASH的區塊頭

B=>A請求的所有塊頭信息

https://btc.com/查詢進行驗證

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章