Robinhood Chain 整合指南:RPC 用戶端、部署與事件
使用 viem 或 ethers 連線至 Robinhood Chain,透過 Foundry 或 Hardhat 部署,監聽 WebSocket 日誌或 webhook 事件,並查詢股票代幣活動。
使用 Robinhood Chain RPC 進行公開連線檢查與認證讀取,或使用 Data API 查詢受支援的主網資料集。開發者與 AI Agent 使用相同的端點;請將主網與測試網請求分開。
這篇指南協助你完成的任務
- 探測 Robinhood Chain RPC:使用 viem 或 ethers 進行公開讀取,然後使用 key 呼叫認證方法。
- 檢查測試網 RPC 連線:在執行測試網操作前先讀取
eth_chainId。 - 查詢代幣化股票活動:在確認資料集支援後使用主網 Data API;這些指標描述鏈上活動,而非股票價格。
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 支援基於路徑的 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)速率與突發限制約束。有關目前的費率與計費單位,請參閱定價頁面。
下一步
最後更新: