> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 解析済みストリーム

> プログラム、アカウント、インストラクション名によるサーバー側フィルタリングでWebSocketを介してデコードされたSolanaトランザクションを購読します。

<Note>
  Parsed Streamsは**クローズドベータ**です。現在、アクセスはホワイトリストに登録されたプロジェクトIDに限定されており、APIは一般公開前に変更される可能性があります。クローズドベータに参加するには、[こちらで応募](https://form.typeform.com/to/BlFWKbC9)してください。
</Note>

## 解析済みストリームとは？

解析済みストリームは、すべての確認済みSolanaトランザクション（投票トランザクションを除く）を監視し、それをデコードし、定義したフィルターに一致するトランザクションをプッシュするWebSocketサービスです。「ジュピターのルートインストラクションに関心がある」や「このアカウントに関係するすべてのものに関心がある」と伝えると、サーバーが監視、デコード、マッチングを行います。

**全てのトランザクションが既にデコードされた状態で受け取れます**: 各命令には名前付きの引数とアカウント、さらに手数料、完全なアカウントキーリスト、実際に何が起こったかのトランザクションレベルでの`summary`、SOLとトークンの転送、およびフィルタに一致した正確な命令のポインタが含まれます。全データは**確認された**コミットメントで配信されます。

## メンタルモデル

Solanaの内部構造を既に知っている場合は先に進んでください。そうでない場合、これはAPI全体が構築されているモデルです。

**トランザクション**は署名されたメッセージです。それは手数料支払い者を指定し、触れるすべてのアカウントを列挙し、インストラクションのリストを保持します。見ると、署名（ユニークID）、スロット、支払った手数料、アカウントキー、成功または失敗、インストラクションが表示されます。

**インストラクション**は1つのアクションです。このプログラムをこの入力でこのアカウントを使って実行します。ジュピターでのスワップ、トークン転送、メモなど。トランザクションには通常、いくつかのインストラクションが含まれ、それらは順番に実行されます。

**プログラムは他のプログラムを呼び出すことができます。** ジュピターがスワップを実行する際、それ自身がトークンを動かすのではありません。そのルートインストラクションがトークンプログラムを呼び出してトークンを移動させ、流動性を持つ交換プログラムを呼び出します。これらのネストされた呼び出しもインストラクションであり、内部インストラクション（またはCPI、クロスプログラム呼び出し）と呼ばれます。フィルタを書く際にはこれが重要で、実際のトークン移動などの実際の活動の多くは内部インストラクションで行われるため、デフォルトでそれらにフィルタが一致します。ユーザーが署名したインストラクションのみを取得したい場合は、`includeCpi`をfalseに設定します。

**アカウント**は、インストラクションが扱うオンチェーンのものです：ウォレット、トークン残高、プール、ミントなど。各インストラクションはアドレスの順序付きリストとしてそれらを運び、その順序が契約です。プログラムが各位置の意味を定義します。例として、トークンプログラムは最初にトークンを受けるアカウント、その次にトークンを受け取るアカウント、その次に転送を承認する所有者を期待します。

**役割**はこれらの位置に名前を付けます。多くの有名なプログラムは、そのインターフェースの機械可読のマニュアル、IDLと呼ばれるものを公開しています。このマニュアルにはプログラムが持つすべてのインストラクション、そのデータフィールドの意味、および各アカウント位置の目的が記載されています。Heliusはこれらのマニュアルのカタログを何千ものプログラムのために維持しています。これを使用すると、単なるアドレスリストが名前付きアカウントに変わります。たとえば、トークン転送の場合、位置0が`source`になり、位置1が`destination`になり、位置2が`authority`になります。第三のアドレスが何を意味するのかを推測する代わりに、`{"name": "authority", "pubkey": "9xQe...", "isSigner": true}`を読みます。これらの名前はフィルタできる役割です。

**デコード**は命令の入力データに適用される同じアイデアです。データはワイヤ上で不透明なバイトです。プログラムのマニュアルを用いると、バイトは名前付きの値になります: `{"in_amount": "1000000", "slippage_bps": 50}`。すべての命令がデコード可能なわけではなく、各命令はそのフィールドから直接確認できる3つの状態のいずれかに分類されます:

* **Decoded**: 命令は名前付き`args`と名前付き`accounts`を伴った`decoded`オブジェクトを持ちます。
* **Recognized**: `decoded`の上に、命令は`summary`を持ち、`type`（例えば`swap`）、人間が読める`description`、および構造化された`parsedData`ペイロード（例えば金額とミントを含むスワップメタデータ）を持ちます。
* **Undecoded**: プログラムまたは命令がカタログにない場合、`decoded`は`null`であり、命令は代わりに生のバイト（`rawData`）とプレーンアドレスリスト（`rawAccounts`）を含むため、常に何らかの形で作業を進めることができます。

これが全体のモデルであり、フィルタはそれに基づいて直接構築されます:

* `programs`: 命令が呼び出すプログラム
* `instructionNames`: プログラムのマニュアルがそのアクションをどう呼ぶか
* `accounts.include`: どのアドレスに影響を与えるか
* `accounts.roles`: どの名前付きの位置がどのアドレスを保持しなければならないか
* `includeCpi`および`includeFailed`: 内部命令と失敗したトランザクションがカウントされるかどうか

**フィルタは命令を選択し、通知はトランザクション全体を配信します。**

### 比較方法

<CardGroup cols={2}>
  <Card title="vs Enhanced WebSockets" icon="bolt">
    [Enhanced WebSockets](/docs/ja/rpc/websocket)はデコードせずにトランザクション全体またはアカウントの更新をストリームします。Parsed Streamsは命令レベルで一致し、全てをデコードします。
  </Card>

  <Card title="vs LaserStream gRPC" icon="server">
    [LaserStream](/docs/ja/laserstream)は、クライアント側でフィルタリングとデコードを行う高スループットgRPCファイアホースです。Parsed Streamsはサーバー上でフィルタリングとデコードを行うWebSocket APIです。
  </Card>

  <Card title="vs Parsed Events" icon="clock-rotate-left">
    [Parsed Events](/docs/ja/parsed-events)は歴史的トランザクションに同じデコードを適用します: RESTとGraphQL上でアドレスの履歴を要求に応じてページングします。Parsed Streamsは新しいトランザクションをそのままプッシュします。
  </Card>
</CardGroup>

## サポートされているプログラム

Parsed Streamsは、オンチェーンIDLからの**3,600以上のプログラム**、およびSPLトークン、トークン2022、システムプログラムといったコアプログラムをビルトインデコーダーでデコードします。*任意の*プログラムアドレスでフィルタリングが可能です。サービスがデコードできない命令は生の命令データとしてストリームされます。

最も使用されているデコード済みプログラムのいくつか:

<AccordionGroup>
  <Accordion title="DEXs & AMMs" icon="arrow-right-arrow-left">
    | プログラム                 | アドレス                                           |
    | --------------------- | ---------------------------------------------- |
    | Jupiter Aggregator v6 | `JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4`  |
    | Raydium CLMM          | `CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK` |
    | Raydium CPMM          | `CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C` |
    | Orca Whirlpool        | `whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc`  |
    | Meteora DLMM          | `LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo`  |
    | Meteora Pools         | `Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB` |
    | Lifinity v2           | `2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c` |
  </Accordion>

  <Accordion title="Launchpads" icon="rocket">
    | プログラム    | アドレス                                          |
    | -------- | --------------------------------------------- |
    | Pump.fun | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` |
    | PumpSwap | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` |
  </Accordion>

  <Accordion title="Lending & Perps" icon="building-columns">
    | プログラム          | アドレス                                          |
    | -------------- | --------------------------------------------- |
    | marginfi v2    | `MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA` |
    | Kamino Lending | `KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD` |
  </Accordion>

  <Accordion title="NFTs & Compression" icon="image">
    | プログラム                     | アドレス                                           |
    | ------------------------- | ---------------------------------------------- |
    | Metaplex Bubblegum (cNFT) | `BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY` |
  </Accordion>
</AccordionGroup>

<Tip>
  プログラムが見つかりませんか？ まだカタログに登録されている可能性があります。アドレスを使用してその命令、イベント、アカウントの役割を確認するには[`describeProgram`](/docs/ja/parsed-streams/quickstart#discovery)を呼び出してください。
</Tip>

## アクセス

ホワイトリストに登録されたプロジェクトIDのみがクローズドベータ期間中に接続可能です。Heliusチームはプロジェクトがホワイトリストに登録されると接続エンドポイントを共有します。

プロジェクトのAPIキーで認証し、`api-key`クエリパラメータ（または`x-api-key`ヘッダー）として渡します。このキーは接続が開いたときにチェックされ、不足、不正、またはホワイトリストに登録されていないキーはHTTP 401で拒否され、接続キャップに達したプロジェクトにはHTTP 429が返されます。

## はじめに

<CardGroup cols={2}>
  <Card title="クイックスタート" icon="bolt" href="/docs/ja/parsed-streams/quickstart">
    接続し、初めてのフィルタを送信し、通知を読む。
  </Card>

  <Card title="Jupiter Swapsを追跡" icon="arrow-right-arrow-left" href="/docs/ja/parsed-streams/guides/track-jupiter-swaps">
    プログラム検出を利用して実際のフィルタを構築およびサブスクライブします。
  </Card>

  <Card title="Pump.fun Mintsを追跡" icon="rocket" href="/docs/ja/parsed-streams/guides/track-pumpfun-mints">
    新しいPump.funトークンのデプロイをすべて記録する再接続安全なリスナー。
  </Card>

  <Card title="再接続の処理" icon="rotate" href="/docs/ja/parsed-streams/guides/handling-reconnects">
    切断を検出し、バックオフし、再購読し、見逃したスロットを埋める。
  </Card>
</CardGroup>
