Hướng dẫn tích hợp Robinhood Chain: Client RPC, triển khai và sự kiện

Kết nối với Robinhood Chain bằng viem hoặc ethers, triển khai với Foundry hoặc Hardhat, lắng nghe log WebSocket hoặc sự kiện webhook, và truy vấn hoạt động token cổ phiếu.

Sử dụng RPC của Robinhood Chain để kiểm tra kết nối công khai và các lệnh đọc đã xác thực, hoặc sử dụng Data API cho các bộ dữ liệu mainnet được hỗ trợ. Nhà phát triển và AI Agent sử dụng cùng các endpoint; hãy tách biệt các yêu cầu mainnet và testnet.

Các nhiệm vụ hướng dẫn này giúp bạn hoàn thành

Truy cập RPC và WebSocket

Thông tin mạng và các endpoint

Mỗi yêu cầu đến Robinhood Chain đều xác định rõ mạng mục tiêu của nó trong đường dẫn URL bằng cách sử dụng slug robinhood_mainnet. JSON-RPC hỗ trợ cả xác thực bằng key dựa trên đường dẫn và xác thực header yêu cầu (x-api-key), trong khi Data API phục vụ các endpoint REST dưới /v1/data/robinhood_mainnet/.

Các tham số và endpoint bên dưới phản ánh các tham số mạng đang hoạt động:

Tham số / EndpointGiá trị / MẫuXác thực
Chain ID (EIP-155)4663—
JSON-RPC (key trên đường dẫn)POST https://api.blockvectra.com/v1/robinhood_mainnet/{api_key}API key trong đường dẫn URL
JSON-RPC (key trong header)POST https://api.blockvectra.com/v1/robinhood_mainnetHeader x-api-key: {api_key}
WebSocket (key trên đường dẫn)wss://api.blockvectra.com/v1/robinhood_mainnet/{api_key}API key trong đường dẫn URL
WebSocket (key trong header)wss://api.blockvectra.com/v1/robinhood_mainnetHeader x-api-key: {api_key} hoặc Authorization: Bearer {api_key}
Đăng ký WebSocketnewHeads, logs—
Gốc Data APIGET https://api.blockvectra.com/v1/data/robinhood_mainnet/…Header x-api-key: {api_key}
Trạng thái công khaiGET https://api.blockvectra.com/v1/statusKhông xác thực (công khai)

Kết nối với viem hoặc ethers

Nhà phát triển và AI Agent có thể sử dụng cùng các cài đặt phía máy chủ. Sử dụng Node.js 24 trở lên, viem 2 hoặc ethers 6, và bắt đầu với các lệnh đọc công khai. Thiết lập BLOCKVECTRA_API_KEY một cách an toàn trong môi trường cho các phương thức có key và WebSocket. Giữ các key và URL RPC chứa key ngoài mã trình duyệt, log và hệ thống quản lý phiên bản.

Lưu tệp này dưới dạng network.mjs. Bắt đầu trên testnet; đặt BLOCKVECTRA_CHAIN=robinhood_mainnet để chuyển sang mainnet. Nó đọc chain_id và chính sách phương thức từ GET /v1/chains. Đối với các lệnh đọc không cần key, hãy sử dụng public.url của danh mục và chỉ các phương thức được liệt kê trong public.methods; tính khả dụng của HTTP công khai không đồng nghĩa với quyền truy cập 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');

Lưu thành viem-client.mjs, cài đặt bằng npm install viem@2, sau đó chạy 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());

Đối với ethers, lưu thành ethers-client.mjs, cài đặt bằng npm install ethers@6, sau đó chạy 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();

Triển khai với Foundry hoặc Hardhat

Nạp tiền cho người triển khai bằng test ETH qua faucet testnet trước; các giao dịch mainnet cần ETH mainnet. Hướng dẫn triển khai và mạng chính thức liệt kê Chain ID của mainnet và testnet (truy cập: 2026-10-07). Các bảng endpoint trên trang này sử dụng /v1/chains.

Xuất URL và Chain ID đã chọn từ network.mjs. Kiểm tra eth_sendRawTransaction đối chiếu với methods.allow và methods.deny trước khi phát sóng.

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)")"

Tiếp tục với hướng dẫn triển khai Foundry hoặc Hardhat dùng chung cho Hello.sol, cài đặt công cụ, phát sóng và kiểm tra biên lai.

Lắng nghe sự kiện hợp đồng qua WebSocket

