Robinhood Chain 連携ガイド:RPC クライアント、デプロイ、イベント

viem または ethers で Robinhood Chain に接続し、Foundry または Hardhat でデプロイして、WebSocket のログや Webhook イベントを受信し、株式トークンの活動を照会します。

Robinhood Chain RPC を使って公開接続の確認や認証付きの読み取りを行い、対応するメインネットのデータセットには Data API を使用してください。開発者と AI エージェントは同じエンドポイントを使用します。メインネットとテストネットのリクエストは分けてください。

このガイドでできること

RPC と WebSocket の利用

ネットワーク情報とエンドポイント

Robinhood Chain へのすべてのリクエストは、URL パス内のスラッグ robinhood_mainnet を使って対象ネットワークを明示します。JSON-RPC はパスによるキー認証とリクエストヘッダー認証(x-api-key)の両方に対応し、Data API は /v1/data/robinhood_mainnet/ 配下に REST エンドポイントを提供します。

以下のパラメーターとエンドポイントは、現在有効なネットワークパラメーターを反映しています。

パラメータ / エンドポイント値 / テンプレート認証方式
チェーン ID(EIP-155)4663—
JSON-RPC(パスに API key を指定)POST https://api.blockvectra.com/v1/robinhood_mainnet/{api_key}URL パスに API key を指定
JSON-RPC(ヘッダーに API key を指定)POST https://api.blockvectra.com/v1/robinhood_mainnetヘッダー x-api-key: {api_key}
WebSocket(パスに API key を指定)wss://api.blockvectra.com/v1/robinhood_mainnet/{api_key}URL パスに API key を指定
WebSocket(ヘッダーに API key を指定)wss://api.blockvectra.com/v1/robinhood_mainnetヘッダー x-api-key: {api_key} または Authorization: Bearer {api_key}
WebSocket 購読newHeads, logs—
Data API ベース URLGET https://api.blockvectra.com/v1/data/robinhood_mainnet/…ヘッダー x-api-key: {api_key}
公開ステータスGET https://api.blockvectra.com/v1/status認証不要(公開)

viem または ethers で接続する

開発者と AI エージェントは同じサーバー側の設定を使用できます。Node.js 24 以降、viem 2 または ethers 6 を使用し、公開の読み取りから始めてください。キーが必要なメソッドと WebSocket には、環境変数に BLOCKVECTRA_API_KEY を安全に設定してください。キーやキーを含む RPC URL を、ブラウザーのコード、ログ、バージョン管理に含めないでください。

次のコードを network.mjs として保存してください。テストネットから始め、メインネットに移行するには BLOCKVECTRA_CHAIN=robinhood_mainnet を設定してください。このコードは GET /v1/chains から chain_id とメソッドポリシーを読み取ります。キーなしの読み取りでは、カタログの 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 でデプロイする

まず、テストネットの Faucetでデプロイ用アカウントにテスト ETH を入金してください。メインネットのトランザクションには、メインネットの ETH が必要です。公式のネットワーク・デプロイガイドに、メインネットとテストネットのチェーン ID が記載されています(参照日:2026-10-07)。このページのエンドポイント表は /v1/chains を使用しています。

選択した URL とチェーン ID を network.mjs から取得してエクスポートしてください。ブロードキャスト前に、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)")"

Hello.sol、ツールの設定、ブロードキャスト、レシートの確認については、共通の Foundry または Hardhat によるデプロイチュートリアルに進んでください。

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、16 進数でエンコードされた数量を含む result 文字列を持つエンベロープを返します(eth_chainId は 16 進数でエンコードされたチェーン ID を返し、eth_blockNumber は最新のブロック高を返します)。
  • 許可されていないメソッド:ネットワークで許可されているメソッド以外をリクエストすると、JSON-RPC エラーコード -32601(method not available、課金対象外)が返されます。
  • 保持期間外の照会:状態の保持期間より前の過去の状態をリクエストすると、JSON-RPC エラーコード -32011(課金対象外)が返されます。
  • 無効なパラメーター:形式が不正、または許可されていないリクエストパラメーターには、JSON-RPC エラーコード -32602(課金対象外)が返されます。

機能とメソッドポリシー

Robinhood Chain で利用可能な JSON-RPC メソッド、ログのブロック範囲制限、過去の状態の保持期間は、GET /v1/chains で動的に公開されています。実行トレース(debug_traceTransaction を含む debug_trace*)は、チェーンのメソッドポリシーに従います。

