OKB.VN FundamentalsAccount Model vs UTXOSo sánh Account Model (Ethereum) và UTXO (Bitcoin) — trạng thái, bảo mật, parallelization và use case.
Fundamentals

Peer-to-Peer Network là gì?

Kiến trúc mạng ngang hàng — nền tảng phi tập trung của mọi blockchain
⏱ 9 phút đọc 🌐 Hạ tầng mạng 🔗 Bitcoin · Ethereum · libp2p

Tóm tắt nhanh

Peer-to-Peer (P2P) Network là kiến trúc mạng không có server trung tâm — mỗi node kết nối trực tiếp với các node khác. Blockchain dùng P2P để đảm bảo phi tập trung: không ai có thể tắt mạng hay kiểm duyệt giao dịch bằng cách kiểm soát một điểm duy nhất. Gossip Protocol và DHT là hai cơ chế chính giúp thông tin lan truyền và node tìm thấy nhau trong mạng P2P quy mô lớn.

1P2P Network là gì?

Peer-to-Peer (P2P) Network là mô hình mạng máy tính trong đó các node ("peer") tham gia với vai trò ngang bằng nhau — mỗi node vừa có thể yêu cầu dữ liệu (client) vừa có thể cung cấp dữ liệu (server) cho các node khác. Không có máy chủ trung tâm điều phối.

P2P không phải khái niệm mới — BitTorrent, Napster (file sharing), Skype (ban đầu) đều dùng P2P. Nhưng blockchain đưa P2P lên tầm quan trọng mới: mạng P2P không chỉ để chia sẻ file mà còn để đồng thuận về trạng thái tài chính trị giá hàng nghìn tỷ USD.

Trong blockchain, tất cả node tham gia mạng P2P. Khi bạn gửi một transaction, ví của bạn broadcast transaction đó đến các peer lân cận; từ đó transaction lan ra toàn mạng qua cơ chế gossip, đến được mempool của các miner/validator.

2Client-Server vs P2P

Tiêu chíClient-ServerP2P
Điểm lỗiServer tắt → toàn bộ ngừngKhông có điểm lỗi trung tâm
CensorshipServer có thể chặn user bất kỳKhông ai kiểm soát được
ScalabilityServer bottleneck khi load caoTăng node → tăng capacity
LatencyThấp, 1 hop đến serverCao hơn, nhiều hop
MaintenanceDễ, quản lý tập trungKhó, không ai kiểm soát tổng thể
Ví dụFacebook, Gmail, AWSBitcoin, Ethereum, BitTorrent

Đánh đổi cốt lõi: Client-Server nhanh và dễ quản lý nhưng tập trung. P2P chậm hơn và phức tạp hơn nhưng không ai có thể tắt hay kiểm duyệt. Đây chính là nền tảng của decentralization.

Thực tế: Nhiều người dùng blockchain qua RPC endpoint (Infura, Alchemy) thực chất đang dùng Client-Server để truy vấn dữ liệu. Bản thân blockchain node chạy P2P, nhưng user không nhất thiết phải tự chạy node — đây là đánh đổi giữa convenience và trustlessness.

3Gossip Protocol — lan truyền thông tin

Gossip Protocol (hay epidemic protocol) là cơ chế mỗi node khi nhận được thông tin mới sẽ chuyển tiếp đến một số node lân cận ngẫu nhiên. Những node này lại tiếp tục chuyển tiếp đến các node khác — giống như tin đồn lan truyền.

Đặc điểm toán học quan trọng: với n node trong mạng, một message mới lan đến toàn bộ mạng chỉ trong O(log n) rounds. Với mạng 10,000 node, chỉ cần ~13 rounds.

Gossip trong Bitcoin

Khi một node nhận transaction mới hợp lệ, nó broadcast INV (inventory) message đến tất cả peer kết nối, thông báo có transaction mới với txid cụ thể. Peer chưa có transaction sẽ gửi GETDATA để lấy về. Quá trình này lan truyền transaction đến toàn bộ mạng Bitcoin (~10,000 reachable node) trong vài giây.

Gossip trong Ethereum

