# 选择 BlockVectra 作为 Infura 替代方案：周期额度与按量计费

> 原文地址: https://docs.blockvectra.com/zh/guides/infura-alternative/

选择 BlockVectra，可用周期 CU 余额安排集中的受支持读取任务，额外读取按量支付，无需 RPC 月订阅。

## 对比

对方数字核实日期为 **2026-10-08**。BlockVectra 当前数字由下方读取公开接口的表格展示。

| 指标                            | Infura                                      | BlockVectra               | 出处                                                                                                                                                                                                                              |
| ----------------------------- | ------------------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 仅调用 Ethereum `eth_call` 的免费预算 | 每日 3M credits ÷ 每次 80 credits = 每日 37,500 次 | 当前周期调用数见下方免费计划表；须在剩余余额内使用 | [每日额度](https://docs.infura.io/get-started/pricing/)、[方法 credits](https://docs.infura.io/get-started/pricing/credit-cost/)、[plans](https://console-api.blockvectra.com/v1/plans)、[chains](https://api.blockvectra.com/v1/chains) |
| 标准付费 RPC 订阅                   | Developer $50/月，包含每日 15M credits            | 按量计费，无需 RPC 月订阅           | [套餐价格](https://www.infura.io/pricing)、[plans](https://console-api.blockvectra.com/v1/plans)、[chains](https://api.blockvectra.com/v1/chains)                                                                                     |

免费预算行比较额度的使用时间，不表示月度额度相同，也不是实测速率。集中任务须有足够的 BlockVectra 剩余 CU，并符合账户和 key 限额。不从 Infura 订阅费用推导每 credit 超额价。

## 为什么选择 BlockVectra

### 方法单价与免费账户预算

下方方法权重、美元换算与免费账户预算来自 [GET /v1/plans](https://console-api.blockvectra.com/v1/plans)，链限制来自 [GET /v1/chains](https://api.blockvectra.com/v1/chains)。比较同一链、方法、块高与完整结果；分片和重试会改变调用数。

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

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 |

免费套餐需要注册账户并使用 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 的 `key_defaults.cu_per_sec` 与 `burst_cu` 也适用。符合条件的周期补充将免费余额补到目标，而非额外叠加完整额度。首次付费充值后停止周期补充，剩余免费 CU 仍可使用。参考[免费计划规则](https://docs.blockvectra.com/zh/guides/free-plan/)。

### 为集中任务安排周期余额

假设某天需要完成 50,000 次 Ethereum `eth_call`，Infura 消耗 `50,000 × 80 = 4M credits`，超过每日 3M 免费额度。BlockVectra 则用相同调用数乘以当前 `eth_call` 权重，并核对上方周期预算及实际剩余余额。执行前确认所需块高与调用节奏。

### 免 key 试用与 Agent 程序化充值

开户前，可在链目录的 `public.url` 上试用列入 `public.methods` 的方法。需要认证访问时，Agent 可通过[程序化开户](https://docs.blockvectra.com/zh/guides/programmatic-signup/)以钱包签名创建账户与 key，再按 [Agent 充值流程](https://docs.blockvectra.com/zh/guides/agent-topup/)用稳定币为同一用量余额充值。网络、币种与起充额读取[充值状态](https://api.blockvectra.com/v1/topup/status)。开发者与 AI Agent 使用相同价格和限额。

### 多链地址推送

同一订阅可将一组地址应用到多条受支持的链，并使用一个 HTTPS 接收端，适合钱包活动与收款通知，无需为每条链维护 socket。[自助与企业地址容量](https://docs.blockvectra.com/zh/guides/webhook-push/#地址容量)见推送指南，企业容量可[联系我们开通](https://blockvectra.com/zh/contact/)。地址天数与投递事件独立于 RPC 调用计费，当前价格见[推送计价](https://docs.blockvectra.com/zh/guides/webhook-push/#计费与示例)。

Robinhood Chain 上的 RPC 与 HyperEVM RPC 均已列入[链目录](https://api.blockvectra.com/v1/chains)。按网络核对方法与推送支持，再参考[链专项接入指南](https://docs.blockvectra.com/zh/guides/robinhood-chain/)与 [HyperEVM 回填指南](https://docs.blockvectra.com/zh/guides/hyperevm-backfill/)完成对应任务。

## 迁移步骤

1. **盘点与覆盖：** 列出链、方法、固定块高、日志跨度与订阅依赖。核对[链目录](https://api.blockvectra.com/v1/chains)的 `methods.allow`、`methods.deny`、`public.methods`、`state_window_blocks` 与 `ws`。历史窗口为 null 表示未声明，不代表归档覆盖。免 key 的 `public.url` 冒烟请求只能验证列出的公开方法。
2. **key 与鉴权：** 经[控制台](https://console.blockvectra.com/keys/)或[程序化开户](https://docs.blockvectra.com/zh/guides/programmatic-signup/)取得 BlockVectra key，保存在服务端环境中。RPC 接受 `POST /v1/{chain}/{api_key}`，或以 `x-api-key` 调用 `POST /v1/{chain}`；Data API 使用 `x-api-key`。下方 Ethereum WETH `decimals()` 示例采用请求头：

```bash
if [ -z "$BLOCKVECTRA_API_KEY" ]; then
  echo "Set BLOCKVECTRA_API_KEY in your server environment"
  exit 1
fi

curl --fail-with-body -sS --max-time 15 https://api.blockvectra.com/v1/eth_mainnet \
  -H 'Content-Type: application/json' \
  -H 'User-Agent: curl BlockVectraQA/1' \
  -H "x-api-key: $BLOCKVECTRA_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","data":"0x313ce567"},"latest"]}'
```

3. **切换前回放：** 将 `latest` 换成双方支持的同一固定块高并记录区块哈希。比较返回值与 JSON-RPC `error`，即使 HTTP 200 也要检查。测试代表性日志查询、有界重试、限流恢复与游标续跑。专用 API 和订阅分别迁移，所需结果一致后再转移流量。

## 常见问题

### 方法单价较低是否代表整个任务更便宜？

按 `max(0, sum(调用数 × 方法 CU) − 可用免费 CU) / (pricing.units_per_usd × pricing.cu_per_unit)` 计算。计入分片、重试与任务使用的其他服务。已有包含额度会改变增量费用，应比较完整结果，而非计费单位的名称。

### 更换端点即可完成迁移吗？

对受支持的标准 RPC 方法，更新端点及路径 key 或 `x-api-key` 头，再回放固定块高请求。先核对历史状态与方法覆盖。专用 API、WebSocket 订阅和推送接收端需各自测试迁移路径；参考[历史状态](https://docs.blockvectra.com/zh/guides/evm-historical-state/)与 [Webhook 和 WebSocket](https://docs.blockvectra.com/zh/guides/webhook-vs-websocket/)。

工作负载清单与自测方法见[如何选择 RPC 服务商](https://docs.blockvectra.com/zh/guides/choose-rpc-provider/)。
