# 如何選擇 RPC 供應商

> Source: https://docs.blockvectra.com/zh-hant/guides/choose-rpc-provider/

依完成實際任務的成本與可靠性選擇 RPC 供應商：先驗證鏈、方法與歷史涵蓋範圍，再測量查詢次數、吞吐量與復原。

寫下你的應用程式或 AI Agent 所需的鏈、方法、固定區塊、每日流量分布、尖峰並行數，以及通知或資料集相依性。以下 BlockVectra 公開數值來自 [GET /v1/plans](https://console-api.blockvectra.com/v1/plans) 與 [GET /v1/chains](https://api.blockvectra.com/v1/chains)；做出決定前請重新取得。資料涵蓋範圍來自 [GET /v1/status](https://api.blockvectra.com/v1/status)。宣告值是測試的起點，不是延遲量測或 SLA。

## 方法價格與計費單位

單看請求次數無法為工作負載定價。記錄每個方法的計費權重、換算為美元的匯率、包含的額度、超額費用，以及任何訂閱或加購費用。在比較供應商之前，額度、CU 與請求單位需要各自的換算。

BlockVectra 目前的方法權重與標價會在頁面建置時從公開方案端點讀取：

**目前換算基準參數**

1 USD = 10,000 計費單位，1 計費單位 = 1,000 CU（即 1 USD = 10,000,000 CU）。

**換算公式**: 單次呼叫 CU 權重 × 1,000,000 ÷ (10,000 × 1,000) 美元。

| 方法 | 單次呼叫 CU | 每百萬次呼叫價格（USD） |
| --- | --- | --- |
| `eth_blockNumber` | 1 | $0.10 |
| `eth_call` | 15 | $1.50 |
| `eth_getLogs` | 30 | $3.00 |
| `debug_traceTransaction` | 100 | $10.00 |
| `data.block` | 5 | $0.50 |

```text
workload_cu = sum(calls_for_method × current_method_cu_weight)
cu_per_usd = pricing.units_per_usd × pricing.cu_per_unit
list_cost_usd = workload_cu / cu_per_usd
paid_compute_usd = max(0, workload_cu − available_free_cu) / cu_per_usd
```

標價不含免費額度、gas、加購項目與遷移工作。區分週期性額度與會到期的試用額度，以及額外額度價格與包含請求的平均成本。哪些回應會消耗 CU，請參閱[計費規則](https://docs.blockvectra.com/en/guides/billing-rules/)。

<strong>自我測試：</strong>以固定區塊重放一組小型且具代表性的方法組合，記錄成功呼叫、重試與可計費錯誤。比較帳戶的用量變化與方法權重計算。為回傳完整結果的請求數編列預算，包含分頁與回填。換算方式請參閱[讀懂 CU 計價](https://docs.blockvectra.com/en/guides/reading-cu-pricing/)。

## 日誌範圍與歷史狀態

對於 `eth_getLogs`，請檢查特定鏈與方案的區塊跨度、結果大小限制與篩選支援。寬跨度只有在回應完整時才有用。BlockVectra 的認證跨度來自鏈目錄：

| 鏈 | 鏈識別碼 | max_logs_block_range（區塊數） |
| --- | --- | --- |
| Arbitrum One | `arb_mainnet` | 1,000 |
| Base | `base_mainnet` | 1,000 |
| BNB Smart Chain | `bsc_mainnet` | 1,000 |
| Ethereum | `eth_mainnet` | 1,000 |
| Ethereum Sepolia | `eth_sepolia` | 1,000 |
| HyperEVM | `hyperevm_mainnet` | 1,000 |
| Polygon | `polygon_mainnet` | 1,000 |
| Robinhood Chain | `robinhood_mainnet` | 1,000 |
| Robinhood Chain Testnet | `robinhood_testnet` | 1,000 |

歷史日誌與歷史合約執行是不同的能力。對於 `eth_call`，請讀取 `state_window_blocks`；免 key 讀取另請讀取 `public.history_blocks`。欄位缺失或為 null 表示未指定，並不代表歷史無限。請參閱[歷史 EVM 狀態](https://docs.blockvectra.com/en/guides/evm-historical-state/)。

<strong>自我測試：</strong>選擇一個具有已知合約與 topics 的固定區間，依宣告的範圍切分，並將結果聯集與較小的重疊查詢比較。按區塊雜湊、交易雜湊與日誌索引去重，並檢查區間邊界。另外在近期固定區塊與應用程式所需的最舊區塊分別讀取同一個合約；記錄實際結果或 JSON-RPC 錯誤。測試密集與稀疏區間並計算重試次數。依照[日誌範圍與復原](https://docs.blockvectra.com/en/guides/getlogs-block-range/)建立進度檢查點。

## 免費額度、速率限制與尖峰流量

BlockVectra 目前的週期額度與其可涵蓋的呼叫數，由方案計算：

免費方案需要註冊帳戶並使用 API key 存取，同一帳戶下所有 key 共享平均每秒 25 次呼叫（允許短時突發）；每個 30 天週期結束時，餘額低於 30,000,000 CU 的補足到 30,000,000 CU。

| 方法名 | CU 權重 | 單週期約可呼叫次數 | 約每天 | 標價每百萬次 |
| --- | --- | --- | --- | --- |
| `eth_blockNumber` | 1 | 30,000,000 | 1,000,000 | $0.10 |
| `eth_getBlockByNumber` | 5 | 6,000,000 | 200,000 | $0.50 |
| `eth_getBalance` | 10 | 3,000,000 | 100,000 | $1.00 |
| `eth_call` | 15 | 2,000,000 | 66,666 | $1.50 |
| `eth_getLogs` | 30 | 1,000,000 | 33,333 | $3.00 |
| `debug_traceTransaction` | 100 | 300,000 | 10,000 | $10.00 |
| `data.block` | 5 | 6,000,000 | 200,000 | $0.50 |
| `data.address_balances` | 25 | 1,200,000 | 40,000 | $2.50 |
| `data.dex_prices` | 15 | 2,000,000 | 66,666 | $1.50 |
| `data.transaction_trace` | 200 | 150,000 | 5,000 | $20.00 |

免費帳戶呼叫上限：上限 25 次/秒，帳戶內所有 key、所有鏈和 Data API 共享。 每把 key 另有 `cu_per_sec` 與 `burst_cu` 限制。符合條件的週期補充會將免費餘額補至其目標值；這不是額外的一次全額發放。首次付費儲值後會停止週期補充，同時保留剩餘的免費 CU。請參閱[免費方案規則](https://docs.blockvectra.com/en/guides/free-plan/)。

請將每日配額、週期餘額、每秒請求數、每秒 CU、突發容量與並行請求分開看待。付費購買更多用量本身不會建立更高的每把 key 吞吐量。

<strong>自我測試：</strong>使用認證 key，在帳戶限制內，以你的任務所需的節奏與並行度執行一個小型有界批次。記錄 HTTP 狀態、JSON-RPC 錯誤、延遲百分位數與完成的呼叫。在配額耗盡時停止；對節流使用有界退避並持久化進度。以混合方法樣本重複執行，因為高成本方法會消耗更多每秒 CU 預算。比較突發與穩定流量，並在檢查共用帳戶上限時納入其他 key 的用量。

## 鏈、方法與協定涵蓋範圍

使用[鏈目錄](https://api.blockvectra.com/v1/chains)檢查網路身分、`jsonrpc`、`methods.allow`、`methods.deny`、`public.methods`、`ws` 與 `subscriptions`。鏈名本身不代表每個方法或協定都可用。免 key 方法與認證方法可能有不同的限制。

<strong>自我測試：</strong>複製所選網路的 `public.url`，並呼叫 `public.methods` 中的一個方法。以下以太坊範例請檢查網路 ID，再以認證 key 與相同的固定區塊執行應用程式所需的方法。除了 allow 規則，也要檢查 deny 規則；跨端點比較結果時，請比較區塊雜湊。

```bash
curl --fail-with-body -sS --max-time 15 https://api.blockvectra.com/v1/eth_mainnet/public \
  -H 'Content-Type: application/json' \
  -H 'User-Agent: curl BlockVectraQA/1' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
```

這檢查的是公開方法，不是 archive 涵蓋範圍或認證容量。如果你的應用程式需要 socket，請在宣告支援 `ws` 的網路上測試所需的訂閱、斷線與恢復路徑。請參閱 [WebSocket 訂閱](https://docs.blockvectra.com/en/guides/websocket-subscriptions/)。

## Push 送達與已索引資料

對於地址通知，請檢查鏈的 `push` 宣告及其確認數設定。BlockVectra 可以在一個訂閱中，用同一個 HTTPS 接收端，跨支援鏈關注同一組地址；請對照你的地址數量檢查[自助與企業容量](https://docs.blockvectra.com/en/guides/webhook-push/#address-capacity)。對於 Data API 查詢，請在 [GET /v1/status](https://api.blockvectra.com/v1/status) 中檢查資料集與已索引範圍。已索引記錄不代表可任意執行歷史合約。RPC 輪詢、WebSocket 訊息、已送達的 Push 事件與關注地址日使用不同的計費計量單位；請從[方案](https://console-api.blockvectra.com/v1/plans)中適用的權重計算每個所需工作流。

<strong>自我測試：</strong>對於 Push，使用你控制的 HTTPS 接收端、驗證簽章，並用你控制的地址所發出的事件測試重複處理、重試與重放。對於 Data API，查詢一筆已知的已索引交易或轉帳，將其區塊雜湊與 RPC 比較，翻完分頁，並在恢復前儲存游標。記錄涵蓋範圍缺口與可計費事件或呼叫的數量。使用 [Webhook Push](https://docs.blockvectra.com/en/guides/webhook-push/)、[Webhook 與 WebSocket 比較](https://docs.blockvectra.com/en/guides/webhook-vs-websocket/) 與 [Data API 參考](https://docs.blockvectra.com/en/api/data/) 選擇適當的復原路徑。

## 認證與 Agent 存取

檢查你的用戶端是否能安全提供 key、探索機器可讀文件、建立帳戶並從錯誤中復原。BlockVectra RPC 在 `POST /v1/{chain}/{api_key}` 接受路徑 key，或在 `POST /v1/{chain}` 接受 `x-api-key` 標頭。Data API 使用 `x-api-key`。將 key 保存在伺服器環境中，遠離瀏覽器 bundle、日誌與聊天訊息。

開發者與 AI Agent 使用相同的定價與限制。[程式化建立帳戶](https://docs.blockvectra.com/en/guides/programmatic-signup/)說明以錢包為基礎的帳戶建立，而 [Agent 指南](https://docs.blockvectra.com/en/guides/ai-agents/)提供文件與 MCP 進入點。Agent 可以透過[文件化的儲值流程](https://docs.blockvectra.com/en/guides/agent-topup/)，用穩定幣為帳戶使用餘額加值，無需每月 RPC 訂閱。儲值網路、代幣與最低金額來自 [GET /v1/topup/status](https://api.blockvectra.com/v1/topup/status)。

<strong>自我測試：</strong>讓預定的用戶端探索鏈與方法、閱讀文件、從其環境載入 key，並執行一個有界認證請求。檢查 HTTP 狀態與 JSON-RPC `error`。檢查缺少 key 的回應，且不要記錄憑證。確認用戶端在餘額不足時儲存進度、讀取已啟用的儲值網路與代幣，並依照文件化的儲值流程；帳戶建立與付款步驟應使用你控制的帳戶。不要把文件 MCP 連線視為 Agent 能執行認證 RPC 呼叫的證明。

## 記錄決策

保留一份簡短的結果表：來源與取樣日期；鏈與方法；固定區塊雜湊；結果完整性；總呼叫數與重試數；可用配額；付費任務成本；延遲與節流；歷史與協定缺口；復原步驟；遷移工作量。如果工作負載需要合約支援或 SLA，請另外取得適用條款，而非僅依賴這些 API 測試。

定義好工作負載後，請與特定供應商比較：

* [與特定供應商比較：運算定價與日誌範圍](https://docs.blockvectra.com/en/guides/alchemy-alternative/)。
* [與特定供應商比較：試用與訂閱計費](https://docs.blockvectra.com/en/guides/quicknode-alternative/)。
* [與特定供應商比較：HTTPS 請求成本](https://docs.blockvectra.com/en/guides/ankr-alternative/)。
* [與特定供應商比較：每日與週期預算](https://docs.blockvectra.com/en/guides/infura-alternative/)。
* [與特定供應商比較：包含請求與超額](https://docs.blockvectra.com/en/guides/chainstack-alternative/)。