ネットワークパラメータと制限

  • eth_getLogs のブロック範囲: リクエストあたり最大 1000 ブロック
  • 過去の状態を照会できる範囲: 直近 900 ブロック(範囲外の照会は -32011 を返します)
  • 実行トレース(debug_trace*): 対応(debug_traceTransaction、debug_traceCall、debug_traceBlockByNumber、debug_traceBlockByHash)

チェーンごとに利用可能なメソッド:対応チェーン

テストネット

トランザクション用のテスト ETH を取得するには、Robinhood Chain テストネット Faucet ガイドを参照してください。

Robinhood Chain Testnet(チェーン ID:46630)は、エンドポイント https://api.blockvectra.com/v1/robinhood_testnet でメインネットと同じ API key を使用し、x-api-key リクエストヘッダーで認証します。

テストネットのリクエストにはメインネットと同じ CU 重み付けが適用され、同じ残高と無料クレジットから差し引かれます。Robinhood Chain Testnet で利用可能な JSON-RPC メソッドと過去の状態の保持期間は、GET /v1/chains で動的に公開されています。

キーなしでテストネットを読み取り、WebSocket でログをストリーミングしてから、同じキーでメインネットに移行する、実行可能な 3 ステップの導入例については、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":[]}'

期待されるレスポンス:

{"jsonrpc":"2.0","id":1,"result":"0xb626"}
パラメータ / エンドポイント値 / テンプレート認証方式
チェーン ID(EIP-155)46630—
JSON-RPC(パスに API key を指定)POST https://api.blockvectra.com/v1/robinhood_testnet/{api_key}URL パスに API key を指定
JSON-RPC(ヘッダーに API key を指定)POST https://api.blockvectra.com/v1/robinhood_testnetヘッダー x-api-key: {api_key}
WebSocket(パスに API key を指定)wss://api.blockvectra.com/v1/robinhood_testnet/{api_key}URL パスに API key を指定
WebSocket(ヘッダーに API key を指定)wss://api.blockvectra.com/v1/robinhood_testnetヘッダー x-api-key: {api_key} または Authorization: Bearer {api_key}
WebSocket 購読newHeads, logs—
Data API ベース URLまだ利用できません—
公開ステータス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 が 2 つのエンドポイントを通じて、トークン化株式のオンチェーンの日次指標とメタデータを提供します。

  • 日次ランキング(GET /v1/data/robinhood_mainnet/stocks):指定した UTC 日付のトークン化株式の日次活動ランキングを、転送活動の多い順に返します。
  • 1 つのトークン化株式を取得(GET /v1/data/robinhood_mainnet/stocks/{token}):トークンアドレスを指定して、トークンコントラクトのメタデータと、直近最大 30 日分の日次指標を取得します。

リクエストパラメーター、レスポンスエンベロープ(StockDailyListEnvelope と StockTokenEnvelope)、ページネーションの注意点、CU 消費量の見積もりの詳細については、トークン化株式ガイドを参照してください。

完全なスターターテンプレート:blockvectra/robinhood-stock-tokens

利用開始と API key

新規アカウントは登録時に 30,000,000 CU を受け取れます。クレジットカードは不要です。

まず、キー不要の公開エンドポイント https://api.blockvectra.com/v1/robinhood_mainnet/public を試せます(ウォレット向け JSON-RPC メソッドのみ。Data API にはキーが必要です。メソッドと制限は /v1/chains に従います)。より高いレート制限が必要な場合は、アカウントを登録してください。

  • Web コンソール:Ethereum ウォレット署名で登録し、コンソールで API key を生成してください。設定の詳細はクイックスタートガイドを参照してください。
  • プログラムによる登録:自律型 AI エージェント、自動化スクリプト、CI パイプラインは、ブラウザーを使わずに Ethereum ウォレット署名(EIP-191)でログインし、API key を発行できます。プログラムによる登録ガイドに従ってください。
  • AI エージェント:自律型 AI エージェントは、公式の Model Context Protocol(MCP)サーバーを使って Robinhood Chain の機能を確認できます。AI エージェントを BlockVectra に接続するを参照してください。
  • 制限の引き上げ:チャージ後は、アカウント全体の毎秒コール数制限が解除されます。各キーには引き続き Compute Unit(CU)のレート制限とバースト制限が適用されます。現在のレートと請求ユニットについては、料金ページを参照してください。

次のステップ

最終更新:

このページの目次