比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > Bitcoin > Info

比特幣:比特幣和以太坊的P2P網絡詳解_區塊鏈技術發展現狀和趨勢

Author:

Time:1900/1/1 0:00:00

1、P2P原理及協議概述

P2P主要存在四種不同的網絡模型,也代表著P2P技術的四個發展階段:集中式、純分布式、混合式和結構化模型。不過需要指出的是,這里所說的網絡模型主要是指路由查詢結構,即不同節點之間如何建立連接通道,兩個節點之間一旦建立連接,具體傳輸什么數據則是兩個節點之間的事情了。

最簡單的路由方式就是集中式,即存在一個中心節點保存了其他所有節點的索引信息,索引信息一般包括節點IP地址、端口、節點資源等。集中式路由的優點就是結構簡單、實現容易。但缺點也很明顯,由于中心節點需要存儲所有節點的路由信息,當節點規模擴展時,就很容易出現性能瓶頸;而且也存在單點故障問題。

那第二種路由結構則是純分布式的,移除了中心節點,在P2P節點之間建立隨機網絡,就是在一個新加入節點和P2P網絡中的某個節點間隨機建立連接通道,從而形成一個隨機拓撲結構。新節點加入該網絡的實現方法也有很多種,最簡單的就是隨機選擇一個已經存在的節點并建立鄰居關系。像比特幣的話,則是使用DNS的方式來查詢其他節點,DNS一般是硬編碼到代碼里的,這些DNS服務器就會提供比特幣節點的IP地址列表,從而新節點就可以找到其他節點建立連接通道。新節點與鄰居節點建立連接后,還需要進行全網廣播,讓整個網絡知道該節點的存在。全網廣播的方式就是,該節點首先向鄰居節點廣播,鄰居節點收到廣播消息后,再繼續向自己的鄰居節點廣播,以此類推,從而廣播到整個網絡。這種廣播方法也稱為泛洪機制。純分布式結構不存在集中式結構的單點性能瓶頸問題和單點故障問題,具有較好的可擴展性,但泛洪機制引入了新的問題,主要是可控性差的問題,包括兩個較大的問題,一是容易形成泛洪循環,比如節點A發出的消息經過節點B到節點C,節點C再廣播到節點A,這就形成了一個循環;另一個棘手問題則是響應消息風暴問題,如果節點A想請求的資源被很多節點所擁有,那么在很短時間內,會出現大量節點同時向節點A發送響應消息,這就可能會讓節點A瞬間癱瘓。

薩爾瓦多總統Bukele公布“比特幣城市”發展規劃:金色財經報道,薩爾瓦多總統Nayib Bukele在該國最新購買了500枚BTC后不久,公布了該國計劃中的比特幣城的發展計劃。雖然細節很少,也沒有提到完工日期,但這個中美洲國家的領導人指出,這座城市將有很多綠樹,還有蔚藍的大海。比例模型還顯示了夜景、地標和機場。此外,該模型還展示了圍觀者觀看火山的照片。擬建城市也將位于拉烏尼翁東部地區,靠近孔查瓜火山,其地熱發電將用于比特幣開采。

此前為了支持該項目,政府計劃尋求籌集10億美元的比特幣支持債券,該債券預計將于2032年到期,年利率為6.5%。然而,在2022年3月,薩爾瓦多以不利的市場條件為由推遲了其比特幣債券的發行計劃。(cryptopotato)[2022/5/12 3:09:41]

再來看看第三種路由結構:混合式。混合式其實就是混合了集中式和分布式結構,如下圖所示,網絡中存在多個超級節點組成分布式網絡,而每個超級節點則有多個普通節點與它組成局部的集中式網絡。一個新的普通節點加入,則先選擇一個超級節點進行通信,該超級節點再推送其他超級節點列表給新加入節點,加入節點再根據列表中的超級節點狀態決定選擇哪個具體的超級節點作為父節點。這種結構的泛洪廣播就只是發生在超級節點之間,就可以避免大規模泛洪存在的問題。在實際應用中,混合式結構是相對靈活并且比較有效的組網架構,實現難度也相對較小,因此目前較多系統基于混合式結構進行開發實現。其實,比特幣網絡如今也是這種結構,后面再細說。

