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

> Source: https://docs.blockvectra.com/ja/guides/robinhood-chain/

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

## このガイドでできること

* viem または ethers で公開の読み取りを行って [Robinhood Chain RPC を確認](#connect-with-viem-or-ethers)し、その後はキーを使って認証が必要なメソッドを利用します。
* テストネットで操作を行う前に `eth_chainId` を読み取り、[テストネット RPC の接続を確認](#testnet)します。
* データセットの対応状況を確認したうえで、メインネットの Data API を使って[トークン化株式の活動を照会](#tokenized-stock-data)します。指標は株価ではなく、オンチェーン活動を表します。

## RPC と WebSocket の利用

* **公開 RPC URL**：[Robinhood Chain のメインネットページ](https://blockvectra.com/en/chains/robinhood_mainnet/)または[テストネットページ](https://blockvectra.com/en/chains/robinhood_testnet/)で、キー不要のエンドポイント、対応する公開メソッド、レート制限を確認してください。
* **API key を使う JSON-RPC**：以下のエンドポイントと curl の例を使用してください。ログについては、[eth\_getLogs メソッドリファレンス](https://docs.blockvectra.com/en/api/json-rpc/methods/eth_getLogs/)と[ブロック範囲制限ガイド](https://docs.blockvectra.com/en/guides/getlogs-block-range/)を参照してください。
* **API key を使う WebSocket**：以下の WebSocket エンドポイントを使用し、`newHeads` と `logs` については [WebSocket 購読ガイド](https://docs.blockvectra.com/en/guides/websocket-subscriptions/)に従ってください。公開 RPC は HTTP JSON-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 ベース URL | `GET 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](https://api.blockvectra.com/v1/chains) から `chain_id` とメソッドポリシーを読み取ります。キーなしの読み取りでは、カタログの `public.url` と、`public.methods` に記載されているメソッドだけを使用してください。公開 HTTP が利用可能でも、WebSocket を利用できるとは限りません。

```js
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` を実行してください。

```js
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` を実行してください。

```js
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](https://docs.blockvectra.com/en/guides/robinhood-testnet-faucet/)でデプロイ用アカウントにテスト ETH を入金してください。メインネットのトランザクションには、メインネットの ETH が必要です。[公式のネットワーク・デプロイガイド](https://docs.robinhood.com/chain/deploy-smart-contracts/)に、メインネットとテストネットのチェーン ID が記載されています（参照日：2026-10-07）。このページのエンドポイント表は `/v1/chains` を使用しています。

選択した URL とチェーン ID を `network.mjs` から取得してエクスポートしてください。ブロードキャスト前に、`methods.allow` と `methods.deny` で `eth_sendRawTransaction` を確認してください。

```bash
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 によるデプロイチュートリアル](https://docs.blockvectra.com/en/guides/deploy-contract/)に進んでください。

## WebSocket でコントラクトイベントを受信する

`watch-logs.mjs` として保存し、`LOG_ADDRESS` にデプロイ済みコントラクト、または監視対象のトークンコントラクトを設定してください。`node watch-logs.mjs` を実行してください。このコードは `logs` を購読する前に、`/v1/chains` の `ws` と `subscriptions` を確認します。

```js
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()` トランザクションを送信してください。

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

最後に処理したブロックを永続化し、`(blockHash, transactionHash, logIndex)` で重複を排除してください。再接続後は、範囲を限定した `eth_getLogs` リクエストで取り逃したブロックをバックフィルし、チェーン再編で `removed` とマークされたログを照合してください。[WebSocket 購読](https://docs.blockvectra.com/en/guides/websocket-subscriptions/)と[ブロック範囲制限](https://docs.blockvectra.com/en/guides/getlogs-block-range/)を参照してください。

HTTPS 受信先に配信されるアドレスイベントについては、**GET /v1/push/chains に対応チェーン**と確認数の設定が記載されています。`x-api-key` ヘッダーを使用してください。購読、署名検証、重複排除、再送については、[Webhook プッシュガイド](https://docs.blockvectra.com/en/guides/webhook-push/)に従ってください。メインネットの株式トークンの活動を照会するには、[株式ガイド](https://docs.blockvectra.com/en/guides/stocks/)に進んでください。

## curl による直接呼び出しの例

標準の HTTP クライアントを使って、すぐに JSON-RPC を呼び出せます。`{api_key}` を BlockVectra の API key に置き換えてください。

**eth_chainId (Header)**

`x-api-key` リクエストヘッダーを使って、EIP-155 チェーン ID を照会します。

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


  **eth_blockNumber (Path)**

URL パスに API key を指定して、最新のブロック番号を照会します。

```bash
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/{api_key}" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","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）

チェーンごとに利用可能なメソッド：[対応チェーン](https://docs.blockvectra.com/en/chains/)

## テストネット

トランザクション用のテスト ETH を取得するには、[Robinhood Chain テストネット Faucet ガイド](https://docs.blockvectra.com/en/guides/robinhood-testnet-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 スターターガイド](https://docs.blockvectra.com/en/guides/robinhood-testnet-starter/)を参照してください。

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

期待されるレスポンス：

```json
{"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）

チェーンごとに利用可能なメソッド：[対応チェーン](https://docs.blockvectra.com/en/chains/)

## トークン化株式データ

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 消費量の見積もりの詳細については、[トークン化株式ガイド](https://docs.blockvectra.com/en/guides/stocks/)を参照してください。

完全なスターターテンプレート：[blockvectra/robinhood-stock-tokens](https://github.com/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 ウォレット署名で登録し、[コンソール](https://console.blockvectra.com/login/?next=%2Fkeys%2F)で API key を生成してください。設定の詳細は[クイックスタートガイド](https://docs.blockvectra.com/en/quickstart/)を参照してください。
* **プログラムによる登録**：自律型 AI エージェント、自動化スクリプト、CI パイプラインは、ブラウザーを使わずに Ethereum ウォレット署名（EIP-191）でログインし、API key を発行できます。[プログラムによる登録ガイド](https://docs.blockvectra.com/en/guides/programmatic-signup/)に従ってください。
* **AI エージェント**：自律型 AI エージェントは、公式の Model Context Protocol（MCP）サーバーを使って Robinhood Chain の機能を確認できます。[AI エージェントを BlockVectra に接続する](https://docs.blockvectra.com/en/guides/ai-agents/)を参照してください。
* **制限の引き上げ**：チャージ後は、アカウント全体の毎秒コール数制限が解除されます。各キーには引き続き Compute Unit（CU）のレート制限とバースト制限が適用されます。現在のレートと請求ユニットについては、[料金ページ](https://blockvectra.com/en/pricing/)を参照してください。

## 次のステップ

* [データセットディレクトリを見る](https://blockvectra.com/en/data/)と、BlockVectra がインデックスしているすべてのデータセットを確認できます。
* [無料プランと料金を見る](https://blockvectra.com/en/pricing/#free)と、アカウントに含まれる内容を確認できます。
* [コンソールにログイン](https://console.blockvectra.com/login/?next=%2Fkeys%2F)して、API key を作成してください。
