亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

區(qū)塊鏈中的P2P

jkyin / 1543人閱讀

摘要:為什么區(qū)塊鏈會選擇作為網(wǎng)絡(luò)基礎(chǔ)上面介紹的時候說過,他是無中心服務(wù)器的,中心服務(wù)器就意味著,當受到攻擊的時候,中心服務(wù)器一旦宕機,整個網(wǎng)絡(luò)和服務(wù)就會出現(xiàn)問題。區(qū)塊鏈的核心是去中心化,這和網(wǎng)絡(luò)的觀念不約而同,所以選擇的理由也就很充分。

區(qū)塊鏈中P2P介紹

p2p是什么

為什么區(qū)塊鏈需要P2P

比特幣、以太坊、超級賬本和EOS的P2P對比


P2P是什么
P2P作為區(qū)塊鏈網(wǎng)絡(luò)中去中心化的標識
P2P全稱對等式網(wǎng)絡(luò)(peer-to-peer),又稱點對點技術(shù),是無中心服務(wù)器、依靠用戶群(peers)交換信息的互聯(lián)網(wǎng)體系;與有中心服務(wù)器的中央網(wǎng)絡(luò)系統(tǒng)不同,對等網(wǎng)絡(luò)的每個用戶端既是一個節(jié)點,也有服務(wù)器的功能,任何一個節(jié)點無法直接找到其他節(jié)點,必須依靠其戶群進行信息交流。

優(yōu)勢

可在網(wǎng)絡(luò)的中央及邊緣區(qū)域共享內(nèi)容和資源。在客戶端/服務(wù)器網(wǎng)絡(luò)中,通常只能在網(wǎng)絡(luò)的中央?yún)^(qū)域共享內(nèi)

由對等方組成的網(wǎng)絡(luò)易于擴展,而且比單臺服務(wù)器更加可靠。單臺服務(wù)器會受制于單點故障,或者會在網(wǎng)絡(luò)使用率偏高時,形為瓶頸。

由對等方組成的網(wǎng)絡(luò)可共享處理器,整合計算資源以執(zhí)行分布式計算任務(wù),而不只是單純依賴一臺計算機,如一臺超級計算機。

用戶可直接訪問對等計算機上的共享資源。網(wǎng)絡(luò)中的對等方可直接在本地存儲器上共享文件,而不必在中央服務(wù)器上進行共享。

p2p網(wǎng)絡(luò)的三個特性

離散性:構(gòu)成系統(tǒng)的節(jié)點并沒有任何中央式的協(xié)調(diào)機制。

伸縮性:即使有成千上萬個節(jié)點,系統(tǒng)仍然應(yīng)該十分有效率。

容錯性:即使節(jié)點不斷地加入、離開或是停止工作,系統(tǒng)仍然必須達到一定的可靠度。


為什么區(qū)塊鏈會選擇P2P作為網(wǎng)絡(luò)基礎(chǔ)
上面介紹P2P的時候說過,他是無中心服務(wù)器的,中心服務(wù)器就意味著,當受到攻擊的時候,中心服務(wù)器一旦宕機,整個網(wǎng)絡(luò)和服務(wù)就會出現(xiàn)問題。而P2P網(wǎng)絡(luò)的優(yōu)勢在于,每個節(jié)點既是客戶端又是服務(wù)端,所以當受到攻擊時,任何一臺機器垮掉,也不會影響整體的服務(wù)。
區(qū)塊鏈的核心是去中心化,這和P2P網(wǎng)絡(luò)的觀念不約而同,所以選擇P2P的理由也就很充分。

通過區(qū)塊鏈技術(shù)學(xué)習P2P

首先看一下P2P的整體技術(shù)點:

首先是如何發(fā)現(xiàn)peers,在P2P網(wǎng)絡(luò)中,發(fā)現(xiàn)節(jié)點是最開始、最重要和最難的一部分;

節(jié)點之間建立鏈接;發(fā)現(xiàn)節(jié)點之后,就要進行握手鏈接,確定節(jié)點之間的通信協(xié)議等

節(jié)點之間的通信;鏈接建立之后,就可以正常的進行通信了;