最后一種網絡則是結構化P2P網絡,它也是一種分布式網絡結構,但與純分布式結構不同。純分布式網絡就是一個隨機網絡,而結構化網絡則將所有節點按照某種結構進行有序組織,比如形成一個環狀網絡或樹狀網絡。而結構化網絡的具體實現上,普遍都是基于DHT(DistributedHashTable,分布式哈希表)算法思想。DHT只是提出一種網絡模型,并不涉及具體實現,主要想解決如何在分布式環境下快速而又準確地路由、定位數據的問題。具體的實現方案有Chord、Pastry、CAN、Kademlia等算法,其中Kademlia也是以太坊網絡的實現算法,很多常用的P2P應用如BitTorrent、電驢等也是使用Kademlia。因為篇幅有限,就不展開講這些算法的具體原理了。目前,我們主要理解DHT的核心思想即可。

聲音 | 比特幣核心開發者:已將Parity2.6.8完全同步到以太坊區塊9,390,000:比特幣核心開發者、Casa的技術總監Jameson Lopp今日發推特稱,我的基準測試計算機花了9天2個小時將Parity2.6.8完全同步到以太坊區塊9,390,000。它執行超過47TB的磁盤讀取和42TB的磁盤寫入。[2020/2/2]

在P2P網絡中,可以抽象出兩種空間:資源空間和節點空間。資源空間就是所有節點保存的資源集合,節點空間就是所有節點的集合。對所有資源和節點分別進行編號,如把資源名稱或內容用Hash函數變成一個數值,這樣,每個資源就有對應的一個ID,每個節點也有一個ID,資源ID和節點ID之間建立起一種映射關系,比如,將資源n的所有索引信息存放到節點n上,那要搜索資源n時,只要找到節點n即可,從而就可以避免泛洪廣播,能更快速而又準確地路由和定位數據。當然,在實際應用中,資源ID和節點ID之間是無法做到一一對應的,但因為ID都是數字,就存在大小關系或偏序關系等,基于這些關系就能建立兩者的映射關系。這就是DHT的核心思想。DHT算法在資源編號和節點編號上就是使用了分布式哈希表,使得資源空間和節點空間的編號有唯一性、均勻分布式等較好的性質,能夠適合結構化分布式網絡的要求。

綜上,這就是P2P網絡的一點理論基礎,不同的區塊鏈可能會使用不一樣的網絡模型,但基本原理是一樣的。后面分別講解下最有代表性的兩個區塊鏈的網絡:比特幣網絡和以太坊網絡。

2、比特幣和以太坊中的P2P網絡整體對比分析

2.1通信協議層面

比特幣的P2P網絡完全基于TCP構建,主網默認通信端口是8333。

以太坊的P2P網絡是一個完全加密的網絡,提供UDP和TCP兩種連接方式,主網默認TCP端口30303,推薦UDP發現端口為30301.

2.2初始節點發現

比特幣網絡中,初始節點發現有兩種方式:

DNS-seed,又稱為DNS種子節點,比特幣的社區會維護一些域名,通過nslookup該域名可解析出數十個A記錄的主機IP。

動態 | 澳本聰的比特幣版權注冊正接受特殊處理:據dailyhodl消息,美國版權局稱,澳本聰要求對比特幣白皮書和代碼的版權注冊進行“特殊處理”。根據特別處理程序,辦公室將盡力在五個工作日內審查申請或文件。版權局的記錄顯示,注冊號為TXu002136996(文本)和TX0008708058(計算機文件)的版權注冊已在4月11日和4月13日申請了特殊處理,并且該辦公室因此加快了對申請的處理速度。[2019/5/25]