Ethereum dùng devp2p với sub-protocol eth cho block và transaction gossip. Sau The Merge, có thêm discv5 cho node discovery và gossip riêng cho beacon chain (attestation, block proposal). Ethereum tách biệt execution layer P2P và consensus layer P2P.

4DHT — tìm kiếm peer hiệu quả

DHT (Distributed Hash Table) là cấu trúc dữ liệu phân tán cho phép node tìm kiếm node khác hoặc dữ liệu trong mạng P2P mà không cần directory server trung tâm.

Nguyên tắc hoạt động: mỗi node có một ID ngẫu nhiên. DHT định nghĩa metric "khoảng cách" giữa các ID (thường dùng XOR metric trong Kademlia). Node lưu thông tin về các node "gần" trong routing table của mình. Để tìm một node với ID cụ thể, bắt đầu từ node hiện tại, luôn hỏi node gần nhất với target → sau O(log n) bước thì tìm được.

Kademlia trong Ethereum

Ethereum dùng Kademlia DHT (cụ thể là discv4discv5) cho node discovery. Khi một node Ethereum khởi động lần đầu, nó biết một số "bootstrap node" cố định, sau đó dùng Kademlia để khám phá các node khác trong mạng.

Mỗi node Ethereum có ENR (Ethereum Node Record) — chứa địa chỉ IP, port, public key và thông tin về các protocol được hỗ trợ. ENR được distribute qua Kademlia DHT.

5Mạng P2P trong Bitcoin

Bitcoin P2P dùng giao thức riêng chạy trên TCP, mặc định port 8333. Mỗi node Bitcoin duy trì kết nối đến khoảng 8 outbound peer (node tự chọn) và tối đa 125 inbound peer (node khác kết nối đến). Outbound peer quan trọng hơn vì node tự chọn nên khó bị attacker chi phối.

Vòng đời kết nối Bitcoin

  1. Node mới gửi VERSION message đến peer, chứa protocol version, block height, timestamp.
  2. Peer phản hồi bằng VERACK — kết nối thiết lập.
  3. Node yêu cầu GETHEADERS để sync block headers.
  4. Sau khi sync xong, node tham gia gossip transaction và block bình thường.

Compact Block Relay

Để giảm latency và bandwidth, Bitcoin dùng Compact Block (BIP152): thay vì gửi toàn bộ block (~1MB), node gửi block "skeleton" chứa header và short transaction IDs (~20KB). Node nhận thường đã có hầu hết transaction trong mempool, chỉ cần tải về những transaction còn thiếu.

6libp2p — P2P stack của Ethereum

libp2p là modular networking stack được phát triển ban đầu cho IPFS, sau đó được Ethereum, Polkadot, Filecoin và nhiều blockchain khác adopt. Ethereum dùng libp2p cho consensus layer (beacon chain) sau The Merge.

libp2p tách biệt các concern thành module độc lập:

  • Transport: TCP, QUIC, WebSocket, WebRTC — node chọn transport phù hợp.
  • Security: Noise protocol, TLS 1.3 — mã hóa và xác thực kết nối.
  • Multiplexing: mplex, yamux — nhiều stream trên một kết nối.
  • Peer Discovery: mDNS (local network), Kademlia DHT, Bootstrap nodes.
  • Pubsub: GossipSub — layer gossip hiệu quả cho broadcast.

GossipSub

GossipSub là protocol gossip của libp2p dùng trong Ethereum consensus layer. Node subscribe vào các "topic" (ví dụ: beacon_block, beacon_attestation) và nhận message thuộc topic đó. GossipSub cân bằng giữa low latency và low bandwidth bằng cách chỉ gửi full message đến một subset peer (mesh), gửi metadata đến phần còn lại.

7Network Partition và tấn công mạng

Network Partition xảy ra khi mạng P2P bị tách thành hai hoặc nhiều nhóm không thể liên lạc với nhau. Đây là tình huống nguy hiểm với blockchain vì mỗi phần có thể tiếp tục tạo block độc lập, dẫn đến fork.