Lưu thành watch-logs.mjs và đặt LOG_ADDRESS thành hợp đồng đã triển khai hoặc hợp đồng token bạn theo dõi. Chạy node watch-logs.mjs. Mã kiểm tra ws và subscriptions từ /v1/chains trước khi đăng ký nhận logs.

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); });

Sau khi listener khởi động, hãy gửi giao dịch ping() từ một terminal khác bằng cách sử dụng các biến triển khai đã xuất tương tự:

cast send "$CONTRACT_ADDRESS" "ping()" --rpc-url "$RPC_URL" \
  --private-key "$DEPLOYER_PRIVATE_KEY"

Lưu bền vững khối đã xử lý gần nhất và loại bỏ trùng lặp theo (blockHash, transactionHash, logIndex). Sau khi kết nối lại, hãy backfill các khối bị bỏ lỡ bằng các yêu cầu eth_getLogs có giới hạn; đối chiếu các log được đánh dấu removed khi có reorg. Xem Đăng ký WebSocket và giới hạn phạm vi khối.

Đối với các sự kiện địa chỉ được chuyển phát đến đầu nhận HTTPS của bạn, GET /v1/push/chains liệt kê các chuỗi được hỗ trợ và cài đặt số xác nhận; sử dụng header x-api-key. Làm theo hướng dẫn webhook push để biết về đăng ký, xác minh chữ ký, loại bỏ trùng lặp và phát lại. Đối với các truy vấn hoạt động của token cổ phiếu mainnet, hãy tiếp tục với hướng dẫn cổ phiếu.

Các ví dụ curl trực tiếp

Bạn có thể thực hiện các lệnh gọi JSON-RPC ngay lập tức bằng các HTTP client tiêu chuẩn. Thay thế {api_key} bằng API key BlockVectra của bạn:

Truy vấn Chain ID EIP-155 bằng cách sử dụng header yêu cầu x-api-key:

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":[]}'

Cấu trúc phản hồi

Các phản hồi tuân theo đặc tả JSON-RPC 2.0:

  • Thành công: Trả về một khung phản hồi với jsonrpc: "2.0", cùng id, và một chuỗi result chứa số lượng được mã hóa thập lục phân (eth_chainId trả về Chain ID mã hóa hex; eth_blockNumber trả về chiều cao khối mới nhất).
  • Phương thức không được phép: Yêu cầu một phương thức nằm ngoài các phương thức được phép của mạng trả về mã lỗi JSON-RPC -32601 (method not available, không tính phí).
  • Truy vấn ngoài cửa sổ: Các yêu cầu trạng thái lịch sử sớm hơn cửa sổ lưu giữ trạng thái trả về mã lỗi JSON-RPC -32011 (không tính phí).
  • Tham số không hợp lệ: Các tham số yêu cầu không đúng định dạng hoặc không được phép trả về mã lỗi JSON-RPC -32602 (không tính phí).

Năng lực và chính sách phương thức

Các phương thức JSON-RPC khả dụng, giới hạn phạm vi khối log và việc lưu giữ trạng thái lịch sử trên Robinhood Chain được công bố động qua GET /v1/chains. Việc trace thực thi (debug_trace*, bao gồm debug_traceTransaction) được quản lý bởi chính sách phương thức của chuỗi:

Thông số mạng và giới hạn

  • Phạm vi khối eth_getLogs: Tối đa 1000 khối mỗi yêu cầu
  • Cửa sổ trạng thái lịch sử: 900 khối gần đây (truy vấn ngoài phạm vi trả về -32011)
  • Truy vết thực thi (debug_trace*): Được hỗ trợ (debug_traceTransaction, debug_traceCall, debug_traceBlockByNumber, debug_traceBlockByHash)

Phương thức được cho phép theo từng chuỗi: Chuỗi được hỗ trợ

Testnet

Để nhận test ETH cho các giao dịch, hãy xem hướng dẫn faucet testnet của Robinhood Chain.

Testnet của Robinhood Chain (Chain ID: 46630) sử dụng cùng API key như mainnet tại endpoint https://api.blockvectra.com/v1/robinhood_testnet, được xác thực qua header yêu cầu x-api-key.

Các yêu cầu testnet sử dụng cùng trọng số CU như mainnet và được trừ từ cùng số dư và tín dụng miễn phí. Các phương thức JSON-RPC khả dụng và việc lưu giữ trạng thái lịch sử trên Testnet của Robinhood Chain được công bố động qua GET /v1/chains.