硬編碼一些seed-node,當所有的種子節點全失效時,全節點會嘗試連接這些種子節點。

在以太坊中,思路也大致相同,也是在代碼中硬編碼了一些種子節點做類似的工作。

2.3啟動后節點發現

在Bitcoin的網絡中,一個節點可以將自己維護的對等節點列表(peerlist)發送給臨近節點,所以在初始節點發現之后,你的節點要做的第一件事情就是向對方要列表:“快把你的節點列表給我復制一份。”

所以在每次需要發送協議消息的時候,它會花費固定的時間嘗試和已存的節點列表中的節點建立鏈接,如果有任何一個節點在超時之前可以連接上,就不用去DNSseed獲取地址,一般來說,這種可能性很小,尤其是全節點數目非常多的情況下。

而在以太坊網絡中,也會維護類似的一個節點列表(NodeTable),但是這個節點列表與比特幣的簡單維護不同,它采用了P2P網絡協議中一個成熟的算法,叫做Kademlia網絡,簡稱KAD網絡。

它使用了DHT來定位資源,全稱DistributedHashTable,中文名為分布式哈希表。KAD網絡會維護一個路由表,用于快速定位目標節點。由于KAD網絡基于UDP通信協議,所以以太坊節點的節點發現是基于UDP的,如果找到節點以后,數據交互又會切換到TCP協議上。

2.4NAT穿透

局域網中的主機IP與公網IP建立P2P連接的解決方案是做NAT穿透。比特幣和以太坊均使用了UPnP協議作為局域網穿透工具,只要局域網中的路由設備支持NAT網關功能、支持UPnP協議,即可將你的區塊鏈節點自動映射到公網上。

聲音 | 亞洲區塊鏈學會會長:比特幣今年預計目標將會升至30000美元:據大眾網消息,亞洲區塊鏈學會會長蔡志川表示,全球股票指數下跌,比特幣反而上升,證明了其作為另類投資的價值和意義。在中美貿易戰的影響下,尤其是近一周以來,大量國內外資金加速涌入虛擬貨幣市場,比特幣一度突破8000美元,較今年初上漲了一倍多。目前在整固,那么接下來在避險資金推動下將會突破9000美元,而今年預計目標是將會升至30000美元。他強調,比特幣正在向之前的高位挺進,隨著區塊鏈與產業應用日益深入和密切,比特幣的價值不可估量。數字世界里比特幣就是黃金,未來比特幣的價位有可能飆升至50000美元甚至更高。比特幣是未來的趨勢 。[2019/5/20]

UPnP是通用即插即用的縮寫,它主要用于設備的智能互聯互通,所有在網絡上的設備馬上就能知道有新設備加入。

2.5節點交互協議

一旦節點建立連接以后,節點之間的交互是遵循一些特定的命令,這些命令寫在消息的頭部,消息體寫的則是消息內容。

命令分為兩種,一種是請求命令,一種是數據交互命令。

節點連接完成要做的第一件事情叫做握手操作。這一點在比特幣和以太坊上的流程是差不多的,就是相互問候一下,提供一些簡要信息。

比如先交換一下版本號,看看是否兼容。只是以太坊為握手過程提供了對稱加密,而比特幣沒有。

握手完畢之后,無論交互什么信息,都是需要保持長連接的,在比特幣上有PING/PONG這兩種類型的消息,這很明顯就是用于保持節點之間長連接的心跳而設計的;而在以太坊的設計中,將PING/PONG協議移到了節點發現的過程中。

請求命令一般分為發起者請求,比如比特幣中的getaddr命令是為了獲取對方的可用節點列表,inv命令則提供了數據傳輸,消息體中會包含一個數據向量。

我們說區塊鏈最重要的功能就是同步區塊鏈,而同步區塊恰巧是最考驗P2P網絡能力的。區塊同步方式分為兩種,第一種叫做HeaderFirst,它提供了區塊頭先同步,同步完成以后再從其他節點獲得區塊體。

