有很多方法可以對區塊鏈進行分類。其中之一是確定區塊鏈是公開的還是允許的。允許的區塊鏈是為定義的人群準備的,例如希望共享一致資料庫的公司聯盟。
公共區塊鏈是任何有網際網路連線的人,都可以訪問的商品和數位商品。沒有人擁有這些商品,所以沒有中央基礎設施供應商。相反,基礎設施由許多獨立的同行提供,分佈在全球各地。
分散式區塊鏈的分散式點對點(P2P)網路具有很高的彈性,因為網路的節點彼此獨立執行。
我們將專注於網路層的區塊鏈協議。在網路層,對等體透過其 IP 地址進行辨識。
它透過節點間 TCP 連線處理節點之間的通訊 —— 讀取:網際網路。
出於隱私原因,最好保持 IP 地址和公鑰不可連結。
什麼是點對點網路?
在點對點網路(P2P)中,每個參與者都扮演著相同的角色;他們都是同齡人。每個對等體既是客戶端(請求資料)和伺服器(提供資料)。
當你把它與普通網站進行比較時,這使它更加強大。
網際網路上的特殊電腦儲存了大多數網站。這台特殊的電腦通常被稱為伺服器。如果你想訪問網站,你可以直接連線到伺服器。
如果這台電腦碰巧出了問題,網站將無法工作。另一方面,使用 P2P 網路,如果一台機器不可用,其餘機器將繼續提供服務。
在 P2P 網路中,你通常連線到幾個對等體,如果其中一個離線,一切仍然正常工作。這使得區塊鏈網路非常強大。
點對點網路
我們今天所經歷的網際網路是高度集中的。我們作為網際網路使用者產生的大多數資料,最終都掌握在幾家大公司手中。但網際網路上存在許多真正分散的系統。
BitTorrent 是網際網路上真正分散式系統的一個例子。
像任何其他技術一樣,點對點網路啟用了合法的應用案例,如開源軟體的可靠交換,以及非法應用案例,如盜版音樂和電影。
P2P 網路的優勢
與更集中的同行相比,分散式系統有一些主要優勢,最明顯的是它們的加強性。
點對點網路內建了高度的備援。缺少單個故障點,即使大部分網路關閉,系統也能存活。
我們看到了當局使用 BitTorrent 或 Napster 等服務,將其中一些網路離線的巨大困難。
這是由於你從點對點架構中,獲得的容錯性。
但與集中式系統相比,有一些缺點。高度備援和對溝通的需求,以及同行之間的協調,以犧牲效率為代價。
看看資料儲存是這裡最明顯的例子。
許多節點,就 Horizen 網路而言,超過 35,000 個節點儲存了區塊鏈的副本。這不是很高效的儲存效率,但使區塊鏈對攻擊具有高度的彈性,並使其具有不可變性。
在電腦科學中,CAP 定理將加強性且可擴充的分散式網路的成本,描述為網路達到一致性所需的時間。像事務一樣的事件需要一些時間,才能廣播到網路上的每個節點。
在第二步中,所有節點都必須就事件發生的順序達成共識。
我們發現了一個簡單而出色的分散式系統視覺化,展示了新對等體加入網路並與所有其他節點同步的過程。它允許你新增和刪除隨機節點,以顯示整個系統的加強性。
使用點對點網路架構,每個節點都等於其他節點。P2P 網路中的每個節點,都充當客戶端和伺服器,而不是傳統的客戶端 - 伺服器模型。
雖然伺服器可能會遇到客戶端無法訪問其資料的停機時間,但在 P2P 網路中,如果離線,你只需連線到另一個對等體。
P2P 網路的目的
注意:當我們在本報導中使用術語節點時,我們指的是儲存整個區塊鏈副本的完整節點。
每當我們明確談論光節點時,我們都會使用光節點一詞。
輕型節點不儲存區塊鏈的副本,而只儲存金鑰對。他們不驗證其他交易或塊,需要連線到完整節點,然後才能與區塊鏈互動。
它們基本上是連線到充當伺服器的完整節點之一的客戶端。
首先,P2P 網路促進了節點之間的通訊。區塊鏈上的資料是安全的,因為存在許多副本。這些副本需要同步,否則擁有大量副本就沒有多大意義了。
為了讓所有節點保持同步,它們需要不斷通訊,以更新事件,例如新事務或塊。
節點之間的通訊透過 TCP 進行,TCP 是傳輸層網際網路協議套件的關鍵部分。
此外,可以使用 TLS(應用程式層的加密協議)來保護節點之間的通訊,以提供私人和安全的通訊。
Horizen 區塊鏈上的安全節點和超級節點之間的通訊,使用 TLS 進行保護。
P2P 網路協議應確保查詢一小部分節點(例如,對數到總節點數)足以查詢儲存在所有節點子集上的資訊。區塊鏈的情況略有不同。
所有節點都儲存了區塊鏈的副本。
這是 P2P 網路的第二個主要目的:維護大量相同資料的獨立副本。
由於每個節點都儲存區塊鏈的副本,因此在最佳化網路協議方面,對等發現比內容發現更重要。
P2P 網路的屬性
當你把自己放在某人想要啟動分散式系統(如區塊鏈)的位置上時,至少在 P2P 網路上執行它是顯而易見的選擇,原因有二:
- 首先,它不需要很多資源來引導。P2P 網路只需少數節點即可以近零成本旋轉。一旦網路獲得牽引力,就可以無縫新增新節點。
- 其次,它提供了高度的復原力。加入網路的人越多,它就越有彈性。比特幣的既定目標之一,是能夠抵禦試圖攻擊網路的國家級參與者。一開始,當只有幾個節點時,情況並非如此。
然而,與此同時,潛在攻擊者瞄準網路的激勵措施很小。隨著越來越多的人加入網路,網路的價值增加了,針對網路的激勵措施也增加了。
對攻擊者來說,不幸的是,比特幣的成長也提高了其復原力。你可以說 P2P 網路的穩健性,與實際執行攻擊的激勵措施相得。
用於 P2P 檔案共享的 BitTorrent 協議可以觀察到類似的發展。 儘管娛樂業想關閉它,但所有的嘗試都失敗了。
使用 P2P 網路執行公共區塊鏈的上述兩個原因是令人信服的,但分散式系統確實需要權衡取舍。
雖然安全性受益於資訊的備援,但這需要付出效能成本。 為了實現高水準的權力下放,執行節點的最低要求不應構成進入障礙。
這反過來意味著效能最低的節點(就頻寬和/或計算能力而言)限制了整個網路。
網路圖
為了說明分散式網路,我們使用圖表。
這個術語乍看很簡單,但其實還有更多內容。圖論領域是研究不同類型圖的數學學科。我們在有向無環圖(DAG)的文章中談到了圖論。
在那裡,我們談到了資料結構背景下的圖形 —— 即如何在應用程式層相互連線塊。 這裡的圖表描述了網路層節點之間的連線。
https://www.horizen.io/academy/peer-to-peer-networks-p2p/
當節點離線,其對等體重新連線到不同的節點,或者當新節點加入 P2P 網路時,就會發生這種情況。 變化的速度可能有所不同,這對隱私有影響。
當涉及到網路圖的動態性時,有兩個極端。 完全靜態的圖形永遠不會改變,這意味著對手可以隨著時間的推移學習整個圖形。 這意味著他處於將 IP 地址連結到公鑰的良好位置。
完全動態的圖形以阻止對手學習圖形結構的速度變化,並阻止將 IP 地址連結到公鑰。 他只會知道他的本地圖形環境。
節點和網路故障
當我們談論分散式共識時,我們在網路層引入了兩種類型的故障:節點故障和網路故障。
節點可能會崩潰或離線,接收或處理訊息時可能出現問題,或者顯示拜占庭行為。 當節點行為拜占庭時,這意味著它們隨機行為並偏離協議。 通常,該術語用於指代惡意行為。
網路故障使用它們對訊息傳播的影響進行分類,而不是導致失敗的原因。
通常假設以下模型之一,有關網路架構的其他設計決策基於此假設:
- 在同步模型中,所有訊息都以已知和有界的延遲到達。
- 在部分同步模型中,訊息到達時有界延遲,但界延遲未知。
- 在異步模型中,訊息延遲是未知和未繫結的。 這使得非同步模型成為構建可靠系統的「最困難的假設」。
共識機制不僅必須解釋節點故障和網路故障,P2P 網路本身也必須解釋。
如果對等體離線,節點會怎麼做? 它首先如何找到一組要連線的節點?
P2P 網路上的對等發現
正如我們之前所說,對等發現比區塊鏈協議中的內容發現更重要。
假設你是第一次設定節點。 一旦你完成,你的節點需要連線到其他節點,以便開始下載區塊鏈並開始工作。
當你的節點首次上任時,客戶端會確定自己的 IP 地址。 接下來,它需要網路上一些對等體的 IP 地址才能開始。 節點有兩種方法可以獲取初始地址集:
客戶端包含 DNS 地址的主機名列表,其中包含某些種子節點的 IP 地址列表。 客戶端發出 DNS 請求,並接收對等節點列表作為回報。
如果出於任何原因失敗,客戶端通常包含一些知名節點的硬編碼 IP 地址列表。 節點接收的所有 IP 地址都具有時間戳。
一旦客戶端透過 DNS 請求或硬編碼的種子地址,連線到一組初始節點,它可以透過傳送 getaddr 請求來請求更多地址。 當節點收到 getaddr 請求時,它會確定它當前使用最近的時間戳維護多少個地址。
客戶端選擇這些地址,最多 2500 個,並在 addr 訊息中返回它們。 addr 訊息也可能未經請求而到達,例如,當節點大約每 24 小時向同行通告自己的地址時。
當你的節點離線一段時間時,它試圖連線到其「地址簿」中仍有的對等體。 即使只有少數節點保持活動狀態,客戶端也可以使用 getaddr 訊息請求新的對等體地址。
單個同步節點儲存其他節點的多個 IP 地址。 這意味著單個對等體離線不會造成問題,並且可以被替換。
如果你希望節點連線到特定的對等體,例如,因為你執行了多個節點,並且希望它們直接相互交談,你可以透過 addnode 命令列參數,手動指定這些連線。
P2P 網路上的通訊標準
在研究了網路的拓撲結構,以及不同對等體之間的連線如何建立後,讓我們來談談資料是如何傳輸的。
溝通通常透過訊息進行。 區塊鏈 P2P 網路上的大多數訊息都是交易。 應用程式層中訊息或事務的正確外觀已經覆蓋,現在我們將解釋對等體如何交換這些標準化訊息。
就像塊一樣 —— 每條訊息本質上都是一個儲存一些資料的容器。
每條訊息的第一部分是一個標頭,其中包含有關訊息的一些元資料。 它以一個開始字串開始,以指示訊息是來自主網還是測試網。
之後,命令名稱指定了這是哪種類型的訊息。 下一個欄位 —— 有效負載大小 —— 指示訊息攜帶了多少資料。 在最後一步中,添加了一個校驗和。
有些訊息沒有任何有效載荷。 用於從另一個對等體庫存中,請求 IP 地址的 getaddr 訊息沒有任何有效載荷。
同步節點
想象一下,你剛剛設定了一個節點。 在對等發現階段之後,你有一堆 IP 地址,但仍然需要與所有其他節點同步。 這意味著你必須下載區塊鏈的所有塊。 為了做到這一點,客戶將向你的同行傳送 getheaders 訊息。
這會觸發接收節點用塊頭散列列表回覆 —— 一條訊息中最多 2000 個。 塊頭散列的大小比完整頭小得多,更不用說完整塊了。
為了減少通訊開銷,對等體總是在傳送實際資料之前,先交換資料物件的辨識符號(哈希)。
接下來,你的節點將把標頭列表與其現有庫存進行比較。 由於你的節點剛剛啟動,因此沒有庫存,因此客戶繼續請求實際塊。
為此,它傳送 getblocks 訊息。 接收節點將回復其塊頭散列清單。 將列表與其空庫存進行比較後,你的節點將要求所有塊加快速度。
這是透過傳送 getdata 訊息來完成的,該訊息從另一個節點請求一個或多個特定資料物件 —— 在這種情況下是實際的塊資料。
getdata 訊息可用於請求塊、事務和其他物件。 所有這些都有一個唯一的散列辨識符號,可用於請求更多資訊。
P2P 網路廣播機制
節點與網路同步後,主要資訊流入透過未經請求的訊息發生。 新建立的事務需要在儘可能短的時間內廣播到所有節點,就像新塊一樣。
廣播機制的基本功能,是定義一套如何在網路節點之間分配訊息的規則。
正如我們之前所說,P2P 網路的主要目的是促進同行之間的溝通。 在一個有機成長而不是集中規劃的網路中,需要一個有點靈活的廣播機制。
這種機制需要確保所有訊息,在一定時間內到達所有節點。 廣播機制影響對等體接收訊息的順序,以及節點接收訊息所需的時間。
廣播機制最好顯示以下屬性:
- 低延遲 - 訊息到達所有節點的最長時間應該是有界且小的。 這影響了網路的整體安全性,因為節點內的資料一致性至關重要。 廣播機制的延遲越低,達到不一致狀態的風險就越低。 低延遲傳播機制也意味著更低的陳舊率和更少的浪費 PoW。
- 公平性 - 假設所有節點具有相同的頻寬,它們應該經歷大致相同的延遲。
- 匿名 - 潛在的對手應該無法將交易訊息連結,因此無法將相關的公鑰連結到訊息來源的 IP 地址。
我們想在本報導中進一步研究三種廣播機制:
洪水、擴散和蒲公英協議。
洪水
讓我們考慮建立一個新事務的節點:
它想將其廣播到網路,以便將其包含在下一個塊中。 作為第一步,它將交易傳送給所有同行。 在泛濫模型中,每個接收節點都會以恆定的時間延遲轉發此事務。
一旦轉發,訊息就會沿著邊傳遞,並帶有確定性延遲。 這意味著邊緣越長,時間延遲就越大。
從紐西蘭傳送到奧地利的訊息比從舊金山傳送到聖地亞哥的訊息需要更長的時間。
雖然資訊以光速傳播,但在長距離內,這些差異變得明顯。
這意味著洪水產生了最可預測的蔓延模式。 對抗性節點將以確定性計時模式接收來自給定節點的所有訊息。
瞭解這些時序模式以及瞭解圖形結構使拜占庭行為者能夠將IP地址連結到公鑰——一個潛在的攻擊向量。
擴散
如前所述,擴散是洪水的精緻版本。
訊息沿著邊緣傳播所需的時間仍然是確定性的 —— 無論哪種方式,實體工作 —— 但傳輸延遲是隨機的。 這意味著接收訊息的節點不會以恆定的速度,同時將其轉發給所有對等體。
相反,它增加了隨機延遲。
目前,擴散是大多數公共區塊鏈的首選方法。 2015 年,比特幣將傳播機制從固定 200 毫秒延遲的傳播轉變為隨機延遲的擴散。
擴散使從訊息的定時模式中,獲取資訊變得更加困難,但仍然遵循一個簡單的直覺:
如果你想像一個非常大的圖形,有數千個節點和訊息的來源在中心,那麼訊息仍然在其起源周圍展開點對稱。
擴散仍然不完美。 使用複雜的鏈式分析工具,對手至少可以從訊息的時機和傳播模式中獲取一些資訊。 對於建立大量事務的節點來說尤其如此,這些節點需要分析大量資料。
節點保護其身份的一個選項是使用代理廣播訊息-透過代理傳播。
但還有另一種廣播機制迭代:歡迎蒲公英。
蒲公英
蒲公英擴散不是使用單個節點作為代理來轉發訊息,而是分兩個階段進行:匿名階段和傳播階段。
在匿名階段,訊息透過網路圖上隨機選擇的線轉發。 每個中繼器將訊息傳遞給隨機選擇的對等體之一。 匿名階段的跳躍量也是隨機的。
當匿名階段結束,傳播階段開始時,訊息將使用擴散廣播到整個網路。
「我們提議的網路堆疊背後的核心思想是移動目標防禦:我們在圖形結構和傳播協議中都利用隨機性,從而使對手難以推斷交易的來源。 關鍵是在不損害延遲和公平保證的情況下做到這一點。」- Viswanath,為匿名重新設計加密貨幣的 P2P 網路堆疊。
Dandelion 在 Beam 和 Grin 中實現,MimbleWimble 協議的兩種不同實現。
點對點網路上的隱私和安全
如果訊息可以連結到 IP 地址,大多數隱私保護技術是無效的。 即使使用簡單的技術和對 P2P 圖形結構的最小知識,將訊息連結到 IP 地址的準確率高達 30%。
為了量化傳播機制提供的匿名程度,可以應用兩個指標:
「精確度和召回是自然的效能指標。 回憶只是檢測的機率,這是一個常見的匿名度量,可以捕捉估計器的完整性,而精度則捕捉準確性。」-Bojja,Fanti,Viswanath - 蒲公英:為匿名重新設計比特幣網路
為了評估廣播機制的安全和隱私屬性,假設有兩種類型的節點:
誠實的節點和對抗性節點勾結,以取消匿名化使用者。
攻擊者可以應用兩種不同的技術來匿名化使用者,竊聽或基於間諜的方法:
竊聽器使用高效能節點,連線到儘可能多的節點。 該節點可以與單個誠實伺服器建立多個連線,每個連線都來自不同的IP地址。
誠實的節點沒有意識到其多個連線來自同一個節點。
竊聽器節點監聽網路上所有中繼的訊息,而不中繼任何內容本身。 因此,執行竊聽器節點的攻擊者獲取有關網路拓撲的資訊,並隨著時間的推移學習其圖。
基於間諜的對手會損壞一小部分節點,並觀察廣播訊息的時間戳。
「這與竊聽者的對手不同,因為竊聽者只觀察延遲的時間戳,並且它對所有節點都這樣做,包括[訊息]的來源。 對基於間諜的對手的精確分析尚未出現在文獻中。」- Giulia Fanti,Pramod Viswanath,比特幣 P2P 網路的匿名屬性
激勵基礎設施
大多數區塊鏈幾乎沒有激勵在網路上執行節點。 在比特幣的早期,大多數節點也開採了 BTC,因此收集了區塊獎勵。
執行節點的另一個好理由是安全地接受付款。 大多數錢包實際上是輕型節點。 他們連線到一個完整的節點,以便與區塊鏈「交談」。
這意味著他們必須信任完整的節點運算子,來向他們提供真實的資訊。 透過自己執行一個完整的節點,你不必信任任何人 —— 你可以自己驗證。
儘管如此,很少有人定期進行交易,足以執行時間密集型的完整節點。
安全節點和超級節點
Horizen 還在財務上激勵節點營運業者,因為執行節點是有代價的。 設定需要時間,你需要設定或租用伺服器,節點操作員必須偶爾更新軟體。
在 Horizen 網路上,礦工獲得總區塊獎勵的 60%,即 12.5 ZEN。 另外 40% 用於資助基礎設施(安全節點 10% 和超級節點 10%)和非營利性禪宗區塊鏈基金會 20% 用於開發協議。
因為 Horizen 不僅想要很多節點,而且想要有能力和強大的節點,所以節點必須滿足一套最低要求。 每個節點都需要有效的 TLS 證書,需要至少 92% 的時間啟動並執行,並滿足某些記憶體和計算能力要求。
你可以在此處瞭解有關安全節點,和超級節點要求的更多資訊。
在公司財團正在執行的許可區塊鏈上,例如追蹤供應鏈,維護分類賬的動機是連線存取寶貴的業務資料,而不必信任第三方。
我們相信,Web 3.0 將在很大程度上受益於分散式網路的出現,我們將看到從集中式服務向分散式服務的過渡。
這些計算要求使用互動式挑戰 - 響應協議進行驗證 —— 如果你願意的話,這是一種工作證明。 節點定期收到計算挑戰,透過監控它們應對這些挑戰所需的時間,可以得出對其能力的估計。
節點需要透過響應時間達到某個目標,否則它們被認為沒有資格獲得節點獎勵。
安全和超級節點不僅僅是建立某種主節點的一種手段,它們對我們的側鏈模型非常重要。 節點營運商將能夠選擇他們是否想要支援側鏈,如果是的話,支援哪些側鏈。
我們期望看到一些有趣的經濟模型,dApps 建構在我們的側鏈上。dApps 應該激勵節點營運商支援他們的側鏈,就像他們通常為其服務所建構的基礎設施付費一樣。
Horizen EON 是我們的第一個公共股權證明側鏈,也是完全相容 EVM 的智慧合約平臺,允許開發人員在 Horizen 上高效地構建和佈署 dapp,同時充分受益於乙太坊生態系統。
摘要 - P2P 網路
點對點網路以犧牲效率為代價,提供了極大的魯棒性或容錯性。 每個節點都在網路上執行相同的任務,並同時充當客戶端和伺服器。 如果你的一個同行離線了,你只需連線到另一個。
如果你執行一個節點並碰巧離線一段時間,你需要在某個時候重新連線,以便你的同行在你錯過的塊上進行更新,以便再次完全正常工作。
在公共 P2P 網路上執行區塊鏈的兩個令人信服的原因,是啟動系統的低成本,和該基礎設施提供的高度彈性。
P2P網路可以用圖表示,其中節點構成圖的頂點,對等體之間的連線是連線節點的邊緣。 網路的主要目的是促進不同網路參與者之間的通訊。
雖然其他分散式基礎設施,通常針對內容發現進行了最佳化,如 BitTorrent,但區塊鏈 P2P 網路針對對等發現進行了最佳化,因為所有節點都儲存了相同的內容。
用於在網路上分發訊息的廣播機制,會影響節點的隱私等級。 當攻擊者能夠將公鑰連結到其原始 IP 地址時,這打開了各種攻擊向量的大門。
我們談到了洪水,一種以恆定的時間延遲轉發訊息的機制,時間延遲是隨機的擴散,以及蒲公英,廣播分兩個階段進行:匿名階段和傳播階段。
最後,我們解釋了為什麼我們激勵 Horizen 網路上的節點營運商,以及這些激勵與什麼條件有關。
商機探索 —— 工地管理要管什麼?
沒有留言:
張貼留言