# 在 Base 上使用 BlockVectra

> 原文地址: https://docs.blockvectra.com/zh/guides/base/

BlockVectra 提供 Base 主网的 JSON-RPC 访问，通过统一的 API 端点为开发者提供服务。

## 链信息与端点

针对 Base 的每次请求均通过 URL 路径中的 `base_mainnet` 标识目标链。JSON-RPC 同时支持在 URL 路径中携带 Key 以及在请求头中传入 `x-api-key` 两种鉴权写法。

以下参数与端点来自当前网络数据：

| 参数 / 端点 | 取值 / 模板 | 鉴权方式 |
|---|---|---|
| Chain ID（EIP-155） | `8453` | 无需鉴权（公开） |
| JSON-RPC（路径携带 Key） | `POST https://api.blockvectra.com/v1/base_mainnet/{api_key}` | URL 路径中传入 API key |
| JSON-RPC（请求头携带 Key） | `POST https://api.blockvectra.com/v1/base_mainnet` | 传入 x-api-key: {api_key} 请求头 |
| Data API 基址 | `GET https://api.blockvectra.com/v1/data/base_mainnet/…` | 传入 x-api-key: {api_key} 请求头 |
| 公开状态端点 | `GET https://api.blockvectra.com/v1/status` | 无需鉴权（公开） |

## 直接运行的 curl 与 viem 示例

可以使用 curl 或 viem 等客户端直接发起 JSON-RPC 调用。请在环境变量 `BLOCKVECTRA_API_KEY` 中配置你的 API key：

**curl（请求头鉴权）**

通过 `x-api-key` 请求头查询 EIP-155 链 ID：

```bash
curl -s "https://api.blockvectra.com/v1/base_mainnet" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
```


  **curl（路径鉴权）**

在 URL 路径中携带 API key 查询最新区块高度：

```bash
curl -s "https://api.blockvectra.com/v1/base_mainnet/$BLOCKVECTRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
```


  **TypeScript (viem)**

使用 viem 的 `createPublicClient` 与官方 `base` 链定义连接：

```ts
import { createPublicClient, http } from "viem";
import { base } from "viem/chains";

const client = createPublicClient({
  chain: base,
  transport: http("https://api.blockvectra.com/v1/base_mainnet", {
    fetchOptions: {
      headers: {
        "x-api-key": process.env.BLOCKVECTRA_API_KEY!,
      },
    },
  }),
});

const blockNumber = await client.getBlockNumber();
console.log("Base 当前区块高度:", blockNumber);
```

也可以直接在 URL 路径中携带 API key：