以上三點解決之后,基本就可以實現(xiàn)一個簡單的P2P網(wǎng)絡(luò)。如果想要實現(xiàn)一個比較完整的P2P網(wǎng)絡(luò),當然還有很多的細節(jié)需要考慮,比如說,節(jié)點發(fā)現(xiàn)協(xié)議,快速定位節(jié)點,安全性,節(jié)點的加入和退出機制,節(jié)點的心跳?;畹?。我們主要介紹的是DHT分布式哈希表的知識點;

比特幣、以太坊、超級賬本和EOS都使用了DHT的具體實現(xiàn);

鏈類型 使用的P2P協(xié)議
區(qū)塊鏈 Gossip協(xié)議
超級賬本 Gossip協(xié)議
以太坊 Kademlia協(xié)議
EOS 自己實現(xiàn)的P2P協(xié)議 (待研究)

比特幣

節(jié)點發(fā)現(xiàn)
  新節(jié)點啟動后,想要參與協(xié)同運作,必須發(fā)現(xiàn)其他的比特幣節(jié)點,也就是至少需要發(fā)現(xiàn)一個比特幣網(wǎng)絡(luò)中的節(jié)點,并建立聯(lián)系。

   新節(jié)點找到對等體的方法:
   - 種子節(jié)點:使用多個DNS服務(wù)器(比特幣節(jié)點專用)來解析比特幣節(jié)點的IP。
   - 節(jié)點引薦:如果不知道DNS,則必須知道至少一個比特幣節(jié)點的IP。

節(jié)點鏈接
節(jié)點向peer節(jié)點發(fā)送version消息開始握手,peer節(jié)點需要檢驗版本,秘鑰等數(shù)據(jù),驗證通過,會返回verack消息。
握手消息完成,節(jié)點發(fā)送包含自己IP地址和addr的消息給peer節(jié)點,對等節(jié)點收到,繼續(xù)向它的對等節(jié)點發(fā)出addr消息,這樣新節(jié)點的IP地址就會在P2P網(wǎng)絡(luò)中廣播出去(Gossip協(xié)議的Rumor-Mongering);

因為網(wǎng)絡(luò)中,節(jié)點可以隨時加入和離開,所以所有的節(jié)點必須在一個節(jié)點退出的時候,尋找新節(jié)點,并且在其他節(jié)點啟動的時候,對其進行幫組。

超級賬本

以太坊
以太坊使用的是kademlia協(xié)議,簡稱Kad協(xié)議,具體的Kad協(xié)議在其他的文章中介紹。本文我們只需要知道Kad使用UDP進行節(jié)點間消息通信,每個節(jié)點根據(jù)與鄰居節(jié)點距離之間的距離(NodeID的差距),分別放到不同的桶(bucket)中,且有4種消息

ping - 用于探測其他節(jié)點是否還存在

store - 接收者受到后,將信息中key/value對存儲在本節(jié)點

findnode - 接受者向發(fā)送者返回 k 個它知道的與目標結(jié)點距離最近的節(jié)點

findvalue - 和findnode 差不多,區(qū)別是如果接收者本地存在與目標結(jié)點對應(yīng)的value,那么就回復(fù)這個值給發(fā)送者。

以太坊中的P2P網(wǎng)絡(luò)是比較完整的,很值得學(xué)習,有發(fā)現(xiàn)、子協(xié)議和Nat映射等模塊。我們主要講解的是發(fā)現(xiàn)模塊;
整體結(jié)構(gòu):

結(jié)構(gòu)名 作用
Server 本地客戶端服務(wù)
Node 節(jié)點的信息
table 存儲peer節(jié)點的結(jié)構(gòu)
udp 底層節(jié)點的通訊協(xié)議
Server

當本地啟動一個客戶端,并配置好靜態(tài)peer節(jié)點的配置信息之后,啟動的Server會進行三個操作

主動發(fā)現(xiàn)鄰居

ECDH密鑰建立,確認身份并進行身份驗證

鏈接已經(jīng)建立,確認生層交換協(xié)議,并運行這些協(xié)議

Node

Node節(jié)點唯一的表示網(wǎng)絡(luò)中的一個以太坊節(jié)點,并且Node節(jié)點有如下的信息:

IP地址

連接使用的UDP/TCP端口號

ID:以太坊網(wǎng)絡(luò)中唯一標識一個節(jié)點,本質(zhì)上是一個橢圓曲線公鑰(PublicKey),與Server的PrivateKey對應(yīng)。一個節(jié)點的IP地址不一定是固定的,但ID是唯一的。

用于節(jié)點間的距離計算的sha

table

Table主要用來管理與本節(jié)點與其他節(jié)點的連接的建立更新刪除:

bucket - 所有peer按與本節(jié)點的距離遠近放在不同的桶(bucket)中

refreshReq - 更新Table請求通道

Table會循環(huán)的監(jiān)控并對peer節(jié)點進行刷新

定時(30s)啟動Peer刷新過程的定時器

接收其他線程投遞到Table的刷新Peer連接的通知,當收到該通知時啟動更新

定時重新檢查以連接節(jié)點的有效性的定時器

udp

udp的底層接受數(shù)據(jù)包循環(huán),負責接收其他節(jié)點的packet,并將解析后的信息交給另一個循環(huán)處理,這個循環(huán)處理負責控制消息的向上遞交和收發(fā)控制

節(jié)點發(fā)現(xiàn)的流程:

鄰居初始化

當一個節(jié)點啟動后,它會首先向配置的靜態(tài)節(jié)點發(fā)起連接,發(fā)起連接的過程稱為Dial,此時的Dial需要知道IP地址,如果不知道需要有一個解析IP的過程(根據(jù)ID來解析)

建立連接,下面兩個都成功則加入table中:

秘鑰鏈接和確認

上層協(xié)議確認

探活檢測(Revalidate)

有效性檢測就是利用ping消息進行探活操作。Table啟動了一個定時器(0~10s),定期隨機選擇一個bucket,向其末尾的節(jié)點發(fā)送ping消息,如果對方回應(yīng)了pong,則探活成功。

更新鄰居關(guān)系

定期(定時器超時)或不定期(收到refreshReq)地進行更新鄰居關(guān)系(發(fā)現(xiàn)新鄰居),兩者都調(diào)用doRefresh()方法,該方法對在網(wǎng)絡(luò)上查找離自身和三個隨機節(jié)點最近的若干個節(jié)點。

EOS

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/24626.html

相關(guān)文章

  • 分析比特幣網(wǎng)絡(luò):一種去中心化、點對點的網(wǎng)絡(luò)架構(gòu)

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接分析比特幣網(wǎng)絡(luò)一種去中心化點對點的網(wǎng)絡(luò)架構(gòu)原文已更新,請讀者前往原文閱讀比特幣采用了基于互聯(lián)網(wǎng)的點對點分布式網(wǎng)絡(luò)架構(gòu)。比特幣網(wǎng)絡(luò)可以認為是按照比特幣協(xié)議運行的一系列節(jié)點的集合。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:分析比特幣網(wǎng)絡(luò):一種去中心化、點對點的網(wǎng)絡(luò)架構(gòu)原文已更新,請讀者前往原文閱讀 比特幣采用了基于互聯(lián)網(wǎng)的點對點(P2P:peer-to-p...

    fjcgreat 評論0 收藏0
  • Don’t Trust, Verify

    摘要:和比特幣網(wǎng)絡(luò)傳輸協(xié)議的一系列優(yōu)化使得比特幣的新區(qū)塊幾乎可以在瞬間被全世界的礦工接收,非常有效的降低了孤塊率,保證了網(wǎng)絡(luò)安全。 這篇文章試圖討論全節(jié)點對于區(qū)塊鏈的意義。 角色 我們都知道,區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點有不同的角色。例如: 出塊節(jié)點 出塊節(jié)點負責打包交易,生產(chǎn)區(qū)塊。出塊節(jié)點在不同的地方有不同的名字,例如比特幣和以太坊中的礦工/礦池,Bitshares的Delegator,EOS的Pr...

    simpleapples 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<