BlockVectra
JSON-RPC

JSON-RPC

eth_* / net_* / web3_* / debug_trace* 方法、CU 权重与错误码。

概述

Robinhood Chain 使用 JSON-RPC 2.0 网关(rpc-gateway)提供付费 API 访问。所有请求按 计算单位(CU) 计量,并按 key 进行限流。

  • 入口:/v1/(nginx)→ 网关(直连)或通过 POST /v1/{api_key}
  • 协议:HTTP POST,单个调用或批量(最多 100 个调用)
  • 计量:请求到达时,按整个请求的 CU 开销从该 key 的限流令牌桶预扣;账户 CU 余额的实际计费只在网关收到节点应答之后才发生,按小时结算
  • 可用性:匹配 eth_*、net_*、web3_*、debug_trace* 的方法(除了部分例外;见下文)

完整规范请见完整参考,含端点详情和真实示例。

接入方式

1. 申请 API Key

参考快速上手 → 申请 API Key。

2. 调用 JSON-RPC

curl -X POST https://dev-api.blockvectra.network/v1/YOUR_API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_blockNumber",
    "params": [],
    "id": 1
  }'

Key 传递方式(优先级顺序):

  • URL 路径:POST /v1/{api_key}
  • 请求头:x-api-key: {api_key}(如果非空,覆盖 Bearer)
  • 请求头:Authorization: Bearer {api_key}

3. 处理 CU 成本

每个方法都有对应的 CU(计算单位)权重,请求的成本是其包含的所有调用权重之和。各方法权重、缓存命中值与默认值见下方 CU 权重表;具体哪些错误会计费见错误码表的「是否计费」列。

CU 计量规则

各 JSON-RPC 方法的计算单位 (CU) 权重。

解析规则

精确匹配 > 最长前缀模式(以 * 结尾)> 默认值

缓存命中: 1 CU

默认值: 10 CU

方法名权重 (CU)
eth_blockNumber1
eth_call20
eth_chainId1
eth_createAccessList20
eth_estimateGas20
eth_getBlockByNumber5
eth_getBlockReceipts10
eth_getLogs50
eth_getProof10
eth_sendRawTransaction30
eth_simulateV120
debug_trace*200

方法策略

只有匹配允许模式的方法才可调用;其中一部分方法即使匹配了允许模式,仍会被显式拦截(返回 -32601 method not available)。

允许的模式

  • eth_*
  • net_*
  • web3_*
  • debug_trace*

被拦截的方法

  • eth_newFilter
  • eth_newBlockFilter
  • eth_newPendingTransactionFilter
  • eth_getFilterLogs
  • eth_getFilterChanges
  • eth_uninstallFilter
  • eth_subscribe
  • eth_unsubscribe

限制:

  • 批量:每个请求最多 100 个调用
  • 请求体:最大 2 MiB
  • CU 突发:单个请求的 CU 开销不能超过该 key 的桶容量(request cost <N> CU exceeds burst capacity <M> CU)

错误码表

完整的 JSON-RPC 错误码目录及其计费规则。

错误码来源HTTP 状态码消息是否计费
-32700gateway200parse error否
-32600gateway200invalid request否
-32600gateway200batch too large: max <N> calls否
-32600gateway200invalid request: ambiguous member name否
-32601gateway200method not available: <method>否
-32602gateway200eth_getLogs block range too large: max <N> blocks否
-32010gateway200node is syncing; latest-state calls are temporarily unavailable否
-32011gateway200historical state is not available beyond the most recent <N> blocks否
-32000gateway200transaction not found否
-32000gateway200block not found否
-32000gateway200upstream unavailable否
-32000gateway200upstream response too large否
-32005gateway200gateway overloaded, retry later否
-32005gateway429rate limit exceeded否
-32005gateway429request cost <N> CU exceeds burst capacity <M> CU否
-32603gateway200no response from upstream否
-32603gateway200malformed upstream response否
-32603gateway200internal gateway error否
-32020gateway402insufficient balance否
-32021gateway503billing data temporarily unavailable否
-32030nginx502rpc gateway unreachable否
-32030nginx503rpc gateway unavailable否
-32030nginx504rpc gateway timed out可能
4444node200pruned history unavailable否
-32000node200historical state ... is not available否
-32002node200<node message>否
-32003node200<node message>否
-32600node200<node message>否
*node200<node message>是

完整规范

查看完整 JSON-RPC 参考了解所有路径、请求/响应模式和真实示例。

本页目录