```ts
const client = createPublicClient({
  chain: base,
  transport: http(`https://api.blockvectra.com/v1/base_mainnet/${process.env.BLOCKVECTRA_API_KEY}`),
});
```


### 响应结构说明

接口响应严格遵循 JSON-RPC 2.0 规范：

* **成功响应**：返回包含 `jsonrpc: "2.0"`、对应请求整数 `id` 以及十六进制编码字符串 `result` 的对象（`eth_chainId` 返回十六进制链 ID；`eth_blockNumber` 返回最新区块高度）。
* **未开放方法**：请求未开放的方法返回 JSON-RPC 错误码 `-32601`（`method not available`，不计费）。
* **超出状态窗口**：查询超出历史状态保留窗口的区块返回 JSON-RPC 错误码 `-32011`（不计费）。
* **缺失 API Key**：未提供 API key 时返回 HTTP 401 与 JSON-RPC 错误码 `-32024`（`missing_api_key`，不计费）。
* **参数错误**：请求参数格式不符合要求返回 JSON-RPC 错误码 `-32602`（不计费）。

## 支持情况与方法策略

Base 上可用的 JSON-RPC 方法、日志区块跨度上限以及历史状态保留窗口通过 `GET /v1/chains` 动态发布：

### 网络参数与调用限制

- **eth_getLogs 单次区块跨度**: 单次最多 1000 个区块
- **历史状态窗口**: 最近 10000 个区块（超出窗口返回 -32011）
- **执行追踪（debug_trace*）**: 暂不支持

### 允许的方法列表（methods.allow）

- `eth_blockNumber`
- `eth_chainId`
- `eth_gasPrice`
- `eth_maxPriorityFeePerGas`
- `eth_blobBaseFee`
- `eth_feeHistory`
- `eth_syncing`
- `eth_getBalance`
- `eth_getCode`
- `eth_getStorageAt`
- `eth_getTransactionCount`
- `eth_call`
- `eth_estimateGas`
- `eth_createAccessList`
- `eth_getProof`
- `eth_simulateV1`
- `eth_getBlockByNumber`
- `eth_getBlockByHash`
- `eth_getBlockReceipts`
- `eth_getBlockTransactionCountByNumber`
- `eth_getBlockTransactionCountByHash`
- `eth_getTransactionByHash`
- `eth_getTransactionReceipt`
- `eth_getTransactionByBlockNumberAndIndex`
- `eth_getTransactionByBlockHashAndIndex`
- `eth_getRawTransactionByHash`
- `eth_getRawTransactionByBlockHashAndIndex`
- `eth_getRawTransactionByBlockNumberAndIndex`
- `eth_getLogs`
- `eth_getUncleCountByBlockNumber`
- `eth_getUncleCountByBlockHash`
- `eth_getUncleByBlockNumberAndIndex`
- `eth_getUncleByBlockHashAndIndex`
- `eth_getHeaderByNumber`
- `eth_getHeaderByHash`
- `eth_sendRawTransaction`
- `net_version`
- `web3_clientVersion`
- `web3_sha3`

### 被拦截的方法列表（methods.deny）

- `eth_newFilter`
- `eth_newBlockFilter`
- `eth_newPendingTransactionFilter`
- `eth_getFilterLogs`
- `eth_getFilterChanges`
- `eth_uninstallFilter`
- `eth_subscribe`
- `eth_unsubscribe`

## 区块链 Data API

Data API 的开放状态由 `GET /v1/chains` 返回的 `data` 字段动态确定：

### Blockchain Data API 状态

- **已开放**: Base 主网的 Blockchain Data API 现已开放。支持的数据集与接口请参阅数据集目录。 [浏览数据集目录](https://blockvectra.com/zh/data/)

## 开始使用与获取 API Key

新账户注册即得 3,000 万 CU，无需信用卡。

* **Web 控制台**：通过以太坊钱包签名或邮箱注册，并在[控制台](https://console.blockvectra.com/zh/login/?next=%2Fzh%2Fkeys%2F)创建 API key。详细步骤请参阅[快速上手指南](https://docs.blockvectra.com/zh/quickstart/)。
* **程序化开户**：自主 AI Agent、自动化工作流与脚本可通过以太坊钱包签名（EIP-191）免浏览器登录并创建 API key。详见[程序化开户指南](https://docs.blockvectra.com/zh/guides/programmatic-signup/)。
* **AI Agent**：自主 AI Agent 可通过官方 MCP 服务自动发现 Base 支持特性并完成开户与 API key 创建。详见 [AI Agent 集成指南](https://docs.blockvectra.com/zh/guides/ai-agents/)。
* **限额提升**：首次付费充值后，解除账户级每秒调用上限；每个 key 仍有默认 CU 速率与突发上限。关于当前费率与计费规则，请参阅[定价页面](https://blockvectra.com/zh/pricing/)。

## 相关指南与资源

* **Base 官方开发者文档**：关于 Base 网络的详细技术规范、Gas 机制与合约信息，请参阅官方 [Base 文档](https://docs.base.org)。
* **钱包自定义 RPC**：如需在 MetaMask 或 Rabby 中配置 Base 的自定义 RPC 端点，请参阅[钱包自定义 RPC 指南](https://docs.blockvectra.com/zh/guides/wallet-custom-rpc/)。
* **交易模拟**：在广播交易前预演执行并检查状态变化，请参阅[交易模拟指南（eth\_simulateV1）](https://docs.blockvectra.com/zh/guides/simulate-transactions/)。
* **定价与 CU 计量**：各方法的权重与计费单位请参阅[定价页面](https://blockvectra.com/zh/pricing/)。

## 下一步

* [浏览数据集目录](https://blockvectra.com/zh/data/)，查看 BlockVectra 索引的全部数据集。
* [查看免费额度与定价](https://blockvectra.com/zh/pricing/#free)，确认账户可用的方案。
* [登录控制台](https://console.blockvectra.com/zh/login/?next=%2Fzh%2Fkeys%2F)创建 API key。
