🤖 最新推出:《Quicknode 人工智慧實戰手冊》 10 個經過實測的 AI 程式設計食譜agents 。
查看食譜 RPC 請求如何運作:區塊鏈節點指南 |Quicknode
我們的電子報內容豐富,包含免費資源、Quicknode 最新動態、Web3 洞見等。
CLI、Admin API 、MCP、SDK ,以及適用於 75 條以上區塊鏈的 AI 原生工具。由開發者打造,為開發者而生。
涵蓋 Python、Ruby 及 JavaScript 的最新程式碼範例。關於智慧合約、NFT 及去中心化應用程式(dApps)的深入指南。
已通過 SOC 2 Type II 認證 · ISO 27001
答案 > 了解 RPC 與 API > RPC 請求是如何運作的? // Tags
RPC 請求 JSON-RPC 區塊鏈 API 呼叫
簡而言之:RPC (遠端程序呼叫)請求是 應用程式與區塊鏈節點進行通訊的方式。您的應用程式會向 RPCendpoint 發送一則 JSON 格式的訊息,其中指定要呼叫的方法以及需包含的參數。節點會處理該請求,根據區塊鏈的狀態執行相應的邏輯,並回傳包含結果的 JSON 回應。每次錢包餘額查詢、交易提交以及智慧合約互動,皆遵循此請求-回應模式。
簡單的解釋 當您在加密貨幣錢包中點擊「傳送」,或在資產組合追蹤工具上查看代幣餘額時,您的應用程式並無法直接存取區塊鏈。它需要向節點查詢相關資訊。用來進行查詢的語言稱為 JSON-RPC,這是一種輕量級協定,會將請求與回應以簡單的 JSON 物件形式進行結構化。
以下是對話的運作方式。您的應用程式會建立一個包含四個欄位的請求物件:JSON-RPC 版本(始終為「2.0」)、用於告知節點應執行何種操作的方法名稱、為該操作提供背景資訊的參數陣列,以及一個唯一識別碼,以便您的應用程式能將回應與請求配對。它會將此物件以 HTTP POST 方式傳送至 RPC 網址endpoint 。 節點接收請求後,會查詢或計算答案,並傳回一個包含相同 ID 的回應物件,其中包含「result」欄位(若成功)或「error」欄位(若發生錯誤)。
舉例來說,若要查詢某個錢包地址的 ETH 餘額,您的應用程式會傳送一個使用「eth_getBalance」方法的請求,並附帶兩個參數:錢包地址與「latest」(意指最新區塊)。節點會查詢當前狀態,找出與該地址相關的餘額,並以十六進位數值回傳。 接著,您的應用程式會將該十六進位數轉換為人類可讀的數字並顯示出來。若使用效能良好的服務提供者,整個往返過程通常只需數十毫秒。
常見 RPC 方法的解析
每個區塊鏈都定義了一組標準的 RPC 方法,節點必須支援這些方法。在Ethereum 以及與 EVM 相容的鏈上,這些方法遵循「eth_」命名空間規範。 讀取操作會查詢區塊鏈的狀態,但不會修改該狀態。「eth_blockNumber」會傳回最新的區塊高度。「eth_getBalance」會傳回某個帳戶在指定區塊時的原生代幣餘額。「eth_call」會以唯讀模式執行智慧合約函式mode ,這正是您的應用程式在不消耗 Gas 的情況下,檢索代幣餘額、NFT 元資料及 DeFi 協議狀態的方式。
寫入操作會將資料提交至網路,以便納入區塊中。「eth_sendRawTransaction」會將一筆已簽署的交易廣播至記憶池(mempool),由驗證者從中擷取並納入區塊。「eth_estimateGas」會模擬一筆交易以預測其將消耗多少 Gas,協助您的應用程式在傳送前設定適當的 Gas 限制。
訂閱機制可透過 WebSocket 連線實現即時通訊。 您的應用程式無需反覆透過「eth_blockNumber」對節點進行輪詢以偵測新區塊,而是可以傳入「newHeads」參數呼叫「eth_subscribe」函式,節點便會在每個新區塊產生時,主動將其區塊頭推送至您的應用程式。此方式比輪詢更為高效且延遲更低,也是即時去中心化應用程式(dapp)體驗的基礎,例如即時交易動態、事件監聽器以及即時餘額更新。
Solana 採用了一組針對其帳戶式模型進行優化的不同方法。「getBalance」會回傳帳戶的 SOL 餘額。「getTransaction」可根據簽名擷取已確認的交易。「getAccountInfo」則會回傳儲存於帳戶中的資料,在Solana 上,這些資料包含代幣餘額與程式狀態。儘管方法名稱不同,其底層的 JSON-RPC 模式卻完全相同:請求包含方法與參數,回應則包含結果或錯誤。
請求生命週期的幕後運作原理 當您的應用程式發送 RPC 請求時,在收到回應之前會經過多個步驟。首先,HTTP 客戶端會與endpoint 建立 TCP 連線,並執行 TLS 握手以加密通訊通道。接著,它會傳送 JSON 有效載荷。 節點的 RPC 伺服器會解析該請求,驗證方法名稱與參數,並將其路由至適當的處理程序。該處理程序會查詢快取資料、查詢節點的本地資料庫,或執行運算(例如在 EVM 中執行智慧合約呼叫)。一旦結果準備就緒,節點便會將其序列化為 JSON,並透過同一連線傳回。
每個步驟都會增加處理時間。DNS 解析、TCP 握手、TLS 協商、請求序列化、節點處理、回應序列化以及網路傳輸,這些環節都會影響總回應時間。這正是為何應用程式與 RPC 節點之間的地理距離至關重要;為何連線池與 HTTP/2 多工傳輸能提升吞吐量;以及為何在您這端快取常被請求的資料,能減少不必要的往返傳輸。
批次請求是 JSON-RPC 規格的一項功能,可讓您在單一 HTTP 呼叫中傳送多個請求。與其針對五個不同的錢包餘額分別傳送五個獨立請求,您可將這五個請求打包成一個 JSON 陣列,並一併傳送。節點會依序處理每個請求,並回傳一個包含多個回應的陣列。批次處理可減少 HTTP 開銷並提升吞吐量,儘管每個個別請求在節點端所消耗的處理資源仍維持不變。
錯誤處理與最佳實務 當發生錯誤時,RPC 回應會包含標準錯誤代碼。格式不正確的請求會返回解析錯誤;無效的方法名稱則會返回「方法未找到」錯誤。速率限制通常會返回 HTTP 429 狀態碼,或包含代碼 -32005 的 JSON-RPC 錯誤。理解這些錯誤代碼,並在應用程式中妥善處理它們,對於建構可靠的區塊鏈軟體至關重要。
採用指數級退避的重試邏輯,是處理暫時性故障的最佳實務。若請求因網路突發性中斷或節點暫時過載而失敗,您的應用程式應等待一段短時間後再次嘗試,並在每次重試時逐步增加等待時間。此舉可避免您的應用程式不斷向處於負荷過重的節點發送請求,進而使問題惡化。設定合理的超時時間同樣重要,因為一個永遠無法解決的懸掛請求可能會阻塞應用程式的事件迴圈。
選擇適合該任務的 RPC 方法也至關重要。 一個常見的錯誤是,當您的應用程式僅需區塊標頭時,卻將「完整交易」標誌設為 true 來呼叫「eth_getBlockByNumber」。包含完整交易的回應資料量可能大上數個數量級,不僅會消耗更多頻寬,解析時間也會更長。同樣地,若在呼叫「eth_getLogs」時設定過寬的區塊範圍,可能會返回龐大的資料集,導致節點和您的應用程式都不堪負荷。將日誌查詢分頁為較小的區塊範圍,是標準的做法。
HTTP 與 WebSocket RPC 請求之間有何差異? RPC 請求會透過幾種不同的傳輸協定傳送,選擇合適的傳輸協定對延遲和效率有重大影響。HTTP 採用請求-回應模式:您的應用程式會建立連線、發送一個請求、取得一個回應,然後該次通訊即告結束。WebSocket 則會維持單一的持久連線,因此節點可在資料一經產生時,立即將其推送至您的應用程式。gRPC 則為低延遲、高吞吐量的作業負載,新增了一種高效能的二進位通訊協定。
運輸
最適合
連結
即時推播
HTTP (JSON-RPC)
一次性讀寫
依要求新增(可匯集)
不,你必須進行輪詢
WebSocket
訂閱與即時更新
單一持久連線
是的,伺服器會推送資料
gRPC
高吞吐量、低延遲的處理流程
持續性、多工式
是的,串流
如果您的應用程式僅需偶爾讀取資料,使用純 HTTP 是最簡單的。若您需要即時區塊鏈事件,使用 WebSocket 訂閱比反覆呼叫節點來得更好。若要更深入了解節點所提供的連線類型,請參閱「RPCendpoint 」的說明 ;至於反覆查詢與訂閱之間的權衡,請參閱「輪詢 vs 串流 」。
為什麼 RPC 請求會失敗或超時? 大多數 RPC 錯誤可歸類為幾種情況。當您超過請求配額時,速率限制會返回 HTTP 429 或 JSON-RPC 錯誤碼 -32005,因此請暫停並稍後重試,而非立即重試。當節點正在重新啟動、同步或過載時,會返回 502 或 503 錯誤。過大的查詢,例如 eth_getLogs 橫跨數百萬個區塊的呼叫,可能會因節點無法及時組裝回應而超時。理解 RPC 速率限制 並將您的服務供應商與強大的 節點可靠性 這些做法使得此類故障極為罕見,且可恢復。
該如何加快 RPC 請求的速度? RPC 延遲是網路傳輸時間與節點處理時間的總和,這兩者皆可控。請將請求路由至地理位置上靠近使用者的節點,透過連接池與 HTTP/2 多工技術重複利用連接,將相關呼叫批次化為單一請求,並快取在區塊之間不會變更的資料。 選擇最精簡的方法也有助於提升效能:當您僅需區塊標頭時,應請求區塊標頭而非完整交易。如需了解導致請求變慢的詳細因素,請參閱「驅動 RPC 延遲的因素」 ;或者,您也可以完全跳過調校步驟,直接使用全球分佈式的Quicknode Core API 。
何時應該使用 RPC 來取代索引或串流? RPC 是進行點查詢和寫入操作的理想工具:例如查詢單筆餘額、讀取單一合約值,或是廣播一筆交易。但當您需要處理大型歷史資料集或彙總視圖時,RPC 便會變得效率低下,因為從原始 RPC 呼叫中重建這些資料不僅速度緩慢,且會產生大量請求。對於分析性查詢,帶有索引的資料集效率遠高於 RPC;而對於持續性的即時資料,串流技術則能完全消除請求-回應的開銷。 請參閱《RPC 與索引比較 》,以了解如何在即時呼叫與預先準備的資料集之間做出選擇。
Quicknode 如何優化 RPC 請求 Quicknode Quicknode 的核心 API 旨在讓每項 RPC 請求盡可能快速且可靠。該平台的全球分散式基礎架構會將每項請求導向最近的可用節點,從而將網路傳輸時間降至最低。憑藉平均比競爭對手快 2.5 倍的回應時間,以及 99.99% 的正常運作時間 SLA, 確保您的應用程式無論流量多寡,都能快速且穩定地完成 RPC 呼叫。
除了標準的 JSON-RPC 之外,Quicknode 還提供增強型 API 方法,可減少您的應用程式所需發出的請求次數。無需透過呼叫多個標準方法來重建錢包的完整代幣持有狀況,只需一次增強型 API 呼叫,即可在單一回應中返回所有資料。Quicknode Streams 更進一步地,針對即時資料,Quicknode 完全摒棄了請求-回應模式,在區塊鏈事件發生時,直接將其推送至您的應用程式或資料庫。對於希望優化 RPC 使用效率的開發者, 發布了一份詳盡的指南,內容涵蓋分頁、快取、錯誤處理以及方法選擇的最佳實務,以協助您進行高效的 RPC 呼叫。
常見問題
在區塊鏈中,RPC 代表什麼? RPC 代表「遠端程序呼叫」(Remote Procedure Call)。這是一種模式,讓您的應用程式呼叫在遠端機器(在此情況下為區塊鏈節點)上執行的函式,其運作方式就如同呼叫本機函式一般。該節點會根據區塊鏈的狀態執行該程序,並回傳結果。
什麼是 JSON-RPC? JSON-RPC 是大多數區塊鏈用於 RPC 的輕量級協定。請求與回應皆為純文字 JSON 物件。請求會指定方法及其參數,而回應則包含結果或錯誤訊息,並透過共用 ID 與請求進行對應。
RPC 請求與 API 呼叫是一樣的嗎? 這是一種特定類型的 API 呼叫。一般的 REST API 會透過不同的 URL 提供資源,而區塊鏈 RPC API 則會透過單一的endpoint URL 提供方法,並透過請求正文中的方法名稱來選擇要執行的操作。其來回的請求-回應機制與一般 REST API 相同。
一個 RPC 請求需要多久時間? 針對附近一個資源充足的節點進行簡單的讀取操作,通常在數十毫秒內即可完成。較耗資源的呼叫(例如廣泛的日誌查詢或完整區塊擷取)則會花費較長時間,因為節點在回應之前需要彙整並序列化更多資料。
RPC 節點與 RPCendpoint 之間有何區別? RPC 節點是指儲存區塊鏈資料並執行請求的運行中伺服器。RPC 網址(endpoint )則是您的應用程式用來發送請求的網址,該網址會將請求轉發至其後方的一個或多個節點。請參閱「何謂區塊鏈節點」 以了解其底層基礎架構。
延伸閱讀 // Tags
RPC 請求 JSON-RPC 區塊鏈 API 呼叫
// Publisher
Quicknode
更新於 2026 年 6 月 3 日
2026年2月3日 — 閱讀時間 10 分鐘