區塊鏈入門系列 | 比特幣網路節點分類
比特幣網路指的就是運行了比特幣 P2P 協議的很多節點的集合,每個節點地位上都是平等的,但是由於側重的功能不同,其實比特幣節點是分不同的角色的。
節點要完成的功能
引用精通比特幣上的觀點,比特幣節點的功能有四個:錢包,挖礦,儲存完整區塊鏈,以及路由。
第一個功能是錢包,這裡的錢包指的是錢包軟體,而非地址加私鑰本身。錢包的功能包含收集錢包中的地址相關的 UTXO ,以便統計出地址餘額,構建交易,傳送交易等等轉賬相關的功能。
第二個功能是挖礦。挖礦節點會去收集交易,製作區塊頭,然後參與 POW 算力比拼,找到隨機數,生成區塊並獲得出塊獎勵和手續費。
第三個功能是儲存完整區塊鏈。區塊鏈資料龐大,所以並不是所有比特幣節點都會下載完整的最新的區塊鏈。
第四個功能是路由。稍後會看到,所有型別的節點都會有這個功能。所有的節點有有義務幫助其他節點去驗證和擴散交易,去查詢其他節點,去維持整個網路的連線。
這就是節點的四項功能了。
節點的不同角色
但是,節點是分不同角色的,每個角色的節點都去完成自己所擅長的功能。
第一種角色是普通全節點。一個節點只要是下載了完整且最新的區塊鏈資料,那它就是一個全節點了。全節點當然也擁有路由功能,另外還可能包含或者不包含其他的功能。全節點是整個網路的脊樑,因為只有全節點才能真正自己去驗證交易。馬上要介紹到的輕節點,本身沒有完整的鏈,所以就不能看到所有的交易歷史,不能直接去驗證交易,需要通過向全節點去請求必要的交易資料。
第二種角色是 Bitcoin Core 全節點,是功能最為全面的節點。Bitcoin Core 是比特幣的參考實現,是比特幣網路上最為流行的客戶端軟體。安裝了 Bitcoin Core 的節點,首先是一個全節點,另外還擁有錢包和挖礦的能力。
第三種是 SPV 錢包節點。這種節點的通常只關心和自己錢包中的地址相關部分交易,不會下載完整的區塊鏈,所以也被稱為輕節點。錢包通常都是安裝在移動裝置上,資源有限所以適合使用輕節點。輕節點可以去發起簡單支付驗證( SPV ),向全節點請求資料來驗證交易。
第四種是獨立挖礦節點。挖礦節點的主要工作當然是挖礦,獨立的,也就是不加人礦池的節點要挖礦是需要下載完整區塊鏈的,所以獨立挖礦節點也是全節點。
以上四種就是比特幣 P2P 網路上的基本節點角色了。
礦池節點
除了這四類基本節點,涉及到礦池挖礦,還有另外的兩種節點。
首先一種是礦池伺服器。很多比特幣礦工會湊到一起組成礦池來一起挖礦。礦池會搭建專門的礦池伺服器來跟比特幣的 P2P 網路直接通訊,儲存了完整的區塊鏈,挖礦節點就只需要跟伺服器通訊。
另外一種是礦池挖礦節點。雖然也參與挖礦,但是這類節點上只拼命運算,而不會去儲存完整的區塊鏈,這樣就節約了儲存成本。
跟礦池的這種伺服器客戶機架構類似,錢包也有類似的錢包伺服器節點,可以讓輕節點通過特定的協議去更加高效的獲取最新區塊鏈資料。
總結
關於節點的分類,我們就介紹到這裡了。節點要完成四項功能,分別是挖礦,錢包,路由和儲存區塊鏈。不同角色的節點也會側重不同的功能。另外,也不是所有的節點都直接連線到比特幣 P2P 網路,例如一些輕錢包節點,或者礦池挖礦節點,會跟特定伺服器去通訊,這些伺服器是比特幣的 P2P 網路上的節點。
參考:https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch08.asciidoc#full_node_reference