คู่มือการรวมระบบ Robinhood Chain: ไคลเอนต์ RPC, การดีพลอย และอีเวนต์
เชื่อมต่อกับ Robinhood Chain ด้วย viem หรือ ethers, ดีพลอยด้วย Foundry หรือ Hardhat, รับฟัง log ของ WebSocket หรืออีเวนต์ webhook และสืบค้นกิจกรรมโทเค็นหุ้น
ใช้ Robinhood Chain RPC สำหรับการตรวจสอบการเชื่อมต่อสาธารณะและการอ่านที่มีการยืนยันตัวตน หรือใช้ Data API สำหรับชุดข้อมูล mainnet ที่รองรับ ทั้งนักพัฒนาและ AI agent ใช้ endpoint เดียวกัน โปรดแยกคำขอของ mainnet และ testnet ออกจากกัน
- ขั้นตอนแรก: เชื่อมต่อด้วย viem หรือ ethers โดยบันทึก
network.mjsและตัวอย่างไคลเอนต์หนึ่งรายการก่อนที่จะรัน - เสร็จสมบูรณ์เมื่อ: ไคลเอนต์ยืนยันว่า RPC chain ID ตรงกับ
chain_idในแคตตาล็อก และพิมพ์หมายเลขบล็อกล่าสุดโดยไม่มีข้อผิดพลาดRPC chain ID mismatch
พารามิเตอร์ Mainnet และตัวเลือกการเข้าถึง
งานที่คู่มือนี้จะช่วยให้คุณทำสำเร็จ
- ตรวจสอบ Robinhood Chain RPC ด้วยการอ่านแบบสาธารณะโดยใช้ viem หรือ ethers จากนั้นใช้คีย์สำหรับเมธอดที่ต้องยืนยันตัวตน
- ตรวจสอบการเชื่อมต่อ testnet RPC โดยการอ่าน
eth_chainIdก่อนดำเนินการใดๆ บน testnet - สืบค้นกิจกรรมโทเค็นหุ้น (tokenized stock) ด้วย Data API ของ mainnet หลังจากตรวจสอบการรองรับชุดข้อมูลแล้ว โดยเมตริกจะอธิบายกิจกรรมบนเชน ไม่ใช่ราคาหุ้น
การเข้าถึง RPC และ WebSocket
- Public RPC URL: ค้นหา endpoint ที่ไม่ต้องใช้คีย์, เมธอดสาธารณะที่รองรับ และขีดจำกัดอัตราได้ที่ หน้า Robinhood Chain mainnet หรือ หน้า testnet
- JSON-RPC พร้อม API key: ใช้ endpoint และตัวอย่าง curl ด้านล่าง สำหรับ log โปรดดู ข้อมูลอ้างอิงเมธอด eth_getLogs และ คู่มือขีดจำกัดช่วงบล็อก
- WebSocket พร้อม API key: ใช้ WebSocket endpoint ด้านล่างและทำตาม คู่มือการสมัครรับข้อมูล WebSocket สำหรับ
newHeadsและlogsการเข้าถึง RPC สาธารณะเป็นแบบ HTTP JSON-RPC ส่วนการเชื่อมต่อ WebSocket จำเป็นต้องใช้คีย์
ข้อมูลเครือข่ายและ endpoint
ทุกคำขอไปยัง Robinhood Chain จะระบุเครือข่ายเป้าหมายอย่างชัดเจนในพาธ URL โดยใช้สลัก robinhood_mainnet โดย JSON-RPC รองรับทั้งการยืนยันตัวตนด้วยคีย์ในพาธและการยืนยันตัวตนผ่านส่วนหัวของคำขอ (x-api-key) ในขณะที่ Data API ให้บริการ REST endpoint ภายใต้ /v1/data/robinhood_mainnet/
พารามิเตอร์และ endpoint ด้านล่างแสดงถึงพารามิเตอร์เครือข่ายที่ใช้งานอยู่ในปัจจุบัน:
| พารามิเตอร์ / เอนด์พอยต์ | ค่า / เทมเพลต | การยืนยันตัวตน |
|---|---|---|
| Chain ID (EIP-155) | 4663 | — |
| JSON-RPC (คีย์ในพาธ) | POST https://api.blockvectra.com/v1/robinhood_mainnet/{api_key} | API key ในพาธ URL |
| JSON-RPC (คีย์ในส่วนหัว) | POST https://api.blockvectra.com/v1/robinhood_mainnet | ส่วนหัว x-api-key: {api_key} |
| WebSocket (คีย์ในพาธ) | wss://api.blockvectra.com/v1/robinhood_mainnet/{api_key} | API key ในพาธ URL |
| WebSocket (คีย์ในส่วนหัว) | 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 ในสภาพแวดล้อมอย่างปลอดภัยสำหรับเมธอดที่ใช้คีย์และ WebSocket เก็บรักษาคีย์และ RPC URL ที่มีคีย์ให้พ้นจากโค้ดเบราว์เซอร์, log และระบบควบคุมเวอร์ชัน
บันทึกไฟล์นี้เป็น network.mjs เริ่มต้นบน testnet; กำหนดค่า BLOCKVECTRA_CHAIN=robinhood_mainnet เพื่อย้ายไปยัง mainnet โค้ดนี้จะอ่าน chain_id และนโยบายเมธอดจาก GET /v1/chains สำหรับการอ่านแบบไม่ต้องใช้คีย์ ให้ใช้ 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 ทดสอบให้กับบัญชีผู้ดีพลอยผ่าน testnet faucet ก่อน; ธุรกรรมบน mainnet จำเป็นต้องใช้ ETH บน mainnet โดย คู่มือเครือข่ายและการดีพลอยอย่างเป็นทางการ ได้ระบุ chain ID ของ mainnet และ testnet ไว้ (เข้าถึงเมื่อ: 2026-10-07) ตาราง endpoint ในหน้านี้ใช้ข้อมูลจาก /v1/chains
ส่งออก URL และ chain ID ที่เลือกจาก network.mjs ตรวจสอบ eth_sendRawTransaction เทียบกับ methods.allow และ methods.deny ก่อนทำการบรอดแคสต์
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 โค้ดจะตรวจสอบ ws และ subscriptions จาก /v1/chains ก่อนที่จะสมัครรับข้อมูล 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); });หลังจากตัวรับฟังเริ่มต้นทำงาน ให้ส่งธุรกรรม ping() จากอีกเทอร์มินัลหนึ่งโดยใช้ตัวแปรการดีพลอยที่ export ไว้เดียวกัน:
cast send "$CONTRACT_ADDRESS" "ping()" --rpc-url "$RPC_URL" \
--private-key "$DEPLOYER_PRIVATE_KEY"บันทึกบล็อกล่าสุดที่ประมวลผลแล้วและตัดข้อมูลซ้ำซ้อนด้วย (blockHash, transactionHash, logIndex) หลังจากเชื่อมต่อใหม่ ให้ดึงข้อมูลบล็อกที่พลาดไปด้วยคำขอ eth_getLogs ที่จำกัดช่วง; ตรวจสอบปรับปรุง log ที่ทำเครื่องหมาย removed ในกรณีที่มี reorg ดู การสมัครรับข้อมูล WebSocket และ ขีดจำกัดช่วงบล็อก
สำหรับอีเวนต์ของที่อยู่ที่ส่งไปยังตัวรับ HTTPS ของคุณ GET /v1/push/chains จะแสดงรายการเชนที่รองรับ และการตั้งค่าการยืนยัน; โดยใช้ส่วนหัว x-api-key ทำตาม คู่มือ webhook push สำหรับการสมัครรับข้อมูล, การตรวจสอบลายเซ็น, การตัดข้อมูลซ้ำซ้อน และการเล่นซ้ำ สำหรับการสืบค้นกิจกรรมโทเค็นหุ้นบน mainnet ให้ดำเนินการต่อด้วย คู่มือหุ้น
ตัวอย่าง curl โดยตรง
คุณสามารถเรียก JSON-RPC ได้ทันทีโดยใช้ไคลเอนต์ HTTP มาตรฐาน แทนที่ {api_key} ด้วย BlockVectra API key ของคุณ:
สืบค้น EIP-155 chain ID โดยใช้ส่วนหัวของคำขอ 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":[]}'โครงสร้างการตอบกลับ
การตอบกลับจะเป็นไปตามข้อกำหนด JSON-RPC 2.0:
- สำเร็จ: ส่งคืน envelope พร้อม
jsonrpc: "2.0",idเดียวกัน และสตริงresultที่มีปริมาณที่เข้ารหัสเลขฐานสิบหก (eth_chainIdส่งคืน chain ID ที่เข้ารหัสเลขฐานสิบหก;eth_blockNumberส่งคืนความสูงของบล็อกล่าสุด) - เมธอดที่ไม่อนุญาต: การขอเมธอดที่อยู่นอกเหนือเมธอดที่อนุญาตของเครือข่ายจะส่งคืนรหัสข้อผิดพลาด JSON-RPC
-32601(method not available, ไม่ถูกเรียกเก็บเงิน) - การสืบค้นนอกหน้าต่างข้อมูล: คำขอสถานะย้อนหลังที่เก่ากว่าหน้าต่างการเก็บรักษาสถานะจะส่งคืนรหัสข้อผิดพลาด JSON-RPC
-32011(ไม่ถูกเรียกเก็บเงิน) - พารามิเตอร์ไม่ถูกต้อง: พารามิเตอร์คำขอที่ไม่ถูกต้องตามรูปแบบหรือไม่อนุญาตจะส่งคืนรหัสข้อผิดพลาด JSON-RPC
-32602(ไม่ถูกเรียกเก็บเงิน)
ความสามารถและนโยบายเมธอด
เมธอด JSON-RPC ที่พร้อมใช้งาน, ขีดจำกัดช่วงบล็อกของ log และการเก็บรักษาสถานะย้อนหลังบน Robinhood Chain จะเผยแพร่แบบไดนามิกผ่าน GET /v1/chains การทำ execution tracing (debug_trace* รวมถึง debug_traceTransaction) อยู่ภายใต้นโยบายเมธอดของเชน:
พารามิเตอร์และขีดจำกัดของเครือข่าย
- ช่วงบล็อก eth_getLogs: สูงสุด 1000 บล็อกต่อคำขอ
- หน้าต่างสถานะย้อนหลัง: 900 บล็อกล่าสุด (การสืบค้นนอกเหนือจากนี้ส่งคืน -32011)
- การติดตามการประมวลผล (debug_trace*): รองรับ (debug_traceTransaction, debug_traceCall, debug_traceBlockByNumber, debug_traceBlockByHash)
เมธอดที่อนุญาตตามแต่ละเชน: เชนที่รองรับ
Testnet
หากต้องการรับ test ETH สำหรับการทำธุรกรรม โปรดดู คู่มือ Robinhood Chain testnet faucet
Robinhood Chain Testnet (chain ID: 46630) ใช้ API key เดียวกันกับ mainnet ที่ endpoint https://api.blockvectra.com/v1/robinhood_testnet โดยยืนยันตัวตนผ่านส่วนหัวคำขอ x-api-key
คำขอ testnet ใช้น้ำหนัก CU เดียวกันกับ mainnet และหักจากยอดคงเหลือและเครดิตฟรีเดียวกัน เมธอด JSON-RPC ที่พร้อมใช้งานและการเก็บรักษาสถานะย้อนหลังบน Robinhood Chain Testnet ได้รับการเผยแพร่แบบไดนามิกผ่าน GET /v1/chains
สำหรับบทเรียนเริ่มต้น 3 ขั้นตอนที่สามารถรันได้ ซึ่งอ่าน testnet โดยไม่ต้องใช้คีย์, สตรีม log ผ่าน WebSocket แล้วย้ายคีย์เดียวกันไปยัง mainnet โปรดดู คู่มือเริ่มต้นสำหรับ Robinhood Chain Testnet
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":[]}'Expected response:
{"jsonrpc":"2.0","id":1,"result":"0xb626"}| พารามิเตอร์ / เอนด์พอยต์ | ค่า / เทมเพลต | การยืนยันตัวตน |
|---|---|---|
| Chain ID (EIP-155) | 46630 | — |
| JSON-RPC (คีย์ในพาธ) | POST https://api.blockvectra.com/v1/robinhood_testnet/{api_key} | API key ในพาธ URL |
| JSON-RPC (คีย์ในส่วนหัว) | POST https://api.blockvectra.com/v1/robinhood_testnet | ส่วนหัว x-api-key: {api_key} |
| WebSocket (คีย์ในพาธ) | wss://api.blockvectra.com/v1/robinhood_testnet/{api_key} | API key ในพาธ URL |
| WebSocket (คีย์ในส่วนหัว) | 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)
เมธอดที่อนุญาตตามแต่ละเชน: เชนที่รองรับ
ข้อมูลโทเค็นหุ้น (Tokenized Stock)
บน Robinhood Chain นั้น BlockVectra Data API ให้บริการเมตริกบนเชนรายวันและ metadata สำหรับโทเค็นหุ้นผ่านสอง endpoint:
- กระดานผู้นำรายวัน (
GET /v1/data/robinhood_mainnet/stocks): กระดานผู้นำกิจกรรมรายวันของโทเค็นหุ้นสำหรับวันที่ UTC ที่ระบุ โดยเรียงลำดับตามกิจกรรมการโอนจากมากไปน้อย - รับข้อมูลโทเค็นหุ้นหนึ่งรายการ (
GET /v1/data/robinhood_mainnet/stocks/{token}): metadata ของสัญญาโทเค็นและเมตริกรายวันย้อนหลังสูงสุด 30 วันตามที่อยู่โทเค็น
สำหรับพารามิเตอร์คำขอโดยละเอียด, response envelope (StockDailyListEnvelope และ StockTokenEnvelope), บันทึกการแบ่งหน้า และการประเมินการใช้ CU โปรดดู คู่มือโทเค็นหุ้น
เทมเพลตเริ่มต้นฉบับสมบูรณ์: blockvectra/robinhood-stock-tokens
การเริ่มต้นใช้งานและ API key
บัญชีใหม่รับ 30,000,000 CU เมื่อลงทะเบียน — ไม่ต้องใช้บัตรเครดิตคุณสามารถทดลองใช้ public endpoint แบบไม่ต้องใช้คีย์ https://api.blockvectra.com/v1/robinhood_mainnet/public ดูก่อนได้ (เฉพาะเมธอดกระเป๋าเงิน JSON-RPC เท่านั้น ส่วน Data API จำเป็นต้องใช้คีย์ ทั้งนี้ เมธอดและขีดจำกัดเป็นไปตาม /v1/chains) และสามารถลงทะเบียนบัญชีได้หากคุณต้องการขีดจำกัดอัตราที่สูงขึ้น
- เว็บคอนโซล: ลงทะเบียนผ่านลายเซ็นกระเป๋าเงิน Ethereum และสร้าง API key ใน คอนโซล ดูรายละเอียดการตั้งค่าได้ที่ คู่มือเริ่มต้นอย่างรวดเร็ว
- การลงทะเบียนแบบเป็นโปรแกรม: autonomous AI agent, สคริปต์อัตโนมัติ และไปป์ไลน์ CI สามารถเข้าสู่ระบบและจัดสรร API key โดยใช้ลายเซ็นกระเป๋าเงิน Ethereum (EIP-191) โดยไม่ต้องใช้เบราว์เซอร์ ทำตาม คู่มือการลงทะเบียนแบบเป็นโปรแกรม
- AI Agent: autonomous AI agent สามารถค้นหาความสามารถของ Robinhood Chain ได้โดยใช้เซิร์ฟเวอร์ Model Context Protocol (MCP) อย่างเป็นทางการ ดู การเชื่อมต่อ AI Agent เข้ากับ BlockVectra
- การอัปเกรดขีดจำกัด: หลังจากเติมเงินแล้ว ขีดจำกัดจำนวนการเรียกต่อวินาทีทั่วทั้งบัญชีจะถูกยกเลิก โดยแต่ละคีย์ยังคงอยู่ภายใต้ขีดจำกัดอัตราและขีดจำกัด burst ของ Compute Unit (CU) สำหรับอัตราและหน่วยเรียกเก็บเงินปัจจุบัน โปรดดูที่ หน้าการกำหนดราคา
ขั้นตอนถัดไป
- เรียกดูไดเรกทอรีชุดข้อมูล เพื่อดูทุกชุดข้อมูลที่ BlockVectra จัดทำดัชนี
- ดูแพ็กเกจฟรีและการกำหนดราคา เพื่อตรวจสอบสิ่งที่รวมอยู่ในบัญชีของคุณ
- เข้าสู่ระบบคอนโซล เพื่อสร้าง API key
อัปเดตล่าสุด:
คู่มือ
คู่มือเชิงปฏิบัติและเวิร์กโฟลว์สำหรับการผสานรวม BlockVectra API, การจัดการการใช้ CU และการสร้างแอปพลิเคชันแบบหลายเชน
คู่มือเริ่มต้นสำหรับ Robinhood Chain Testnet
เริ่มต้นกับ Robinhood Chain Testnet RPC: public RPC URL, การอ่านแบบไม่ต้องใช้คีย์, log บน WebSocket พร้อม API key, การเข้าถึง faucet และการสลับคีย์เดียวกันไปยัง mainnet