第二種叫做BlockFirst,這種區塊同步的方式比較簡單粗暴,就是從其他節點獲取區塊必須是完整的。第一種方案提供了較好的交互過程,減輕了網絡負擔。這兩種同步方式會直接體現在節點交互協議上,他們使用的命令邏輯完全不同。

英國GCHQ正在密切監視比特幣:GCHQ是英國國家安全局的對等單位,他們目前正在按照政府的要求密切監視比特幣。像世界各地的其他許多政府機構一樣,GCHQ對比特幣產生了濃厚的興趣。GCHQ的國家網絡安全中心分部副主任Chris Ensor告訴“每日電訊報”,英國政府部門已經下令調查比特幣帶來的安全風險。他說:“我們對任何可能影響國家的東西感興趣,所以比特幣現在是一件重要的事情。”據報道,該機構從各個角度探索比特幣,包括它如何運作,利用區塊鏈技術可能帶來的好處,以及它對該國貨幣體系可能構成的威脅。就像對比特幣不熟悉的人一樣,很多英國政客都對這種貨幣很感興趣,但也很謹慎。[2017/12/12]

一般P2P網絡技術要解決兩個主要問題,第一是資源定位,第二是資源獲取,這一篇文章也是主要圍繞這兩點展開,其中節點發現和局域網穿透是屬于資源定位問題,節點交互協議是屬于資源獲取問題。

3、比特幣中的P2P網絡詳解

比特幣網絡

首先,比特幣網絡中的節點主要有四大功能:錢包、挖礦、區塊鏈數據庫、網絡路由。每個節點都會具備路由功能,但其他功能不一定都具備,不同類型的節點可能只包含部分功能,一般只有比特幣核心(bitcoincore)節點才會包含所有四大功能。

所有節點都會參與校驗和廣播交易及區塊信息,且會發現和維持與其他節點的連接。有些節點會包含完整的區塊鏈數據庫,包括所有交易數據,這種節點也稱為全節點(FullNode)。另外一些節點只存儲了區塊鏈數據庫的一部分,一般只存儲區塊頭而不存儲交易數據,它們會通過“簡化交易驗證(SPV)”的方式完成交易校驗,這樣的節點也稱為SPV節點或輕節點(LightweightNode)。錢包一般是PC或手機客戶端的功能,用戶通過錢包查看自己的賬戶金額、管理錢包地址和私鑰、發起交易等。除了比特幣核心錢包是全節點之外,大部分錢包都是輕節點。挖礦節點則通過解決工作量證明(PoW)算法問題,與其他挖礦節點相互競爭創建新區塊。有些挖礦節點同時也是全節點,即也存儲了完整的區塊鏈數據庫,這種節點一般都是獨立礦工(SoloMiner)。還有一些挖礦節點不是獨立挖礦的,而是和其他節點一起連接到礦池,參與集體挖礦,這種節點一般也稱為礦池礦工(PoolMiner)。這會形成一個局部的集中式礦池網絡,中心節點是一個礦池服務器,其他挖礦節點全部連接到礦池服務器。礦池礦工和礦池服務器之間的通信也不是采用標準的比特幣協議,而是使用礦池挖礦協議,而礦池服務器作為一個全節點再與其他比特幣節點使用主網絡的比特幣協議進行通信。

在整個比特幣網絡中,除了不同節點間使用比特幣協議作為通信協議的主網絡,也存在很多擴展網絡,包括上面提到的礦池網絡。不同的礦池網絡可能還會使用不同的礦池挖礦協議,目前主流的具體礦池協議應該是Stratum協議,該協議除了支持挖礦節點,也支持瘦客戶端錢包。一個包含了比特幣協議主網絡各種節點和Stratum網絡,以及其他礦池網絡的擴展比特幣網絡大概如下圖所示:

