Robinhood Chain RPC:主网与测试网地址、链 ID
选择 Robinhood Chain 主网(链 ID 4663)或测试网(46630),通过 curl、viem 或 ethers 免 API key 读取区块,或使用自己的 API key 接入 eRPC 本地代理。
| 网络 | 链 ID | 公共 HTTP RPC |
|---|---|---|
| 主网 | 4663 | https://api.blockvectra.com/v1/robinhood_mainnet/public |
| 测试网 | 46630 | https://api.blockvectra.com/v1/robinhood_testnet/public |
在测试网开发?先看测试网入门,或通过水龙头领取测试 ETH。
Robinhood Chain 主网的链 ID 是 4663,免 key 公共 RPC 地址是 https://api.blockvectra.com/v1/robinhood_mainnet/public(每 IP 每秒 3 次请求)。测试网的链 ID 是 46630,地址是 https://api.blockvectra.com/v1/robinhood_testnet/public。公共端点免 key 提供 HTTP JSON-RPC 读取;公共方法以各网络的 public.methods 为准;匿名 eth_getLogs 仅在列出该方法时按 public.logs 限制开放。WebSocket 订阅与 Data API 需要 key。核对于 。开发者与 AI Agent 使用同一套端点;主网与测试网请求需分别选择网络。
本指南中的 RPC 端点由 BlockVectra 提供;Robinhood 自己的公共 RPC 与网络参数见官方连接文档。
- 第一步:按免 key 读取主网运行三条命令;想自己保存
network.mjs与客户端示例时,按使用 viem 或 ethers 连接操作。 - 完成标准:TypeScript 免 key 读取输出主网链 ID
4663和最新区块号;Python 示例以链 ID4663确认链身份。自定义客户端则确认 RPC 返回的链 ID 与目录中的chain_id一致,并输出最新区块号,没有RPC chain ID mismatch错误。
免 key 读取主网
可以使用现成的 TypeScript 示例:BlockVectra agent-quickstart 仓库。使用 Node.js 22(>=22.18)或 Node.js >=24.12 与 Git,可直接运行原生 TypeScript 入口,无需安装依赖。默认读取 Robinhood 主网:先从链目录确认链 ID 为 4663,再读取最新区块号。该命令最多发出 3 次 HTTP 请求(其中 2 次为 JSON-RPC 调用),不需要钱包、注册或 API key。
git clone https://github.com/blockvectra/agent-quickstart.git
cd agent-quickstart
node src/public-read-cli.ts使用其他 Node.js 版本(Node.js >=18)时,在已克隆的仓库目录运行:
npm ci --ignore-scripts
npm run read:public完成标准:输出显示链 ID 4663 和主网最新区块号。仓库里的 npm start 是另一套完整开户流程,不属于这次免 key 读取。
也可以使用 Python 3.10+。在已克隆的仓库目录运行下面的命令;示例只用标准库,无需安装包,成功结果以链 ID 4663 确认链身份,不读取区块高度。最多发出 2 次 HTTP 请求,其中 1 次是 RPC 调用。
python3 examples/public_chain.py想用自己的 viem 或 ethers 客户端时,仍可使用下方的使用 viem 或 ethers 连接一节。该节默认连接测试网;设置 BLOCKVECTRA_CHAIN=robinhood_mainnet 即可读取主网。
这篇帮你完成什么任务
- 试连 Robinhood Chain RPC:用 viem 或 ethers 发起公开读取,再用 key 调用认证方法。
- 检查测试网 RPC 连接:读取
eth_chainId后再执行测试网操作。 - 查询股票代币活动:核对数据集支持后使用主网 Data API,指标反映链上活动,不是股票报价。
选 BlockVectra MCP 还是 Robinhood Trading MCP
需要让 Agent 调用 Robinhood Chain 的链上 RPC 或 Data API 数据时,使用 BlockVectra MCP 服务器。需要处理券商账户、持仓或订单时,按 Robinhood 官方 Trading MCP 的接入说明操作。
BlockVectra 服务账户用于验证对 BlockVectra RPC 与数据端点的请求;Robinhood 券商账户是在 Robinhood 开立的独立账户。Robinhood Chain 不连接券商账户,BlockVectra 服务账户也不提供对它的访问。
RPC 与 WebSocket 接入
- 公开 RPC URL:在 Robinhood Chain 主网链页或测试网链页查看免 key 端点、公开支持方法与限流。
- 携带 API key 的 JSON-RPC:使用下方端点与 curl 示例。日志查询见 eth_getLogs 方法参考与区块范围限制指南。
- 携带 API key 的 WebSocket:使用下方 WebSocket 端点,按 WebSocket 订阅指南订阅
newHeads与logs。公开 RPC 使用 HTTP JSON-RPC;WebSocket 连接需要 key。
链信息与端点
针对 Robinhood Chain 的每次请求均通过 URL 路径中的 robinhood_mainnet 标识目标链。JSON-RPC 同时支持在 URL 路径中携带 Key 以及在请求头中传入 x-api-key 两种鉴权写法;Data API 则在 /v1/data/robinhood_mainnet/ 下提供 REST 查询端点。
以下参数与端点来自当前网络数据:
| 参数 / 端点 | 取值 / 模板 | 鉴权方式 |
|---|---|---|
| Chain ID(EIP-155) | 4663 | — |
| JSON-RPC(路径携带 Key) | POST https://api.blockvectra.com/v1/robinhood_mainnet/{api_key} | URL 路径中传入 API key |
| JSON-RPC(请求头携带 Key) | POST https://api.blockvectra.com/v1/robinhood_mainnet | 传入 x-api-key: {api_key} 请求头 |
| WebSocket(路径携带 Key) | wss://api.blockvectra.com/v1/robinhood_mainnet/{api_key} | URL 路径中传入 API key |
| WebSocket(请求头携带 Key) | wss://api.blockvectra.com/v1/robinhood_mainnet | 传入 x-api-key: {api_key} 或 Authorization: Bearer {api_key} 请求头 |
| WebSocket 订阅类型 | newHeads, logs | — |
| Data API 基址 | GET https://api.blockvectra.com/v1/data/robinhood_mainnet/… | 传入 x-api-key: {api_key} 请求头 |
| 公开状态端点 | GET https://api.blockvectra.com/v1/status | 无需鉴权(公开) |
使用 viem 或 ethers 连接
开发者与 AI Agent 可使用同一份服务端参数。使用 Node.js 24 或更新版本、viem 2 或 ethers 6,先使用公开读取;调用带 key 方法与 WebSocket 时,通过环境变量安全设置 BLOCKVECTRA_API_KEY。不要将 key 或带 key 的 RPC URL 放进浏览器代码、日志或版本控制。
保存为 network.mjs。先在测试网接入;切换主网时设置 BLOCKVECTRA_CHAIN=robinhood_mainnet。脚本从 GET /v1/chains 读取 chain_id 与方法策略。免 key 读取使用目录中的 public.url,只调用 public.methods 列出的方法;公开 HTTP 可用不代表 WebSocket 可用。
const chainSlug = process.env.BLOCKVECTRA_CHAIN ?? 'robinhood_testnet';
const key = process.env.BLOCKVECTRA_API_KEY;
const catalogUrl = 'https://api.blockvectra.com/v1/chains';
const response = await fetch(catalogUrl, { signal: AbortSignal.timeout(15_000) });
if (!response.ok) throw new Error(`Chains HTTP ${response.status}`);
const catalog = await response.json();
export const chainInfo = catalog.chains.find(item => item.chain === chainSlug);
if (!chainInfo || !Number.isSafeInteger(chainInfo.chain_id) || chainInfo.chain_id <= 0) {
throw new Error('Missing chain or chain_id');
}
export function allows(method) {
const matches = pattern => pattern.endsWith('*')
? method.startsWith(pattern.slice(0, -1)) : pattern === method;
if (!key) return (chainInfo.public?.methods ?? []).some(matches);
return (chainInfo.methods?.allow ?? []).some(matches)
&& !(chainInfo.methods?.deny ?? []).some(matches);
}
if (!allows('eth_chainId')) throw new Error('eth_chainId is unavailable');
export const rpcUrl = key
? new URL(`./${chainSlug}/${encodeURIComponent(key)}`, catalogUrl).href
: chainInfo.public?.url;
if (!rpcUrl) throw new Error('Public RPC is unavailable; set BLOCKVECTRA_API_KEY');保存为 viem-client.mjs,通过 npm install viem@2 安装后运行 node viem-client.mjs。
import { createPublicClient, defineChain, http } from 'viem';
import { chainInfo, rpcUrl } from './network.mjs';
export const chain = defineChain({
id: chainInfo.chain_id,
name: chainInfo.name,
nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 },
rpcUrls: { default: { http: [rpcUrl] } },
});
export const client = createPublicClient({ chain, transport: http(rpcUrl) });
if (await client.getChainId() !== chain.id) throw new Error('RPC chain ID mismatch');
console.log(await client.getBlockNumber());使用此客户端读取主网:
BLOCKVECTRA_CHAIN=robinhood_mainnet node viem-client.mjs使用 ethers 时,保存为 ethers-client.mjs,通过 npm install ethers@6 安装后运行 node ethers-client.mjs。
import { JsonRpcProvider } from 'ethers';
import { chainInfo, rpcUrl } from './network.mjs';
const provider = new JsonRpcProvider(rpcUrl, chainInfo.chain_id, { batchMaxCount: 1 });
const network = await provider.getNetwork();
if (network.chainId !== BigInt(chainInfo.chain_id)) throw new Error('RPC chain ID mismatch');
console.log(await provider.getBlockNumber());
provider.destroy();使用此客户端读取主网:
BLOCKVECTRA_CHAIN=robinhood_mainnet node ethers-client.mjs通过 eRPC 接入
如果你已经在本机用 eRPC 做 RPC 代理,把 BlockVectra 加成两个显式 upstream 即可。eRPC 不会自动发现这两条链,所以每个 upstream 都要写明端点和链 ID。这份文件已在 eRPC 0.5.0 上核对过(请先安装该版本);复现文件见参考 Gist。这里需要你自己的 API key,免 key 公共端点不能替代。
保存为 erpc.blockvectra.yaml。key 从环境变量读取,不会写进文件:
logLevel: error
server:
listenV4: true
httpHostV4: 127.0.0.1
httpPortV4: 4000
listenV6: false
metrics:
enabled: false
projects:
- id: blockvectra
upstreams:
- id: blockvectra-rh-mainnet
endpoint: https://api.blockvectra.com/v1/robinhood_mainnet
evm:
chainId: 4663
jsonRpc:
headers:
x-api-key: "${BLOCKVECTRA_API_KEY}"
- id: blockvectra-rh-testnet
endpoint: https://api.blockvectra.com/v1/robinhood_testnet
evm:
chainId: 46630
jsonRpc:
headers:
x-api-key: "${BLOCKVECTRA_API_KEY}"变量未设置时会展开成空的 header,所以缺 key 要在启动前拦下,然后校验并启动:
: "${BLOCKVECTRA_API_KEY:?Set BLOCKVECTRA_API_KEY first}"
erpc --config erpc.blockvectra.yaml --require-config validate
erpc --config erpc.blockvectra.yaml --require-config代理只监听 127.0.0.1:4000。在另一个终端通过本地路由读取链 ID,并核对是否一致:
curl -s "http://127.0.0.1:4000/blockvectra/evm/4663" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'返回的 result 应是 4663 的十六进制形式。测试网改用 /blockvectra/evm/46630,期望值为 46630 的十六进制形式。
注意:
validate只检查本地文件。支持的方法、日志范围和状态历史仍以 GET /v1/chains 为准。- eRPC 启动时会联系上游做初始化和健康检查,这些后台请求与你自己的调用一起计入 CU 和请求额度。
- 不要把该文件或请求 header 打印到日志里,其中带有你的 key。
使用 Foundry 或 Hardhat 部署
先通过测试网水龙头获取部署所需的测试 ETH;主网交易需要主网 ETH。官方网络与部署指南列出了主网与测试网 chain ID(访问日期:2026-10-07)。本页端点表使用 /v1/chains 的数据。
从 network.mjs 导出所选 URL 与 chain ID。广播前按 methods.allow 与 methods.deny 检查 eth_sendRawTransaction。
export RPC_URL="$(node --input-type=module -e "import { rpcUrl, allows } from './network.mjs'; if (!allows('eth_sendRawTransaction')) throw new Error('Broadcast unavailable'); console.log(rpcUrl)")"
export CHAIN_ID="$(node --input-type=module -e "import { chainInfo } from './network.mjs'; console.log(chainInfo.chain_id)")"接着按共用的 Foundry 或 Hardhat 部署教程创建 Hello.sol、设置工具参数、广播交易并检查 receipt。
通过 WebSocket 监听合约事件
保存为 watch-logs.mjs,将 LOG_ADDRESS 设置为要监听的已部署合约或代币合约。运行 node watch-logs.mjs。订阅 logs 前,代码检查 /v1/chains 的 ws 与 subscriptions。
import { createPublicClient, webSocket, isAddress } from 'viem';
import { chain } from './viem-client.mjs';
import { chainInfo, rpcUrl } from './network.mjs';
if (!process.env.BLOCKVECTRA_API_KEY) throw new Error('WebSocket requires BLOCKVECTRA_API_KEY');
const address = process.env.LOG_ADDRESS;
if (!chainInfo.ws || !chainInfo.subscriptions?.includes('logs')) {
throw new Error('WebSocket logs are unavailable; use HTTP backfill or webhook push');
}
if (!address || !isAddress(address)) throw new Error('Set LOG_ADDRESS');
const wsUrl = new URL(rpcUrl);
wsUrl.protocol = 'wss:';
const client = createPublicClient({ chain, transport: webSocket(wsUrl.href) });
const unwatch = client.watchEvent({
address, poll: false,
onLogs: logs => console.log(logs),
onError: error => console.error(error),
});
process.once('SIGINT', () => { unwatch(); process.exit(0); });启动监听后,在另一个终端使用相同的部署环境变量发送 ping() 交易:
cast send "$CONTRACT_ADDRESS" "ping()" --rpc-url "$RPC_URL" \
--private-key "$DEPLOYER_PRIVATE_KEY"持久化最后处理的区块,按 (blockHash, transactionHash, logIndex) 去重。重连后用有界 eth_getLogs 分段补齐漏过的区块;重组时对标记为 removed 的日志进行对账。详见 WebSocket 订阅与区块跨度限制。
需要将地址事件投递到 HTTPS 接收端时,GET /v1/push/chains 查看支持的链及确认数参数,请求携带 x-api-key。按 webhook 推送指南创建订阅、校验签名、去重与重放。主网股票代币活动查询继续参考股票指标指南。
直接运行的 curl 示例
可以使用标准 HTTP 客户端直接发起 JSON-RPC 调用。请将 {api_key} 替换为你的 BlockVectra API key:
通过 x-api-key 请求头查询 EIP-155 链 ID:
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
-H "Content-Type: application/json" \
-H "x-api-key: {api_key}" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'响应结构说明
接口响应遵循 JSON-RPC 2.0 规范:
- 成功响应:返回包含
jsonrpc: "2.0"、相同id以及十六进制编码字符串result的对象(eth_chainId返回十六进制链 ID;eth_blockNumber返回最新区块高度)。 - 未开放方法:请求未开放的方法返回 JSON-RPC 错误码
-32601(method not available,不计费)。 - 超出状态窗口:查询超出历史状态保留窗口的区块返回 JSON-RPC 错误码
-32011(不计费)。 - 参数错误:请求参数格式不符合要求返回 JSON-RPC 错误码
-32602(不计费)。
支持情况与方法策略
Robinhood Chain 上可用的 JSON-RPC 方法、日志区块跨度上限以及历史状态保留窗口通过 GET /v1/chains 动态发布。执行追踪(debug_trace* 系列,包括 debug_traceTransaction)是否开放同样由该链的方法策略决定:
网络参数与调用限制
- eth_getLogs 单次区块跨度: 单次最多 1000 个区块
- 历史状态窗口: 最近 900 个区块(超出窗口返回 -32011)
- 执行追踪(debug_trace*): 已支持(含 debug_traceTransaction、debug_traceCall、debug_traceBlockByNumber、debug_traceBlockByHash)
各链允许的方法见 支持的链
测试网
交易所需的测试 ETH 可按 Robinhood Chain 测试网水龙头指南领取。
Robinhood Chain 测试网(Chain ID:46630)使用同一把 API key 进行调用,端点为 https://api.blockvectra.com/v1/robinhood_testnet,通过 x-api-key 请求头鉴权。
测试网与主网使用同一套 CU 权重,从同一份余额与免费额度扣。可用的 JSON-RPC 方法与历史状态保留窗口等能力以 GET /v1/chains 返回为准。
可运行的三步入门模板(免 key 读测试网、用 WebSocket 订阅 logs、再把同一把 key 切到主网)见 Robinhood Chain 测试网入门指南。
curl -s "https://api.blockvectra.com/v1/robinhood_testnet" \
-H "Content-Type: application/json" \
-H "x-api-key: {api_key}" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'期望返回:
{"jsonrpc":"2.0","id":1,"result":"0xb626"}| 参数 / 端点 | 取值 / 模板 | 鉴权方式 |
|---|---|---|
| Chain ID(EIP-155) | 46630 | — |
| JSON-RPC(路径携带 Key) | POST https://api.blockvectra.com/v1/robinhood_testnet/{api_key} | URL 路径中传入 API key |
| JSON-RPC(请求头携带 Key) | POST https://api.blockvectra.com/v1/robinhood_testnet | 传入 x-api-key: {api_key} 请求头 |
| WebSocket(路径携带 Key) | wss://api.blockvectra.com/v1/robinhood_testnet/{api_key} | URL 路径中传入 API key |
| WebSocket(请求头携带 Key) | wss://api.blockvectra.com/v1/robinhood_testnet | 传入 x-api-key: {api_key} 或 Authorization: Bearer {api_key} 请求头 |
| WebSocket 订阅类型 | newHeads, logs | — |
| Data API 基址 | 暂未开放 | — |
| 公开状态端点 | GET https://api.blockvectra.com/v1/status | 无需鉴权(公开) |
网络参数与调用限制
- eth_getLogs 单次区块跨度: 单次最多 1000 个区块
- 历史状态窗口: 最近 1023 个区块(超出窗口返回 -32011)
- 执行追踪(debug_trace*): 已支持(含 debug_traceTransaction、debug_traceCall、debug_traceBlockByNumber、debug_traceBlockByHash)
各链允许的方法见 支持的链
代币化股票数据
在 Robinhood Chain 上,BlockVectra Data API 针对代币化股票提供每日链上指标与元数据,包含两个端点:
- 每日活跃榜单(
GET /v1/data/robinhood_mainnet/stocks):获取指定 UTC 日期的代币化股票活跃榜单,按链上转账活跃度降序排列。 - 单个代币化股票详情(
GET /v1/data/robinhood_mainnet/stocks/{token}):根据代币合约地址查询元数据与最近最多 30 天的每日链上指标。
如需查看完整的请求参数、响应外层结构(StockDailyListEnvelope 与 StockTokenEnvelope)、分页特性以及 CU 用量估算,请参阅代币化股票指标指南。
完整模板仓库:blockvectra/robinhood-stock-tokens
开始使用与获取 API Key
新账户注册即得 30,000,000 CU,无需信用卡。可先使用免 key 公开端点 https://api.blockvectra.com/v1/robinhood_mainnet/public 进行测试(仅钱包类 JSON-RPC 方法,Data API 需要 key;方法与限额以 /v1/chains 为准),公开端点限速不够再开户。
- Web 控制台:通过以太坊钱包签名,并在控制台创建 API key。详细步骤请参阅快速上手指南。
- 程序化开户:自主 AI Agent、自动化工作流与脚本可通过以太坊钱包签名(EIP-191)免浏览器登录并创建 API key。详见程序化开户指南。
- AI Agent:自主 AI Agent 可通过 BlockVectra MCP 服务自动发现 Robinhood Chain 支持特性。详见 AI Agent 集成指南。
- 限额提升:首次付费充值后,解除账户级每秒调用上限;每个 key 仍有默认 CU 速率与突发上限。关于当前费率与计费规则,请参阅定价页面。
下一步
最后更新: