﻿---
title: "點對點網路"
description: "點對點網路讓每個節點維護一組有限且持續變動的直接對等節點，用於探索、廣播及請求-回應交換；它不會形成單一全域視圖，也不會把訊息接受變成共識。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 點對點網路

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

<a id="answer"></a>

## 直接答案

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

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

<a id="mechanism"></a>

## 運作機制

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` 之類公式只是明確假設序列處理的教學模型，而非網路保證。

<a id="example"></a>

## 計算範例

- **序列路徑與流水線。** 一條教學路徑有 `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/s`；`4` 個工作執行緒各驗證 `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` 內填滿。

<a id="risks"></a>

## 風險

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

<a id="misconceptions"></a>

## 常見迷思

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

<a id="related"></a>

## 相關主題

- [全節點](/zh-tw/crypto/full-node/)
- [記憶池](/zh-tw/crypto/mempool/)
- [抗審查性](/zh-tw/crypto/censorship-resistance/)

<a id="sources"></a>

## 資料來源

- [Networking layer](https://ethereum.org/developers/docs/networking-layer) - Ethereum.org（查閱日期：2026-08-13）
- [Ethereum Wire Protocol (ETH)](https://github.com/ethereum/devp2p/blob/master/caps/eth.md) - Ethereum devp2p（查閱日期：2026-08-13）
- [The RLPx Transport Protocol](https://github.com/ethereum/devp2p/blob/master/rlpx.md) - Ethereum devp2p（查閱日期：2026-08-13）
- [Node Discovery Protocol v5 - Wire Protocol](https://github.com/ethereum/devp2p/blob/master/discv5/discv5-wire.md) - Ethereum devp2p（查閱日期：2026-08-13）
- [Phase 0 -- Networking](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/p2p-interface.md) - Ethereum Consensus Specs（查閱日期：2026-08-13）
- [gossipsub v1.1: Security extensions to improve on attack resilience and bootstrapping](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md) - libp2p（查閱日期：2026-08-13）
- [Connecting To The Network](https://geth.ethereum.org/docs/fundamentals/peer-to-peer) - go-ethereum（查閱日期：2026-08-13）
- [Spin up your own Ethereum node](https://ethereum.org/developers/docs/nodes-and-clients/run-a-node/) - Ethereum.org（查閱日期：2026-08-13）

Source: https://wiki.fcontext.com/zh-tw/crypto/peer-to-peer-network/index.mdx