另外,挖礦這塊還有特殊需求。我們知道,礦工創建新區塊后,是需要廣播給全網所有節點的,當全網都接受了該區塊,給礦工的挖礦獎勵才算是有效的,這之后才好開始下一個區塊Hash的計算。所以礦工必須最大限度縮短新區塊的廣播和下一個區塊Hash計算之間的時間。如果礦工之間傳播區塊只采用上圖所示的比特幣協議網絡,那無疑會有很高的網絡延遲,所以,需要一個專門的傳播網絡用來加快新區塊在礦工之間的同步傳播,這個專門網絡也叫比特幣傳播網絡或比特幣中繼網絡(BitcoinRelayNetwork)。

4、以太坊中的P2P網絡詳解

以太坊網絡

和比特幣一樣,以太坊的節點也具備四大功能,也同樣存在很多不同類型的節點,除了主網絡之外也同樣存在很多擴展網絡。但與比特幣不同的,比特幣主網的P2P網絡是無結構的,但以太坊的P2P網絡是有結構的。前面我們已經提過,以太坊的P2P網絡主要采用了Kademlia(簡稱Kad)算法實現,Kad是一種分布式哈希表(DHT)技術,使用該技術,可以實現在分布式環境下快速而又準確地路由、定位數據的問題。所以,下面主要講解下以太坊的Kad網絡。

在Kad網絡中,每個節點都具有一個唯一的節點ID。另外,也會計算不同節點之間的距離,但這個距離不是物理上的距離,而是邏輯上的距離,是通過對兩個節點ID進行異或(符號為^)計算得到的,即A、B兩節點之間的距離的計算公式為:D(A,B)=A.ID^B.ID。異或有一個重要的性質:假設a、b、c為任意三個數,如果a^b=a^c成立,那就一定b=c。因此,如果給定一個結點a和距離L,那就有且僅有一個結點b,會使得D(a,b)=L。通過這種方式,就能有效度量Kad網絡中不同節點之間的邏輯距離。

在異或距離度量的基礎上,Kad還可以將整個網絡拓撲組織成如下圖所示的一個二叉前綴樹,每個NodeID會映射到二叉樹上的某個葉子。

映射規則主要是:

將NodeID以二進制形式表示,然后從高到低對每一位的0或1依次處理;

二進制的第n位就對應了二叉樹的第n層;

如果該位是0,進入左子樹,是1則進入右子樹;

全部位都處理完后,這個NodeID就對應了二叉樹上的某個葉子。

在這種二叉樹結構下,對每個節點來說,離它越近的節點異或距離也是越近的。接著,可以按照離自己異或距離的遠近,對整顆二叉樹進行拆分。拆分規則是:從根節點開始,將不包括自己的那顆子樹拆分出來,然后在包含自己的子樹中,把不包括自己的下一層子樹再拆分出來,以此類推,直到只剩下自己。以上圖的110節點為例,從根節點開始,由于110節點在右子樹,所以將左邊的整顆子樹拆分出來,即包含000、001、010這三個節點的這顆子樹;接著,到第二層子樹,將不包含110節點的左子樹再拆分出來,即包含100和101這兩個節點的子樹;最后,再將111拆分出來。這樣,就將110節點之外的整個二叉樹拆分出了三顆子樹。

完成子樹拆分后,只要知道每個子樹里面的其中一個節點,就可以進行遞歸路由實現整顆二叉樹所有節點的遍歷。但在實際場景下,由于節點是動態變化的,所以一般不會只知道每個子樹的一個節點,而是需要知道多個節點。因此,Kad中有一個叫K-桶(K-bucket)的概念,每個桶會記錄每顆子樹里所知道的多個節點。其實,一個K-桶就是一張路由表,如果拆分出來有m顆子樹,那對應節點就需要維護m個路由表。每個節點都會各自維護自己的m個K-桶,每個K-桶里記錄的節點信息一般會包括NodeID、IP、Endpoint、與Target節點的異或距離等信息。以太坊中,每個節點維護的K-桶數量為256個,這256個K-桶會根據與Target節點的異或距離進行排序,每個K-桶保存的節點數量上限是16。