CAP Theorem: trong hệ thống phân tán, khi có network partition, phải chọn giữa Consistency (tất cả node thấy cùng data) và Availability (hệ thống vẫn hoạt động). Bitcoin và Ethereum chọn Availability — tiếp tục hoạt động khi partition, giải quyết fork sau khi mạng kết nối lại theo quy tắc longest chain.

Sybil Attack

Sybil Attack là khi kẻ tấn công tạo ra nhiều node giả để chiếm tỉ lệ lớn trong mạng P2P, từ đó chi phối gossip, routing, hoặc thực hiện eclipse attack. Bitcoin và Ethereum chống Sybil bằng cách yêu cầu proof-of-work (mining) hoặc proof-of-stake (32 ETH) để tham gia đồng thuận — tốn kém hơn nhiều so với chỉ tạo node P2P.

8Eclipse Attack

Eclipse Attack là dạng tấn công mạng P2P trong đó kẻ tấn công chiếm toàn bộ kết nối peer của một node nạn nhân. Node bị eclipse chỉ nhận thông tin từ attacker — bị cô lập khỏi mạng thật.

Hậu quả của Eclipse Attack:

  • Node nhận block giả, bị dẫn dắt đến chain sai.
  • Attacker có thể thực hiện 0-confirmation double spend với merchant chấp nhận unconfirmed transaction.
  • Trong PoS, validator bị eclipse có thể bỏ lỡ duty → bị inactivity penalty.

Defense

Bitcoin Core chống eclipse bằng cách giới hạn số inbound connection từ cùng /16 subnet, random hóa outbound peer selection từ database peer đã biết, và dùng Anchor Connections — giữ lại 2 outbound connection ổn định qua các lần restart để đảm bảo luôn có ít nhất 2 peer đáng tin cậy.

9So sánh P2P các blockchain

BlockchainP2P ProtocolNode DiscoveryBlock PropagationSố node (~2025)
BitcoinBitcoin P2P (custom)DNS seeds + addr gossipCompact Block (BIP152)~60,000
Ethereumdevp2p + libp2pdiscv4/discv5 KademliaGossipSub~10,000 full nodes
SolanaCustom QUIC-basedGossip protocol riêngTurbine (erasure coding)~2,000 validators
CosmosTendermint P2PPEX (Peer Exchange)Direct broadcastVaries per chain

Solana dùng Turbine — chia block thành nhiều shred nhỏ, phân phối theo cấu trúc cây để tất cả validator nhận đủ block nhanh hơn so với gossip truyền thống. Đây là lý do Solana có thể xử lý block 400ms với 2000+ validator.

10Câu hỏi thường gặp

P2P là mạng máy tính trong đó các node kết nối trực tiếp với nhau mà không cần server trung tâm. Mỗi node vừa là client vừa là server. Blockchain dùng P2P để đảm bảo không có điểm lỗi trung tâm và không ai có thể kiểm duyệt.

Gossip Protocol là cơ chế mỗi node khi nhận thông tin mới sẽ chuyển tiếp đến một số node lân cận ngẫu nhiên, tương tự tin đồn lan truyền. Kết quả là thông tin lan đến toàn mạng trong O(log n) bước — với 10,000 node chỉ cần ~13 rounds.

Mạng P2P loại bỏ single point of failure: không có server nào bị tắt là toàn bộ mạng ngừng. Nó cũng ngăn censorship — không ai có thể chặn giao dịch bằng cách kiểm soát một điểm trung tâm, đây là nền tảng của tính phi tập trung.

DHT (Distributed Hash Table) là cấu trúc dữ liệu phân tán cho phép tìm kiếm node hiệu quả trong mạng P2P mà không cần directory server. Ethereum dùng Kademlia DHT cho node discovery — cho phép định tuyến O(log n) hops.

Eclipse Attack là khi attacker kiểm soát tất cả kết nối P2P của một node nạn nhân, khiến node chỉ nhận thông tin giả. Attacker có thể lừa node xác nhận giao dịch giả hay thực hiện double-spend. Bitcoin Core dùng Anchor Connections và subnet diversity để phòng chống.

📚 Khám phá thêm theo chủ đề
113 bài phân tích kỹ thuật — Blockchain Infrastructure từ nền tảng đến nâng cao
📋 Xem tất cả bài viết →