1. 程式人生 > >比特幣學習之-P2P網路

比特幣學習之-P2P網路

比特幣的網路採用了基於國際網際網路(Internet)的P2P網路架構。英文是peer to peer,所以也叫對等網路。顧名思義也就是網路中的每臺計算機是對等的,各個節點共同提供網路服務,不存在任何“特殊”節點。在 P2P 網路中不存在任何服務端(server)、中央化的服務、以及層級結構。這也是比特幣網路或者說區塊鏈的一個重要特徵——去中心化。 這樣網路中的任何一臺機器出現問題都不會影響其他節點,保證網路的正常執行。

p2p網路

一。儘管比特幣P2P網路中的各個節點相互對等,但是根據所提供的功能不同,各節點可能具有不同的分工。

1。全結點 

全結點

這種結點就是包含了錢包,挖礦,區塊鏈,網路路由功能的一個集合結點。全節點能夠獨立自主地校驗所有交易,而不需藉由任何外部參照。

2。SPV結點

spv結點

這種只保留了區塊鏈的一部分(區塊頭),它們通過一種名為“簡易支付驗證(SPV)”的方式來完成交易驗證。英文是Simplified Payment Verification。這樣的節點被稱為“SPV節點”,又叫“輕量級節點”。關於什麼是SPV驗證,簡單來說就是通過這個區塊頭的資訊通過網路到區塊鏈裡去驗證。具體請參考Higher的文章:http://www.jianshu.com/p/39be41dfb5fa 。

3。挖礦結點。

這種結點,其實只要有獨立礦工功能的結點都可以叫做挖礦結點。全結點其實就是一種挖礦結點。

帶有礦池協議的挖礦結點 獨立礦工

挖礦節點通過執行在特殊硬體裝置上的工作量證明(proof-of-work)演算法,簡稱POW。以相互競爭的方式建立新的區塊。一些挖礦節點同時也是全節點,保有區塊鏈的完整拷貝;還有一些參與礦池挖礦的節點是輕量級節點,它們必須依賴礦池伺服器維護的全節點進行工作。

   如果網路既包含執行比特幣P2P協議的網路,又包含執行上面不同協議的結點。這種網路也叫擴充套件比特幣網路。

擴充套件比特幣網路

這種網路包括了多種型別的節點、閘道器伺服器、邊緣路由器、錢包客戶端以及它們相互連線所需的各類協議。

二。網路發現。

          當我們啟動一個機器的時候,這個結點是如何發現其他的結點和被其它結點發現的呢,他們是如何連線的?至少與其它一個結點連線後才能夠參與協同運作。

         首先,每個結點通常與其他結點進行通訊的協議是TCP協議。埠號是8333(也可以是其它埠)。

這個網路發現的過程,我借用了銷售行業的一個名詞——轉介紹。過程是這樣的。

          如果你來到一個全是陌生人的屋子裡面,大家都不認識你,你很想加入他們這個圈子(網路),你這時先從離自己最近的人開始交換資訊(握手),然後這個人開始對他旁邊的介紹你,你也和他們進行握手。這樣你就加入了他們這個網路。

    這個轉介紹的資訊內容包括:

1。PROTOCOL_VERSION

    常量,定義了客戶端所“說出”的比特幣 P2P 協議所採用的版本(例如:70002)

2。nLocalServices

    一組該節點支援的本地服務列表,當前僅支援 NODE_NETWORK

3。nTime

    當前時間

4。addrYou

    當前節點可見的遠端節點的 IP 地址

5。addrMe

    本地節點所發現的本機 IP 地址

6。subver

  指示當前節點執行的軟體型別的子版本號(例如:”/Satoshi:0.9.2.1/”)

7。BaseHeight

     當前節點區塊鏈的區塊高度

作者:ttblack 連結:http://www.jianshu.com/p/ad47595e7e4f 來源:簡書 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。