區塊鏈入門系列 | 比特幣網路的執行方式
Bitcoin 的本質是一個網路,本篇就來瞄準比特幣網路特徵來聊。聊聊 P2P 網路到底有什麼特點,節點之間如何在網路上配合來共同處理交易和打包區塊,也來聊聊網路都做了哪些看上去不那麼 P2P 的增強。
P2P 網路
比特幣網路最大的特徵是點對點,點對點的基本含義是各個節點之間的地位平等,沒有客戶端和伺服器之分。
咱們先聊聊 P2P 到底是什麼意思。P2P 的全稱是 peer-to-peer ,參與到這個網路中的計算機之間是平等的關係,網路上的節點沒有誰是有特權的。網路的整體功能不是通過什麼地位特殊的中央伺服器的排程來完成,而是分擔到各個節點之上。
P2P 網路天生就開放。網際網路本身就是一個無歧視的 P2P 網路,所以 IP 網路上的節點都是平等的,雖然今天的網際網路從上層來看已經非常的層級化了,但是底層依然是 P2P 的。除了比特幣之外,最著名的 P2P 網路的實際例子就是 BitTorrent 檔案分享網路了。比特幣的目標是取消中心化的控制,所以 P2P 的這種扁平的網路結構跟比特幣剛好吻合。
總之,P2P 的特點就是平等和開放。
網路執行方式
接下來我們聊整個網路是如何執行,如何釋出交易,驗證交易和打包區塊的。
節點同時是交易的發出者也是記賬者。P2P 網路決定了節點的地位是平等的,既然沒有老大去記錄交易,那麼當然就是很多普通節點大家共同去記賬了。比特幣白皮書的“網路”部分,給出了比特幣網路執行的步驟。首先,需要進行轉賬的節點要構建一條交易,然後廣播給全網。網路上的交易會形成一個交易池,各個節點都會去選擇裡面手續費比較高的去處理,因為區塊的大小畢竟是有限的。這樣很多節點都會去把儘可能多的交易打包到一起,注意這些打包到一起的交易的集合還不能叫做一個區塊,因為節點需要參加一個所謂的算力賽跑,也就是挖礦。挖礦成功,拿到了工作量證明的那個隨機數之後,才能得到合法的區塊雜湊,區塊才真的被生成了。只有贏得算力賽跑的那個人,才真正擁有了記賬權。
節點都始終認為最長的那條鏈是正確的,並基於這條鏈來運算。由於是去中心化的網路,並且網路上也是有延遲的,所以很多時候,如果兩個節點同時廣播出了不同版本的下一個區塊,那麼某些節點可能會先收到其中一個,而其他節點卻先收到另一個。那麼記賬權到底歸誰呢?節點拿到區塊後,首先要驗證區塊裡面的交易是不是都是合法的,例如有沒有人搗鼓,把某些錢雙花過,如果驗證不通過,那麼即便比較早出現,區塊也會被大家拋棄。區塊驗證通過,節點會基於它先收到的那個節點來新增後續區塊,但是也會儲存後收到那個區塊,這樣區塊鏈就另外形成了一個分支,因為有其他節點是在這個分支上去進行下一個區塊的生成的,所以這個分支有可能成為最長鏈。當下一個工作量證明被找到,下一個區塊生產出來之後,到底哪條分支比較長就明確了,發現自己站錯隊的節點會切換到最長的這個分支上。
網路是有非常強的容錯能力的。新的交易不一定非要到達網路上的所有節點,只要足夠多的節點收到了這個交易,那麼它不久後就可以被收入到區塊中。區塊廣播的時候也是有容錯能力的,不必擔心個別的資訊丟失。如果節點沒有收到區塊,那麼當它收到下一個區塊的時候,就會發現自己少了一個區塊,然後會再次請求。
所以,網路執行的基本形式是,大家都發出交易,也都有權去驗證和記錄交易,雖然誰都可以去驗證區塊的合法性,但是隻有贏得算力賽跑的節點,才是最終唯一的記賬人。當然,網路上每十分鐘就會生成一個區塊,同時工作量證明機制也決定了記賬過程除了算力賽跑之外也有一定的隨機性,所以不是誰的算力最強,就會永遠做記賬人。
網路增強
通過上面對 P2P 的介紹,我們可以看到比特幣真的是一個人人平等的開放系統,當然實際中,比特幣網路的確沒有這麼簡單,為了實現更好的效率和更強的功能,比特幣網路在 P2P 的基礎上是做了很多增強的。
首先要明確一點,比特幣的節點是分成不同類別的。實際中並不是所有連線到比特幣網路上的機器都會參與記賬,例如錢包節點和有些路由節點。全節點是功能最為完善的節點,不但有錢包和路由功能,還儲存了完整的區塊鏈拷貝,也能參與挖礦。還有一些專門的挖礦節點,他們可能是全節點,也可能比全節點功能少一些,以挖礦為主要任務。
比特幣網路也不純粹是一個 P2P 網路。真正的 P2P 網路上,所有節點獲取資訊的方式和機會應該是相同的。但是實際中,挖礦節點要參與算力賽跑,對時間是非常敏感的,所以可能採用類似 FIBRE 這樣的非 P2P 傳輸方式來獲取資料。但是,技巧都是公開的,誰都可以去使用,所以不會影響網路整體的公平性。另外,很多錢包節點或者 SPV 節點也需要向儲存完整區塊鏈的全節點去請求一些資料,所以也會用到非 P2P 形式的通訊協議。
總之,實際中比特幣網路的節點有角色差異的,通訊協議也在 P2P 基礎上有一些疊加的方案。但是要強調,這些都是為了增強網路功能,並不會從根本上改變比特幣的公平性和開放性。
總結
關於比特幣網路,我們就聊到這裡了。總結起來,比特幣是一個 P2P 網路,網路的上的節點地位是平等的,都有權利釋出交易和記賬。實際中節點角色有一定的分工,網路本身也在 P2P 基礎上做了一些非 P2P 的增強。但是這些都是為了增加網路的效率和功能,所有的機制都是公開的無准入門檻的,所以整個網路的基本的 P2P 性不會受到破壞。
參考:
https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch08.asciidoc https://bitcoin.org/bitcoin.pdf