基於側鏈的P2P網路設計

2021-09-17 02:56:35 字數 1519 閱讀 6303

p2p網路是一種在組網節點之間進行任務分配和工作負載的對等網路。節點之間地位相等、功能相同、無主次之分。沒有中心節點,每乙個節點既是服務的請求者又是服務的響應者。資源冗餘儲存,部分節點的故障不影響整體網路的執行。

p2p網路是乙個天然的分布式、去中心化的資訊儲存和查詢網路,是區塊鏈網路層的標準解決方案,區塊鏈網路的資料同步、狀態更新、訊息廣播都是通過p2p網路進行的。

在區塊鏈出現之前,p2p網路已經被電驢、bittorrent所廣泛採用,區塊鏈p2p實現大多是對已有p2p網路的微小改進,以適應區塊鏈自身的特點。

以太坊的p2p網路

以太坊的p2p網路由兩部分組成:網路發現模組,資料傳輸模組。

網路發現模組主要包含ping/pong/findnode/sendneighbours四個方法。

ping/pong方法用於節點發現;

findnode用於查詢附近的節點;

整體結構是乙個二叉樹,每乙個節點都是二叉樹的乙個葉結點,葉結點是乙個256位的二進位制值,是通過乙個512位的公鑰計算得到的。兩個葉節點間的距離由葉結點進行異或運算得到。每乙個節點都擁有乙個由32個桶構成的路由表。表中由近及遠儲存了已經發現的節點,每個桶最多儲存16個節點。

當乙個節點a加入網路時,先通過外部機制,獲取到初始路由表。a向路由表中距離自己最近的節點b傳送ping訊息,如果節點b存在則返回pong訊息。a向b傳送查詢附近節點的請求findnode,b從自己的路由表中返回16個距a最近的節點。如果返回的節點中,c比b離a更近,則a向c發出ping請求,並重複以上步驟,直到找不到距離a更近的節點為止(如圖一)。在乙個擁有2^n個節點的網路中,最多需要n次就可以找到距離a最近的節點列表。實際專案中,可以通過並行查詢提高效率,通常使用udp協議。

(圖一)

資料傳輸模組負責和已發現的節點進行資料交換。a節點給b節點傳送乙個hello訊息,定義了相互之間資料互動的規則,然後通過send和receive對加密資料進行交換,獲取到資料之後,先解密然後儲存到本地資料庫。

當節點需要廣播訊息時,則取出附近的節點,向附近節點傳送訊息,附近節點發現這是乙個廣播訊息,也會向其他附近節點傳送該訊息,直至傳遍整個網路。

多側鏈的p2p網路

第三代區塊鏈專案通常都具有多側鏈功能。而常規的p2p網路無法很好的適應該需求。fairblock區塊鏈專案在實現過程中對現有的p2p網路進行了改進,使得單個p2p網路可以同時執行多個側鏈。每乙個節點都為自己關心的所有側鏈單獨維護一張路由表(如圖二)節點之前互相發現和訊息傳遞時,都會增加額外的側鏈編號字段,以唯一表示當前正在執行的側鏈。同一節點可以同時執行多個側鏈,而不會互相影響。

(圖二)

在fb的基於cpos的測試網路中,同時執行了100個側鏈,平均3秒左右即可生成乙個新的區塊,在側鏈增多的情況下,區塊生成速度和傳播速度幾乎不受影響。

P2P網路模型

1 靜態配置模型 靜態配置模型是一種相對靜態而簡單的對等點定位模型。在該模型中,每個對等點都確切地知道存在於其p2p 網路中其它對等點的位置以及它們所提供的共享資源內容。缺點 網路無法應付不能預知的隨機事件和臨時變更,比如對等點隨機進入和退出網路。優點 整個網路在外部攻擊面前表現得很穩固。2 動態配...

基於區塊鏈的p2p平台治理方案

近期p2p平台爆得讓人心驚膽戰,但其作為銀行之外企業 個人融資的有益補充,作為普通小白們不錯的理財方案,這個行業還是非常有其存在價值的。但這個看上去風險重重的行業,該如何規範,才能讓它健康發展呢?我想到了區塊鏈。p2p之所以風險如此高,最大的問題是剛性兌付。本來作為 中介 平台,撮合借貸方和投資方達...

P2P 殭屍網路入門

當人們正大肆宣傳zeroaccess被攻克的訊息,malwaretech 博主認為是時候介紹一下p2p殭屍網路 botnets 了。包括殭屍網路的工作原理和應對方法。傳統殭屍網路圖例 無論使用http irc或是其他協議,傳統殭屍網路的構成都是相同的。所有的殭屍主機 bot 都通過乙個或多個網域名稱...