# 如何选择 RPC 服务商

> 原文地址: https://docs.blockvectra.com/zh/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。

## 方法单价与计费单位

仅有请求数不能为任务定价。记录每个方法的计费权重、美元换算、包含额度、超额价以及订阅或附加服务费。credits、CU 与请求单位都需按各自规则换算后才能跨服务商比较。

BlockVectra 当前方法权重与标价在构建页面时从公开 plans 接口读取：

**当前换算基准参数**

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、附加服务与迁移工作。区分周期补充额度与到期试用，也要区分额外 credit 单价与包含请求的平均费用。哪些响应消耗 CU，见[计费规则](https://docs.blockvectra.com/zh/guides/billing-rules/)。

**如何自测：** 固定块高，回放少量有代表性的方法组合，记录成功调用、重试与计费错误。将账户用量变化与方法权重计算对照。按取得完整结果所需的请求数预算，包含分页与回填。换算详见 [CU 计价教程](https://docs.blockvectra.com/zh/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/zh/guides/evm-historical-state/)。

**如何自测：** 选定已知合约与 topics 的固定区间，按声明跨度拆分，将结果并集与更小的重叠查询比较。按区块哈希、交易哈希与日志索引去重，检查区间边界。另用同一合约查询近期固定块高以及应用所需的最老块高，记录真实结果或 JSON-RPC 错误。分别测试事件密集与稀疏区间，并记录重试数。按[日志范围与恢复](https://docs.blockvectra.com/zh/guides/getlogs-block-range/)保存进度。

## 免费额度、速率与峰值流量

BlockVectra 当前周期预算及可覆盖调用数由 plans 计算：

免费套餐需要注册账户并使用 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/zh/guides/free-plan/)。

每日配额、周期余额、请求/秒、CU/秒、突发容量与并发请求数需分别记录。付费增加用量本身不能证明每 key 吞吐也会增加。

**如何自测：** 使用认证 key，在账户限额内以任务所需节奏和并发执行少量有界请求。记录 HTTP 状态、JSON-RPC 错误、延迟分位数与完成调用数。额度耗尽时停止；限流时有界退避并持久化进度。用混合方法样本再测一次，因为高权重方法会占用更多 CU/秒预算。比较突发与稳定流量，核对共享账户上限时计入其他 key 的使用量。

## 链、方法与协议覆盖

用[链目录](https://api.blockvectra.com/v1/chains)核对网络身份、`jsonrpc`、`methods.allow`、`methods.deny`、`public.methods`、`ws` 与 `subscriptions`。支持一条链不代表支持所有方法或协议。免 key 与认证方法可能有不同限制。

**如何自测：** 复制所选网络的 `public.url`，调用 `public.methods` 中的方法。下方 Ethereum 示例用于检查网络 ID；然后用认证 key 和相同固定块高运行应用必需的方法。除允许规则外，也检查拒绝规则；跨端点对比结果时同时比较区块哈希。

```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":[]}'
```

这只验证公开方法，不证明归档覆盖或认证容量。应用需要 socket 时，应在声明支持 `ws` 的网络实测所需订阅、断线与续跑路径。参考 [WebSocket 订阅](https://docs.blockvectra.com/zh/guides/websocket-subscriptions/)。

## 推送投递与索引数据

地址通知应检查链的 `push` 声明与确认设置。BlockVectra 可在同一订阅中将同一组地址应用到多条受支持的链，并使用一个 HTTPS 接收端；按地址数量核对[自助与企业容量](https://docs.blockvectra.com/zh/guides/webhook-push/#地址容量)。Data API 查询应核对 [GET /v1/status](https://api.blockvectra.com/v1/status) 的数据集与已索引范围。索引记录不代表任意历史合约执行。RPC 轮询、WebSocket 消息、已投递 Push 事件与监听地址天数采用不同计费口径；按 [plans](https://console-api.blockvectra.com/v1/plans) 中适用权重分别计算所需工作流。

**如何自测：** Push 使用自己控制的 HTTPS 接收端，验证签名，并用自己控制地址的事件测试去重、重试与回放。Data API 查询已知的已索引交易或转账，将区块哈希与 RPC 对照，遍历全部分页，保存游标再续跑。记录覆盖缺口以及计费事件或调用数。按 [Webhook Push](https://docs.blockvectra.com/zh/guides/webhook-push/)、[Webhook 与 WebSocket](https://docs.blockvectra.com/zh/guides/webhook-vs-websocket/)及 [Data API 参考](https://docs.blockvectra.com/zh/api/data/)选择恢复路径。

## 鉴权与 Agent 接入

核对客户端能否安全携带 key、发现机器可读文档、创建账户并从错误中恢复。BlockVectra RPC 支持路径 key：`POST /v1/{chain}/{api_key}`，或以 `x-api-key` 头调用 `POST /v1/{chain}`。Data API 使用 `x-api-key`。key 保存在服务端环境中，不放进浏览器产物、日志或聊天消息。

开发者与 AI Agent 使用相同价格和限额。[程序化开户](https://docs.blockvectra.com/zh/guides/programmatic-signup/)介绍基于钱包的账户创建，[Agent 指南](https://docs.blockvectra.com/zh/guides/ai-agents/)提供文档与 MCP 入口。Agent 可按[文档中的充值流程](https://docs.blockvectra.com/zh/guides/agent-topup/)用稳定币为账户用量余额充值，无需 RPC 月订阅。充值网络、币种与起充额来自 [GET /v1/topup/status](https://api.blockvectra.com/v1/topup/status)。

**如何自测：** 让目标客户端发现链与方法、读取文档、从环境加载 key，再执行一次有界认证请求。同时检查 HTTP 状态与 JSON-RPC `error`，在不记录凭据的前提下检查缺少 key 的响应。验证余额不足时保存进度，读取已启用的充值网络与币种，并按文档执行充值流程；开户与支付步骤使用自己控制的账户。连通文档 MCP 不能证明 Agent 已能执行认证 RPC 请求。

## 记录选型结果

保留一份简短结果表：来源与采样日期、链与方法、固定区块哈希、结果完整性、调用与重试总数、可用额度、付费任务费用、延迟与限流、历史与协议缺口、恢复步骤、迁移工作量。工作负载需要合同支持或 SLA 时，应在 API 测试之外取得适用条款。

明确工作负载后，可比较具体服务商：

* [比较具体服务商：计算单价与日志范围](https://docs.blockvectra.com/zh/guides/alchemy-alternative/)。
* [比较具体服务商：试用与订阅计费](https://docs.blockvectra.com/zh/guides/quicknode-alternative/)。
* [比较具体服务商：HTTPS 请求费用](https://docs.blockvectra.com/zh/guides/ankr-alternative/)。
* [比较具体服务商：每日与周期预算](https://docs.blockvectra.com/zh/guides/infura-alternative/)。
* [比较具体服务商：包含量与超额费用](https://docs.blockvectra.com/zh/guides/chainstack-alternative/)。
