Robinhood Chain 整合指南:RPC 用戶端、部署與事件

使用 viem 或 ethers 連線至 Robinhood Chain,透過 Foundry 或 Hardhat 部署,監聽 WebSocket 日誌或 webhook 事件,並查詢股票代幣活動。

使用 Robinhood Chain RPC 進行公開連線檢查與認證讀取,或使用 Data API 查詢受支援的主網資料集。開發者與 AI Agent 使用相同的端點;請將主網與測試網請求分開。

這篇指南協助你完成的任務

RPC 與 WebSocket 存取

網路資訊與端點

向 Robinhood Chain 發送的每個請求均在 URL 路徑中使用識別代號 robinhood_mainnet 明確指定其目標網路。JSON-RPC 支援基於路徑的 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,並從公開讀取開始。在環境中安全設定 BLOCKVECTRA_API_KEY 以用於帶 key 的方法與 WebSocket。切勿將 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());

對於 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();

使用 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、工具設定、廣播與收據檢查。

透過 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 chain 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 回傳十六進位編碼的 chain 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)在端點 https://api.blockvectra.com/v1/robinhood_testnet 上使用與主網相同的 API key,透過 x-api-key 請求標頭進行驗證。

測試網請求使用與主網相同的 CU 權重,並從相同的餘額與免費額度中扣除。Robinhood Chain 測試網上可用的 JSON-RPC 方法與歷史狀態保留時間透過 GET /v1/chains 動態發布。

有關無需 key 即可讀取測試網、透過 WebSocket 串流日誌然後將相同 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、自動化指令碼與 CI 管線可使用以太坊錢包簽名(EIP-191)免瀏覽器登入並佈建 API key。請參考程式化註冊指南。
  • AI Agent:自主 AI Agent 可使用官方 Model Context Protocol (MCP) 伺服器探索 Robinhood Chain 功能。請參閱將 AI Agent 連線至 BlockVectra。
  • 升級限制:儲值後,帳戶整體的每秒呼叫次數限制將被移除;每個 key 仍受計算單位(CU)速率與突發限制約束。有關目前的費率與計費單位,請參閱定價頁面。

下一步

最後更新:

本頁目錄