# Data API を使用したトークン化株式の日次オンチェーン指標

> Source: https://docs.blockvectra.com/ja/guides/stocks/

> データは公開されたオンチェーン記録から取得されたものであり、情報提供のみを目的としています。投資助言を構成するものではありません。


Robinhood Chain でのコントラクトデプロイおよびイベントリッスンについては、[RPC および WebSocket ガイド](https://docs.blockvectra.com/en/guides/robinhood-chain/) を参照してください。

<span id="stock-activity-task" />

## 3 ステップタスク：Robinhood Chain での株式アクティビティの照会

記録されている直近の UTC 日における最もアクティブなトークン化株式を検索し、その送金回数と保有者数を読み取ります。

1 つの API key を使用して、アクティビティダッシュボード用にメインネットの株式トークンのアクティビティと保有者を照会します。これらはオンチェーンのアクティビティ指標であり、株価ではありません。

### 1. API key なしで最新ブロックを読み取る

```bash
curl -sS "https://api.blockvectra.com/v1/robinhood_mainnet/public" \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
```

JSON-RPC の `result` は十六進数の最新ブロック番号です。この公開 RPC 呼び出しにはキーは不要です。ステップ 3 の Data API クエリにはキーが必要です。

### 2. 同一チェーン用のキーを作成する

[コンソールにログインして API Keys を開きます](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-stocks-task)。キーを作成し、ダイアログに表示されたシークレットを保存します。同一のキーが `robinhood_mainnet` の JSON-RPC と Data API の両方で機能します。

ブラウザを使用しない HTTP 経由の AI エージェントの場合は、[プログラムによる登録ガイド](https://docs.blockvectra.com/en/guides/programmatic-signup/?ref=docs-stocks-task) に従って Ethereum ウォレット署名で登録してキーを作成してください。ユーザーにチャットへキーを貼り付けるよう求めないでください。

### 3. キーを使用して株式アクティビティを照会する

以下の `replace-with-your-key` を保存したキーに置き換え、サーバーまたはローカルターミナルでコマンドを実行します。`day` を省略すると記録されている最新日が選択されます。`limit=5` は送金アクティビティの降順で最大 5 件の株式を返します。

```bash
export BLOCKVECTRA_API_KEY='replace-with-your-key'

curl -sS "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks?limit=5" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

レスポンス内の以下のフィールドを確認してください：

| フィールド                 | 意味                                               |
| --------------------- | ------------------------------------------------ |
| `data[].day`          | 日次指標の UTC 日付。                                    |
| `data[].token`        | クエリによって返された株式トークンのコントラクトアドレス。                    |
| `data[].symbol`       | トークンシンボル。                                        |
| `data[].transfers`    | その日のオンチェーン送金回数。                                  |
| `data[].holder_count` | 保有者アドレスの総数。                                      |
| `meta.as_of_block`    | 日次指標スナップショットのブロック高ではなく、現在インデックスされている先頭ブロック。      |
| `meta.refreshed_at`   | スナップショットの更新時刻。これが `null` の場合、データは古いものとして扱ってください。 |

空の `data` 配列は、利用可能なアクティビティレコードがないことを意味します。結果から特定の株式を詳細に確認するには、以下で説明するように `GET /robinhood_mainnet/stocks/{token}` でその `token` の値を使用します。

## トークン化株式データセットとは

BlockVectra Data API は、トークン化株式の日次オンチェーン指標とメタデータを提供します。このデータセットは、日次の送金、ミント、バーン、純供給量変動、保有者分布、および分散型取引所（DEX）の取引指標を集約し、開発者がトークン化株式の公開アクティビティを追跡できるようにします。

このデータセットを提供するチェーンについては、[対応チェーン一覧](https://docs.blockvectra.com/en/chains/) ページを参照してください。

* **ベース URL**：`https://api.blockvectra.com/v1/data` — `GET /chains` を除き、すべての Data API ルートにはチェーン識別子のプレフィックスが付きます（例：`https://api.blockvectra.com/v1/data/{chain}/…`）
* **サンプルチェーン**：`robinhood_mainnet`（パスペラメータの例として使用。このデータセットを提供するすべてのチェーンについては[対応チェーン一覧](https://docs.blockvectra.com/en/chains/)を確認してください）
* **認証**：`x-api-key: $BLOCKVECTRA_API_KEY` リクエストヘッダーに API key を指定します
* **課金と対応範囲**：Compute Unit（CU）で計測されます。2xx の成功レスポンスのみが課金対象となります。チェーンが株式の対応範囲外である場合、エンドポイントは HTTP `422 no_coverage` を返します（課金対象外）

## 日次リーダーボード（`GET /{chain}/stocks`）

`GET /{chain}/stocks` エンドポイントは、指定された UTC 日付におけるトークン化株式の日次アクティビティリーダーボードを、表示メタデータ（シンボル、名称など）とともに返し、送金アクティビティの降順（最もアクティブなトークンが先頭）でソートされます。

### リクエストパラメータ

* `{chain}`（パスペラメータ、必須）：チェーン識別子（例：`robinhood_mainnet`）。
* `day`（クエリパラメータ、オプション）：`YYYY-MM-DD` 形式の UTC カレンダー日付。省略時は、記録されている最新日がデフォルトになります（アクティビティが記録されていない場合は、`data: []` を含む `200` を返します）。指定された日付が有効な `YYYY-MM-DD` カレンダー日付でない場合、HTTP `400`（`error.code = "bad_request"`）を返します。
* `limit`（クエリパラメータ、オプション）：返されるレコード数の上限。デフォルトは 50。500 を超える値は 500 にクランプされます。`0` または非整数を渡すと HTTP `400`（`error.code = "bad_request"`）が返されます。

### ページネーションの動作

このエンドポイントは**ページネーションされません**。`limit` パラメータは返される最大レコード数を制限します。外側の `StockDailyListEnvelope`（`data` および `meta`）において、株式エンドポイントは `next_cursor` を返しません（キー自体が完全に存在せず、`null` になることもありません）。

### コード例

Robinhood Chain 上の完全なスターターテンプレート：[blockvectra/robinhood-stock-tokens](https://github.com/blockvectra/robinhood-stock-tokens)

**cURL**

```bash
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks?day=2026-09-29&limit=10" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
```


  **TypeScript**

```ts
const res = await fetch(
  "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks?day=2026-09-29&limit=10",
  {
    headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
  },
);
const body = await res.json();
console.log(body);
```


  **Python**

```python
import os
import requests

res = requests.get(
    "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks?day=2026-09-29&limit=10",
    headers={"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]},
)
print(res.json())
```


### レスポンス構造

レスポンスエンベロープは `StockDailyListEnvelope` であり、`data` と `meta` を含みます：

* `data`（配列）：送金アクティビティの降順（最もアクティブなトークンが先頭）でソートされた日次リーダーボードレコード（`StockDaily`）のリスト。各項目には、トークン識別子（`token`、`symbol`、`name`）、送金アクティビティ（`transfers`、`unique_senders`、`unique_receivers`）、供給量指標（`mint_raw_amount`、`burn_raw_amount`、`net_supply_change`）、分布指標（`holder_count`、`top10_holder_share_bps`）、DEX 取引指標（`dex_swap_count`、`dex_raw_volume`）、および更新タイムスタンプ（`refreshed_at`）が含まれます。
* `meta`（オブジェクト）：チェーンメタデータ（`chain`、`chain_slug`、`chain_external_id`、`as_of_block`、`safe_block`、`finalized_block`、`coverage`、`refreshed_at`）。`meta.refreshed_at` は `null` になる場合があります：`null` はこのデータの更新時刻が不明であり古いものとして扱う必要があることを意味します。ブロックベースのエンドポイントは常に値を返します。

## 1 つのトークン化株式の取得（`GET /{chain}/stocks/{token}`）

`GET /{chain}/stocks/{token}` エンドポイントは、トークンアドレスによって特定のトークン化株式のメタデータと最大 30 日間の最近の日次指標を取得します。

### リクエストパラメータ

* `{chain}`（パスペラメータ、必須）：チェーン識別子（例：`robinhood_mainnet`）。
* `{token}`（パスペラメータ、必須）：20 バイトのトークンコントラクトアドレス。`0x` プレフィックスはオプションであり、大文字小文字のどちらでも受け付けられます（返されるアドレスは `0x` に続く 40 文字の小文字の十六進数に正規化されます）。無効なアドレス形式は HTTP `400`（`error.code = "bad_request"`）を返します。
* `{token}` が既知のトークン化株式でない場合、HTTP `404`（`error.code = "not_found"`）を返します。`{chain}` が不明なチェーンである場合、HTTP `404`（`error.code = "unknown_chain"`）を返します。

### コード例

**cURL**

```bash
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks/0x1111111111111111111111111111111111111111" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
```


  **TypeScript**

```ts
const token = "0x1111111111111111111111111111111111111111";
const res = await fetch(
  `https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks/${token}`,
  {
    headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
  },
);
const body = await res.json();
console.log(body);
```


  **Python**

```python
import os
import requests

token = "0x1111111111111111111111111111111111111111"
res = requests.get(
    f"https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks/{token}",
    headers={"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]},
)
print(res.json())
```


### レスポンス構造

レスポンスエンベロープは `StockTokenEnvelope` であり、`data` と `meta` を含みます：

* `data`（オブジェクト）：トークンコントラクトのメタデータ（`address`、`symbol`、`name`、`decimals`、`created_block`、`created_tx_hash`、`factory`、`creator`、`mint_address`、`burn_address`、`refreshed_at`）および最近の日次指標配列 `daily` を含む `StockToken` オブジェクト。
  * `daily`（配列）：最大 30 日間の最近の日次指標（`StockDailyMetric`）の配列であり、日付の降順（新しい順）でソートされます。各日次項目は、上記のリーダーボードと同一の指標スキーマを共有します（冗長な `token`、`symbol`、および `name` フィールドは除きます）。
* `meta`（オブジェクト）：リーダーボードレスポンスと一致するチェーンメタデータオブジェクト。

## 主要な返却フィールドの説明

### 日次指標フィールド（StockDaily および StockDailyMetric）

リーダーボードと単一トークンの過去の日次項目の両方に、以下のコアフィールドが含まれます：

| フィールド                    | 型                    | 説明                                                                         |
| ------------------------ | -------------------- | -------------------------------------------------------------------------- |
| `day`                    | `string` (date)      | `YYYY-MM-DD` 形式の UTC 集計日。                                                  |
| `token`                  | `string` (address)   | トークンコントラクトアドレス（リーダーボードの `StockDaily` にのみ存在）。`0x` プレフィックス付きの 40 文字の小文字十六進数。 |
| `symbol`                 | `string`             | トークンシンボル（例：`"EXMPL"`）。                                                     |
| `name`                   | `string`             | トークンの表示名。一致する名前メタデータが利用できない場合は空文字列 `""`。                                   |
| `transfers`              | `integer` (int64)    | この UTC 日におけるオンチェーン送金の総回数。                                                  |
| `unique_senders`         | `integer` (int64)    | この日に送金を開始した一意の送信元アドレス数。                                                    |
| `unique_receivers`       | `integer` (int64)    | この日に送金を受け取った一意の受取先アドレス数。                                                   |
| `mint_raw_amount`        | `string` (decimal)   | この日にミントされた生のトークン総量。                                                        |
| `burn_raw_amount`        | `string` (decimal)   | この日にバーンされた生のトークン総量。                                                        |
| `net_supply_change`      | `string` (decimal)   | この日における純供給量変動（符号付き十進文字列、負の値になる場合があります）。                                    |
| `holder_count`           | `integer` (int64)    | 保有者アドレスの総数。                                                                |
| `top10_holder_share_bps` | `integer`            | ベーシスポイント単位（0〜10000、1 bps = 0.01%）での上位 10 保有者のシェア。                          |
| `dex_swap_count`         | `integer` (int64)    | この日にこのトークンに関連した DEX スワップの回数。                                               |
| `dex_raw_volume`         | `string` (decimal)   | この日における DEX の生取引総量。                                                        |
| `refreshed_at`           | `string` (timestamp) | この日次レコードが最後に更新された日時の ISO-8601 UTC タイムスタンプ。                                 |

### トークンメタデータフィールド（StockToken）

単一のトークンを照会する場合、外側の `data` オブジェクトにはコントラクトメタデータと最近の日次指標が含まれます：

| フィールド             | 型                             | 説明                                                              |
| ----------------- | ----------------------------- | --------------------------------------------------------------- |
| `address`         | `string` (address)            | トークンコントラクトアドレス。                                                 |
| `symbol`          | `string`                      | トークンシンボル。                                                       |
| `name`            | `string`                      | 完全なトークン名。                                                       |
| `decimals`        | `integer` または `null`          | トークンの小数桁数（0〜255）、利用できない場合は `null`。                              |
| `created_block`   | `integer` (int64)             | トークンコントラクトが作成されたブロック番号。                                         |
| `created_tx_hash` | `string` (hash)               | コントラクト作成トランザクションのハッシュ。`0x` プレフィックス付きの 64 文字の小文字十六進数。            |
| `factory`         | `string` (address)            | ファクトリコントラクトアドレス。                                                |
| `creator`         | `string` (address) または `null` | 作成者アドレス、利用できない場合は `null`。                                       |
| `mint_address`    | `string` (address) または `null` | ミントアドレス、利用できない場合は `null`。                                       |
| `burn_address`    | `string` (address) または `null` | バーンアドレス、利用できない場合は `null`。                                       |
| `daily`           | `array`                       | 最大 30 日間の最近の日次指標（`StockDailyMetric`）の配列であり、日付の降順（新しい順）でソートされます。 |
| `refreshed_at`    | `string` (timestamp)          | トークンメタデータが最後に更新された日時の ISO-8601 UTC タイムスタンプ。                     |

### エンコーディング規則

API は、数値の精度と一貫性を保つために、すべてのエンドポイントで厳格なエンコーディングルールに従っています：

* **金額の安全性**：`2^53` を超える可能性のある値（`mint_raw_amount`、`burn_raw_amount`、`net_supply_change`、および `dex_raw_volume` などの 256 ビット整数）は、JSON の数値や指数表記、十六進表記ではなく、必ず**十進文字列**としてシリアライズされます。これにより、JavaScript などのランタイムにおける精度低下を防ぎます。JavaScript/TypeScript では `BigInt(str)` で解析し（例：`const net = BigInt(body.data.daily[0].net_supply_change)`）、Python では `int(str)` で解析します。`2^53` を大幅に下回るカウンタ（`transfers`、`unique_senders`、`unique_receivers`、`holder_count`、`top10_holder_share_bps`、`dex_swap_count`、`created_block`）は通常の JSON 数値です。
* **バイナリおよび十六進値**：アドレスは `0x` に続く 40 文字の小文字十六進数であり、ハッシュは `0x` に続く 64 文字の小文字十六進数です。返されるすべての十六進数値は厳格に小文字です。
* **タイムスタンプと日付**：`refreshed_at` などのタイムスタンプは `YYYY-MM-DDTHH:MM:SSZ`（秒精度の ISO-8601 UTC）を使用します。日次集計（`day`）は通常の日付形式（`YYYY-MM-DD`）を使用します。

## 利用量の見積もり（毎日 50 トークンを更新する場合）

Data API のクエリは、プラットフォームのメソッド重み付けに基づいて Compute Unit（CU）を消費します。以下の見積もりは、50 のトークンがそれぞれ毎日 1 回 `GET /{chain}/stocks/{token}` を呼び出すシナリオを想定し、有効なメソッド重み付けに照らして算出したものです：

- **呼び出しあたりのメソッド重み付け：** `data.stock` の各呼び出しは 15 CU を消費します（100 万回あたり定価 $1.50）。
- **50 トークンの日次更新**（トークンあたり `GET /{chain}/stocks/{token}` を 1 回、50 コール/日）：1 日の消費量は 750 CU です。30 日のサイクル全体で合計 1,500 回呼び出され、22,500 CU を消費します。無料枠（30,000,000 CU）の約 <0.1% です。 無料枠を超過した場合、または有料プランの場合、定価換算での総利用額は月額約 <$0.01 です。

## はじめ方とアップグレード

無料枠は開発、テスト、および小規模なワークロードに最適です。トラフィックが拡大し、より高い並行性やより多くのコンピュートユニットが必要になった場合は、コンソールの[請求（Billing）ページ](https://console.blockvectra.com/billing/)でオンチェーンチャージを行ってください。オンチェーンで確認され反映されると、アカウント全体に適用されていた毎秒の呼び出し上限が解除されます。[JSON-RPC ドキュメント](https://docs.blockvectra.com/en/api/json-rpc/#method-policy)に記載されているように、各キーには引き続き 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を作成します。
