跳到正文

點對點網路

點對點網路讓每個節點維護一組有限且持續變動的直接對等節點,用於探索、廣播及請求-回應交換;它不會形成單一全域視圖,也不會把訊息接受變成共識。

更新於

僅供教育參考,不構成投資建議;投資可能產生損失。

直接答案

點對點網路讓每個節點探索並維護一組有限的直接對等節點,交換經過認證的協議訊息,並在不經單一中央伺服器轉送所有內容的情況下建立本地視圖。它不是完全圖、全域記憶池,也不能獨自成為事實來源。某個對等節點接收、驗證或轉送物件,並不證明所有節點均已看到、區塊已將其納入或共識已將其最終確定。

合併後的以太坊使用兩個獨立的點對點網路。執行用戶端使用節點探索、RLPx 及有版本的 eth 功能進行同步與交易交換;共識用戶端使用 discv5 探索節點,並透過 libp2p 廣播及請求-回應協議交換信標區塊、見證及其他共識物件。兩個用戶端在本機透過經過認證的 Engine API 協作;錢包通常透過 JSON-RPC 提交交易,但不會因此成為參與廣播的節點。

運作機制

  1. 鎖定鏈、網路、創世區塊及分叉設定、執行與共識用戶端版本、節點身分及觀察時間。將執行用戶端、共識用戶端、可選驗證者、本地 Engine API 及面向使用者的 RPC 畫成獨立元件。
  2. 檢查每條探索路徑:內建引導節點、DNS 清單、靜態或信任的對等節點、ENR 或 enode 身分、公布的端點與序號、網路相容性、NAT 及連入可達性。簽署的 ENR 將紀錄綁定至金鑰,但不證明誠實、同步狀態或目前可達性。
  3. 分別記錄連線與協議協商。執行層對等節點建立 RLPx 工作階段並協商 eth 等功能;共識層對等節點在 discv5 探索後協商 libp2p 傳輸、安全及協議 ID。找到端點不等於應用協議相容。
  4. 依實際路徑追蹤每個物件。交易可能從 RPC 提交進入本地驗證與執行層記憶池,再透過 eth 公告及請求傳播。共識物件採用特定主題的廣播驗證,而缺少的區塊可透過請求-回應取回。
  5. 在本地接納或轉送前執行有界解碼、去重、速率限制、簽章、語法及狀態檢查。記錄無效、忽略、無法取得及資源受限結果;對等節點評分與斷線政策是本地實作決策,並非共識信譽。
  6. 將接收、驗證、轉送、交易納入、執行結果、分叉選擇、合理化及最終確定視為不同狀態與時鐘。當本地池、鏈頭或歷史回應不完整、衝突或過時時,比較多個對等節點或節點。
  7. 監控連入及連出對等節點的多樣性、營運者、IP 前綴及 ASN 集中度、流失、延遲、封包遺失、頻寬、佇列、無效流量、時鐘健全度及 RPC 依賴。演練引導節點遺失、NAT 故障、網路分割、日蝕攻擊、過載與復原,但不要宣稱絕對抵抗能力。

對等節點探索、傳輸安全及應用有效性解決不同問題。引導節點負責介紹候選節點,不轉送一般流量,也不選擇規範鏈。加密保護工作階段內容與認證,但對等節點仍能得知網路端點及時間;遠端 RPC 提供者還可觀察查詢、位址及提交的交易。

傳播並行進行且取決於拓撲。扇出、重複路徑、頻寬序列化、驗證 CPU、排隊、封包遺失、重傳、對等節點評分及物件特定規則共同決定到達時間的分布與尾端。delay = hops * perHopTime 之類公式只是明確假設序列處理的教學模型,而非網路保證。

計算範例

  • 序列路徑與流水線。 一條教學路徑有 4 hops,每跳網路時間為 80 ms,驗證時間為 20 ms。完全序列處理得到 4 * (80 + 20) = 400 ms。若驗證與下一次傳輸重疊,簡化下限為 4 * 80 + 20 = 340 ms。兩者都不是全網傳播時間。
  • 交易公告與取回。 節點收到 20 個交易雜湊,已有 6 個,因此缺少 20 - 6 = 14 個交易本文。若教學請求最多攜帶 8 個,便需要 ceil(14 / 8) = 2 batches。每批往返 120 ms、驗證 30 ms,序列完成時間為 2 * (120 + 30) = 300 ms,理想並行為 150 ms。實際限制取決於協商的 eth 版本及用戶端。
  • 簡化日蝕機率。8 個連出對等節點各自獨立抽樣,惡意候選占 25%,全部為惡意節點的機率為 0.25^8 = 0.0000152587890625 = 0.00152587890625%。探索偏差、女巫身分、IP 與 ASN 相關性及對等節點保留政策會破壞獨立性假設,因此這不是安全保證。
  • 驗證過載。 連入廣播為 900 messages/s4 個工作執行緒各驗證 250 messages/s,總處理能力為 1,000 messages/s,備用能力為 100 messages/s,使用率為 90%。攻擊流量達到 1,400 messages/s 時,每秒積壓 400 messages/s,累積 6,000 messages 需要 15 seconds。若忽略服務時間變異,5,000-message 佇列會在丟棄或限流前的 5,000 / 400 = 12.5 seconds 內填滿。

風險

  • 鏈、創世區塊或分叉設定錯誤
  • 執行用戶端、共識用戶端或 Engine API 不相容
  • 引導節點與 DNS 探索集中或遭劫持
  • 端點中繼資料過時、偽造或無法連線
  • NAT、防火牆或連接埠設定阻礙預期可達性
  • 日蝕攻擊過濾節點的本地視圖
  • 女巫身分及 IP、ASN、營運者或雲端服務集中
  • 過度依賴靜態或信任的對等節點
  • 交易審查或選擇性轉送
  • 公開與私有委託流分化
  • 本地記憶池接納、替換及逐出政策分化
  • 無效廣播耗盡驗證 CPU
  • 超大型請求、解壓縮、頻寬、記憶體或磁碟耗盡
  • 對等節點評分遭操縱或錯誤懲罰
  • 佇列背壓丟棄時間敏感訊息
  • 延遲、封包遺失或時鐘偏移造成暫時鏈頭分歧
  • 協議版本或分叉摘要不相容
  • 將已修剪歷史或資源無法取得的回應誤讀為物件不存在
  • IP、時間、查詢及交易來源隱私外洩
  • 集中或暴露的 RPC 導致追蹤、視圖過時、審查或遭入侵

常見迷思

  • 每個節點都直接連線其他所有節點。 每個節點只有有限且持續變動的本地對等節點集合,不同節點可能暫時看到不同訊息及鏈頭。
  • 引導節點是可信區塊來源或共識參與者。 它通常只負責初始對等節點介紹;鏈有效性及分叉選擇在其他環節驗證。
  • 交易經一個對等節點接受後便會全網廣播並保證納入。 接納與轉送均屬本地行為,建構者或提議者可不納入該交易。
  • 廣播驗證等於共識與最終確定。 它只是早期的本地網路關卡;分叉選擇、合理化及最終確定是獨立狀態機。
  • 更多對等節點或加密傳輸會自動提供匿名性與日蝕攻擊抵抗力。 多樣性及選擇方式同樣重要,而對等節點與 RPC 提供者仍可關聯端點、時間及活動。

相關主題

資料來源

導覽

搜尋知識庫...