在以太坊的Kad網絡中,節點之間的通信是基于UDP的,另外設置了4個主要的通信協議:

Ping:用于探測一個節點是否在線

Pong:用于響應Ping命令

FindNode:用于查找與Target節點異或距離最近的其他節點

Neighbours:用于響應FindNode命令,會返回一或多個節點

通過以上4個命令,就可以實現新節點的加入、K-桶的刷新等機制。具體的實現流程就不細講了,留給大伙自己去思考。

總結

不同結構的P2P網絡,會有不同的優點和缺點。比特幣網絡的結構明顯容易理解,實現起來也相對容易得多,而以太坊網絡引入了異或距離、二叉前綴樹、K-桶等,結構上復雜不少,但在節點路由上的確會比比特幣快很多。另外,不管是比特幣還是以太坊,其實都只是一種或多種協議的集合,不同節點其實可以用不同的具體實現,比如,比特幣就有用C++實現的BitcoinCore,還有用Java實現的BitcoinJ;以太坊也有用Go語言實現的go-ethereum,也有用C++實現的go-ethereum,還有用Java實現的Ethereum(J)。

思考和實踐

在以太坊的Kad網絡中,新節點的加入和K-桶的刷新流程是怎樣的?比特幣的新節點加入流程又是怎樣的?哈希表有哪些實現方式?

Tags:比特幣以太坊區塊鏈比特幣中國官網聯系方式40億比特幣能提現嗎比特幣最新價格行情走勢以太坊幣是什么幣區塊鏈工程專業學什么區塊鏈存證怎么弄區塊鏈技術發展現狀和趨勢

Bitcoin
CAR:120萬元一支的“抗癌神藥”,管用嗎?真相來了……_CART

“花120萬元打一針,能清零癌細胞!”近日,腫瘤治療領域傳來的重磅消息,讓許多人震驚。被腫瘤患者和家屬們口口相傳的“抗癌神藥”,正是近年來全球腫瘤治療研究的熱點之一——自體CAR-T細胞治療的一.

1900/1/1 0:00:00
XXX:想利用互聯網創業項目掙錢,如何避免被騙?_XXX幣萊特幣官網查詢

利用互聯網創業項目掙錢,如何避免被騙?最近實體店可謂是處于“水深火熱”之中,不僅受到了互聯網的嚴重沖擊,并且也受到洪災和疫情的影響.

1900/1/1 0:00:00
PCT:收藏!《2021年全球運動鞋行業技術全景圖譜》(附專利申請情況、專利競爭和專利價值等)_TOP幣

行業主要上市公司:李寧(02331.HK)、安踏體育(02020.HK)、361度(01361.HK)、特步國際(01368.

1900/1/1 0:00:00
NFT:創設有效的課堂教學情境_COM

教學有效性注重的是效率和效果,在小學數學課中,教師要讓教學的結果與計劃契合,這樣才是有效教學,教師要對學生的表現以及綜合情況進行考查,促進學生在數學課中的高效學習.

1900/1/1 0:00:00
LABS:起亞全新Ceed旅行版于西班牙市場上市,售價在人民幣11.58萬元起_ABS

近日,汽車輿論獲悉起亞全新Ceed旅行版家族在西班牙市場正式上市,據悉,起亞Ceed定位為緊湊型轎車,售價在15550-26651歐元,折合人民幣大約11.58-19.86萬元.

1900/1/1 0:00:00
NFT:庫里花18萬美金買的猴子頭像火遍推特盛大公鏈的NFT生態正在推進_盛大公鏈幣是什么幣元宇宙平臺公司找幻霄

一般來說,一個剛剛誕生的項目往往容易憑借其新鮮感趕超各個老牌項目,銷售額在短期可以名列前茅,但是BoredApeYachtClub并不算是一名「新生兒」.

1900/1/1 0:00:00
ads