TÓM TẮT
RPC Node là Full Node chạy RPC server, cho phép dApp và wallet giao tiếp với blockchain qua JSON-RPC API. Hầu hết developer dùng hosted service như Infura hoặc Alchemy — tiện lợi nhưng là trusted third party với rủi ro centralization đã từng xảy ra thực tế. Self-hosted node hoặc decentralized RPC network là giải pháp sovereign hơn.
IRPC Node là gì?
RPC (Remote Procedure Call) Node là một Full Node chạy thêm RPC server — một API endpoint cho phép ứng dụng bên ngoài (dApp, wallet, script) gửi request để đọc data từ blockchain hoặc broadcast transaction.
Khi bạn dùng MetaMask kiểm tra balance ETH, swap token trên Uniswap, hoặc mint NFT — tất cả đi qua RPC Node. MetaMask mặc định dùng Infura RPC, Uniswap dùng nhiều provider kết hợp. Không có RPC Node, frontend web3 không thể kết nối blockchain.
IIJSON-RPC Protocol
Ethereum node giao tiếp qua JSON-RPC 2.0 — giao thức request/response đơn giản dùng JSON. Client gửi JSON object với method và params, node trả về JSON response. Mọi Ethereum client (Geth, Nethermind, Besu) đều implement cùng một JSON-RPC spec chuẩn.
Các method JSON-RPC phổ biến
| Method | Chức năng |
|---|---|
| eth_getBalance | Lấy balance ETH của address |
| eth_call | Simulate smart contract call (read-only) |
| eth_sendRawTransaction | Broadcast signed transaction |
| eth_getTransactionReceipt | Lấy receipt của transaction đã confirmed |
| eth_getLogs | Query event logs của contract |
| eth_blockNumber | Lấy block number hiện tại |
| eth_getCode | Lấy bytecode của smart contract |
Ngoài HTTP, RPC Node còn hỗ trợ WebSocket — cho phép subscribe real-time event như new block, pending transaction, contract event. WebSocket dùng cho dApp cần cập nhật live mà không cần polling.
IIITại sao cần RPC Node?
Browser và mobile app không thể chạy Full Node trực tiếp vì quá tốn tài nguyên (500GB+ storage, sync vài ngày). RPC Node giải quyết vấn đề này: developer chạy một Full Node tập trung, expose API — nhiều ứng dụng cùng dùng chung.
RPC Node trong Web3 Stack
- Frontend dApp (React, Next.js) → gọi ethers.js / viem → kết nối RPC endpoint → query Full Node → đọc blockchain state
- MetaMask → dùng Infura RPC để broadcast transaction và kiểm tra balance
- Hardhat/Foundry (developer tools) → fork mainnet qua RPC để test locally
Không có RPC endpoint, toàn bộ web3 ecosystem sẽ dừng lại. Đây là lý do RPC infrastructure là layer quan trọng nhưng thường bị bỏ qua trong blockchain architecture.
IVHosted RPC Providers lớn nhất
Infura (ConsenSys)
Lớn nhất và lâu đời nhất — ra mắt 2016, là provider mặc định của MetaMask. Phục vụ hàng tỷ request/ngày. Free tier 100K request/ngày, paid plan từ $50/tháng. Hỗ trợ Ethereum, Polygon, Optimism, Arbitrum, Linea.
Alchemy
Được coi là "AWS của Web3" — ngoài RPC cơ bản, Alchemy cung cấp enhanced API như Transfers API (query lịch sử transfer của address), NFT API, Webhooks. Tin tưởng bởi OpenSea, Aave, dYdX. Free tier 300M compute units/tháng.
QuickNode
Tập trung vào tốc độ và multi-chain — hỗ trợ 60+ blockchain. Latency thấp hơn Infura/Alchemy nhờ globally distributed nodes. Phổ biến với MEV bot và high-frequency dApp cần latency thấp nhất.
Ankr, Blast API, GetBlock
Các provider nhỏ hơn với pricing cạnh tranh hơn, phù hợp cho project budget hạn chế hoặc chain ít phổ biến không được Infura/Alchemy hỗ trợ.
VVấn đề tập trung hóa RPC
Ước tính 70%+ Ethereum request đi qua Infura và Alchemy — mức độ tập trung cao đáng lo ngại cho mạng lưới được thiết kế để phi tập trung. Các rủi ro cụ thể:
- Censorship: Provider có thể từ chối serve request từ địa chỉ cụ thể hoặc theo yêu cầu pháp lý
- Data privacy: Provider biết IP của bạn, địa chỉ wallet bạn query, và pattern giao dịch
- Downtime: Infura, Alchemy đã từng có outage ảnh hưởng toàn ecosystem
- Wrong data: Provider có thể trả về data sai mà bạn không verify được (không như Full Node)
VISelf-hosted RPC Node
Chạy Full Node của riêng bạn và expose RPC endpoint — giải pháp trustless và privacy-preserving nhất. Bạn không phụ thuộc bất kỳ provider nào, không ai biết bạn đang query gì.
Clients phổ biến để self-host
- Geth (Go Ethereum): Client phổ biến nhất, battle-tested, cộng đồng lớn
- Nethermind (.NET): Performance cao, tối ưu cho validator và dApp
- Besu (Java): Enterprise-grade, phổ biến trong private blockchain
- Reth (Rust): Client mới nhất, tốc độ sync nhanh hơn, đang được adopt nhanh
Chi phí tự chạy Ethereum Full Node với RPC: VPS ~$50–100/tháng (4 CPU, 16GB RAM, 1TB NVMe SSD). Nhiều validator tự chạy RPC cho bản thân và chia sẻ với cộng đồng.
VIIDecentralized RPC Networks
Giải pháp trung gian giữa self-hosted và trusted centralized provider: mạng lưới node operators phân tán, không có single entity kiểm soát.
- Pocket Network (POKT): Marketplace phi tập trung cho RPC — node operator stake POKT token, serve request, nhận reward. Hàng nghìn independent node operators trên toàn cầu.
- Lava Network: Modular RPC marketplace mới hơn, hỗ trợ nhiều chain, cơ chế incentive linh hoạt hơn POKT.
- dRPC: Provider phi tập trung tập hợp nhiều independent RPC providers, load balance tự động.
VIIIChọn RPC Provider phù hợp
| Use case | Khuyến nghị | Lý do |
|---|---|---|
| Học tập / prototype | Infura hoặc Alchemy free tier | Nhanh, dễ setup, free |
| Production dApp | Multi-provider (Alchemy + QuickNode) | Redundancy, không single point of failure |
| Validator node | Self-hosted Full Node | Trustless, không phụ thuộc bên ngoài |
| MEV bot / latency | QuickNode hoặc self-hosted gần beacon | Latency thấp nhất |
| Maximum privacy | Self-hosted hoặc Pocket Network | Không log IP, không censor |
| Archive queries | Alchemy hoặc self-hosted Archive Node | Historical state cần Archive |
Xem thêm về các loại node tại Full Node vs Light Node và Archive Node là gì.
❓Câu Hỏi Thường Gặp
RPC Node là Full Node chạy thêm RPC server, cho phép dApp và wallet giao tiếp với blockchain qua JSON-RPC API. Thay vì tự chạy node, hầu hết developer dùng hosted service như Infura hoặc Alchemy — tiện lợi nhưng là trusted third party.
Infura tiện lợi nhưng là trusted third party — có thể censor transaction, trả data sai, hoặc bị outage (đã xảy ra 2020). Production dApp nên dùng nhiều RPC provider để tăng redundancy. Với privacy tối đa, tự chạy Full Node là tốt nhất.
JSON-RPC là giao thức giao tiếp giữa client (dApp/wallet) và Ethereum node. Client gửi JSON request với method và params, node trả về JSON response. Ví dụ: eth_getBalance, eth_sendRawTransaction, eth_call. Mọi Ethereum client đều implement cùng spec chuẩn.
HTTP RPC là request/response một chiều — client hỏi, node trả lời. WebSocket là kết nối hai chiều persistent — node có thể chủ động push event (new block, pending transaction, contract event) đến client mà không cần client polling. WebSocket phù hợp cho dApp cần real-time update.
📚Tài liệu tham khảo
- Ethereum Foundation. JSON-RPC API. ethereum.org/en/developers/docs/apis/json-rpc/
- Infura. Infura Documentation. docs.infura.io
- Alchemy. Alchemy Docs — Enhanced APIs. docs.alchemy.com
- Pocket Network. Decentralized RPC protocol. pokt.network