Để có tài liệu khởi đầu ba bước có thể chạy được nhằm đọc testnet không cần key, truyền luồng log qua WebSocket, rồi chuyển cùng key đó sang mainnet, hãy xem Hướng dẫn khởi đầu Testnet của 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":[]}'

Phản hồi mong đợi:

{"jsonrpc":"2.0","id":1,"result":"0xb626"}
Tham số / EndpointGiá trị / MẫuXác thực
Chain ID (EIP-155)46630—
JSON-RPC (key trên đường dẫn)POST https://api.blockvectra.com/v1/robinhood_testnet/{api_key}API key trong đường dẫn URL
JSON-RPC (key trong header)POST https://api.blockvectra.com/v1/robinhood_testnetHeader x-api-key: {api_key}
WebSocket (key trên đường dẫn)wss://api.blockvectra.com/v1/robinhood_testnet/{api_key}API key trong đường dẫn URL
WebSocket (key trong header)wss://api.blockvectra.com/v1/robinhood_testnetHeader x-api-key: {api_key} hoặc Authorization: Bearer {api_key}
Đăng ký WebSocketnewHeads, logs—
Gốc Data APIChưa khả dụng—
Trạng thái công khaiGET https://api.blockvectra.com/v1/statusKhông xác thực (công khai)

Thông số mạng và giới hạn

  • Phạm vi khối eth_getLogs: Tối đa 1000 khối mỗi yêu cầu
  • Cửa sổ trạng thái lịch sử: 1023 khối gần đây (truy vấn ngoài phạm vi trả về -32011)
  • Truy vết thực thi (debug_trace*): Được hỗ trợ (debug_traceTransaction, debug_traceCall, debug_traceBlockByNumber, debug_traceBlockByHash)

Phương thức được cho phép theo từng chuỗi: Chuỗi được hỗ trợ

Dữ liệu cổ phiếu token hóa

Trên Robinhood Chain, BlockVectra Data API cung cấp các chỉ số on-chain hàng ngày và siêu dữ liệu cho các cổ phiếu token hóa trên hai endpoint:

  • Bảng xếp hạng hàng ngày (GET /v1/data/robinhood_mainnet/stocks): Bảng xếp hạng hoạt động hàng ngày của các cổ phiếu token hóa cho một ngày UTC cụ thể, được sắp xếp theo hoạt động chuyển giao giảm dần.
  • Lấy một cổ phiếu token hóa (GET /v1/data/robinhood_mainnet/stocks/{token}): Siêu dữ liệu hợp đồng token và tối đa 30 ngày các chỉ số hàng ngày gần đây theo địa chỉ token.

Để biết chi tiết các tham số yêu cầu, khung phản hồi (StockDailyListEnvelope và StockTokenEnvelope), ghi chú phân trang và ước tính mức tiêu thụ CU, hãy xem Hướng dẫn cổ phiếu token hóa.

Starter template hoàn chỉnh: blockvectra/robinhood-stock-tokens

Bắt đầu và API key

Tài khoản mới nhận 30,000,000 CU khi đăng ký — không cần thẻ tín dụng.

Bạn có thể thử endpoint công khai không cần key https://api.blockvectra.com/v1/robinhood_mainnet/public trước (chỉ các phương thức JSON-RPC ví, Data API yêu cầu một key; các phương thức và giới hạn phải tuân theo /v1/chains); hãy đăng ký tài khoản nếu bạn cần giới hạn tốc độ cao hơn.

  • Web console: Đăng ký qua chữ ký ví Ethereum, và tạo một API key trong Console. Xem Hướng dẫn bắt đầu nhanh để biết chi tiết thiết lập.
  • Đăng ký theo chương trình: Các AI Agent tự hành, script tự động và quy trình CI có thể đăng nhập và cung cấp API key bằng chữ ký ví Ethereum (EIP-191) mà không cần trình duyệt. Làm theo Hướng dẫn đăng ký theo chương trình.
  • AI Agent: Các AI Agent tự hành có thể khám phá khả năng của Robinhood Chain bằng máy chủ Model Context Protocol (MCP) chính thức. Xem Kết nối AI Agent với BlockVectra.
  • Nâng cấp giới hạn: Sau khi nạp tiền, giới hạn số lệnh gọi mỗi giây trên toàn tài khoản sẽ được gỡ bỏ; mỗi key vẫn phải tuân theo giới hạn tốc độ và burst của Compute Unit (CU). Để biết mức giá và đơn vị thanh toán hiện tại, hãy xem Trang bảng giá.

Các bước tiếp theo

Cập nhật lần cuối:

Trên trang này