
1 P2P網絡架構
比特幣采用了基于國際互聯網(Internet)的P2P(peer-to-peer)網絡架構。P2P是指位于同一網絡中的每臺計算機都彼此對等,各個節(jié)點共同提供網絡服務,不存在任何“特殊”節(jié)點。每個網絡節(jié)點與“扁平(flat)”的拓撲結構相互連通。在P2P網絡中不存在任何服務端(server)、中央化的服務、以及層級結構。P2P網絡的節(jié)點之間交互運作、協同處理:每個節(jié)點在對外提供服務的同時也使用網絡中其他節(jié)點所提供的服務。P2P網絡也因此具有可靠性、去中心化,以及開放性。早期的國際互聯網就是P2P網絡架構的一個典型用例:IP網絡中的各個節(jié)點完全平等。當今的互聯網架構具有分層架構,但是IP協議仍然保留了扁平拓撲的結構。在比特幣之外,規(guī)模最大也最成功的P2P技術應用是在文件分享領域:Napster是該領域的先鋒,BitTorrent是其架構的最新演變。
比特幣所采用的P2P網絡架構不僅僅是選擇拓撲結構這樣簡單。比特幣被設計為一種點對點的數字現金系統,它的網絡架構既是這種核心特性的反映,也是該特性的基石。去中心化控制是設計時的核心原則,它只能通過維持一種扁平化、去中心化的P2P共識網絡來實現。
“比特幣網絡”是按照比特幣P2P協議運行的一系列節(jié)點的集合。除了比特幣P2P協議之外,比特幣網絡中也包含其他協議。例如Stratum協議就被應用于挖礦、以及輕量級或移動端比特幣錢包之中。網關(gateway)路由服務器提供這些協議,使用比特幣P2P協議接入比特幣網絡,并把網絡拓展到運行其他協議的各個節(jié)點。例如,Stratum服務器通過Stratum協議將所有的Stratum挖礦節(jié)點連接至比特幣主網絡、并將Stratum協議橋接(bridge)至比特幣P2P協議之上。我們使用“擴展比特幣網絡(extended bitcoin network)”指代所有包含比特幣P2P協議、礦池挖礦協議、Stratum協議以及其他連接比特幣系統組件相關協議的整體網絡結構。
2 節(jié)點類型及分工
盡管比特幣P2P網絡中的各個節(jié)點相互對等,但是根據所提供的功能不同,各節(jié)點可能具有不同的分工。每個比特幣節(jié)點都是路由、區(qū)塊鏈數據庫、挖礦、錢包服務的功能集合。一個全節(jié)點(full node)包括如圖6-1所示的四個功能:

每個節(jié)點都參與全網絡的路由功能,同時也可能包含其他功能。每個節(jié)點都參與驗證并傳播交易及區(qū)塊信息,發(fā)現并維持與對等節(jié)點的連接。在圖6-1所示的全節(jié)點用例中,名為“網絡路由節(jié)點”的橙色圓圈即表示該路由功能。
一些節(jié)點保有一份完整的、最新的區(qū)塊鏈拷貝,這樣的節(jié)點被稱為“全節(jié)點”。全節(jié)點能夠獨立自主地校驗所有交易,而不需借由任何外部參照。另外還有一些節(jié)點只保留了區(qū)塊鏈的一部分,它們通過一種名為“簡易支付驗證(SPV)”的方式來完成交易驗證。這樣的節(jié)點被稱為“SPV節(jié)點”,又叫“輕量級節(jié)點”。在如上圖所示的全節(jié)點用例中,名為完整區(qū)塊鏈的藍色圓圈即表示了全節(jié)點區(qū)塊鏈數據庫功能。在圖6-3中,SPV節(jié)點沒有此藍色圓圈,以示它們沒有區(qū)塊鏈的完整拷貝。
挖礦節(jié)點通過運行在特殊硬件設備上的工作量證明(proof-of-work)算法,以相互競爭的方式創(chuàng)建新的區(qū)塊。一些挖礦節(jié)點同時也是全節(jié)點,保有區(qū)塊鏈的完整拷貝;還有一些參與礦池挖礦的節(jié)點是輕量級節(jié)點,它們必須依賴礦池服務器維護的全節(jié)點進行工作。在全節(jié)點用例中,挖礦功能如圖中名為“礦工”的黑色圓圈所示。
用戶錢包也可以作為全節(jié)點的一部分,這在桌面比特幣客戶端中比較常見。當前,越來越多的用戶錢包都是SPV節(jié)點,尤其是運行于諸如智能手機等資源受限設備上的比特幣錢包應用;而這正變得越來越普遍。在圖6-1中,名為“錢包”的綠色圓圈代表錢包功能。
在比特幣P2P協議中,除了這些主要的節(jié)點類型之外,還有一些服務器及節(jié)點也在運行著其他協議,例如特殊礦池挖礦協議、輕量級客戶端訪問協議等。
圖2描述了擴展比特幣網絡中最為常見的節(jié)點類型。


本文由網上采集發(fā)布,不代表我們立場,轉載聯系作者并注明出處:http://m.webhosting0.com/shbk/37015.html