在分布式系統中每個終端節點都是平等的,不存在任何中心化節點幫助它們互相連接,那當一個新的節點要加入網絡中來時,它該如何找到自己的小夥伴的呢?
我們知道比特幣網絡採用了基於網際網路的點對點(P2P:peer-to-peer)分布式網絡,但是你知道節點與節點之間是如何建立連接的嗎?
本期將會對區塊鏈的分布式網絡中,節點與節點之間如何建立連接進行介紹,希望對你有幫助。
一、分布式網絡基本概念在介紹分布式網絡之前我們先明確它的基本概念,分布式網絡是什麼?
分布式網絡也叫網狀網絡,它和中心化網絡(中央控制式網絡)相對應,是一套全新的網絡結構。分布式網絡是由分布在不同地點的多個終端節點互相連接而成,形成縱橫交錯的網狀結構,在這種網狀結構中無中心節點。
上面是中心化網絡和分布式網絡對比圖,中心化網絡中終端與終端之間連接通訊,需要經過中央處理器統一處理,分布式網絡中終端節點之間可以直接建立連接。
分布式網絡相較於中心化網絡的優點在於:它沒有中心化控制中心,不會因為中心伺服器遭到破壞而造成整體崩潰。當分布式網絡中的某個節點損壞時,通信信息可通過其他的節點進行傳輸,具有較高的可靠性和傳輸速度。
二、一個終端如何加入區塊鏈網絡?在分布式系統中每個終端節點都是平等的,不存在任何中心化節點幫助它們互相連接,那當一個新的節點要加入網絡中來時,它該如何找到自己的小夥伴的呢?
以比特幣網絡為例:安裝了比特幣客戶端的終端,可認為是一個網絡節點。
舉個例子:來看一個新節點A是如何加入比特幣網絡的,這個節點在啟動之後會做如下的幾件事。
1. 告訴夥伴它在哪?如果節點A是第一次連入比特幣網絡,那它首先會通過一種算法找到距離它最近的一個網絡節點。
節點將一條包含自身IP位址的消息發送給相鄰節點,相鄰的節點再將這條消息向與自己連接的節點進行分發廣播,以此類推,最終導致新節點的IP位址在全網進行分發,每個網絡節點都知道節點A的地址,可以與之建立直接連接。
2. 找到夥伴在哪節點A在找到相鄰最近的節點之後,還會向與它相鄰的節點索要它們已知節點的IP位址列表,拿到這些節點的IP位址列表之後,節點A便可以主動與這些節點建立直接的連接。
3. 更快的找到夥伴當節點A加入到網絡中之後,一般會與正活躍的節點連接。如果難以找到這樣的節點,節點A會根據自己得到的IP位址列表,來找到那些長期穩定運行的節點,這種節點就是種子節點,通過種子節點能夠幫助節點A更快速的發現網絡中的其他節點。
三、比特幣網絡中不同節點的數據如何同步比特幣網絡中的節點在連接到相鄰的節點之後,首先會和相鄰的節點同步數據,然後再去和更多的節點進行數據交換和同步。
在節點與節點之間進行數據同步的過程中會根據一個哈希值(可以暫時理解為一種獨一無二的數據標記,後面期刊中會詳細介紹)來判斷誰的數據為最新的數據。
如果節點發現本身的數據不是最新的,就會尋找擁有最新數據的節點進行下載。如果發現自己的數據為最新數據,則會告訴其他節點需要從它這裡補充數據。其他的節點下載數據並驗證通過之後,將會更新到自己的本地數據中。
通過這種方式能保證網絡中的所有節點都能及時得到最新數據。
四、總結分布式是區塊鏈的核心,我們通過了解節點之間如何建立連接,應該體會到分布式它不僅僅是一種網路架構,更是一種先進的思想!
點對點之間的影響通過網絡形成了非線性的因果關係,整個網絡形成了去中心,自組織的形態,這是事物發展的必然過程。更加高效、更加平等、更加低成本是新制度進化的必然方向。
分布式思想可能給我們帶來的不僅僅是科技上的革命,更可能會帶來整個人類社會結構的改變。
讓我們拭目以待!
作者:liheng,區塊鏈探索者、網際網路產品經理,超級個體修煉中,只創作對用戶有價值的內容
本文由 @liheng 原創發布於人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基於CC0協議
收藏已收藏 | {{ postmeta.bookmark }} 點讚已贊 | {{ postmeta.postlike }}