> ## 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>

## 什么是解析流？

解析流是一个WebSocket服务，监控每个已确认的Solana交易（不包括投票交易），对其进行解码，并将符合您定义的过滤条件的交易推送给您。您可以说“我关心Jupiter路径指令”或“我关心任何涉及该账户的事项”，服务器将为您进行监控、解码和匹配。

您将收到**完整的交易，已经解码**：每个带有命名参数和命名账户的指令，加上费用、完整账户密钥列表、交易级别的`summary`、自 SOL 和代币转账、以及与您的过滤器匹配的确切指令的指针。所有数据均以**确认**的承诺交付。

## 心智模型

如果您已经了解Solana的内部结构，请跳过。如果不了解，这是整个API构建的模型。

**交易**是一个已签名的消息。它指定了一名付款账户，列出其将接触的每个账户，并携带指令列表。查看时，您会看到：签名（其唯一标识）、其所在的槽位、支付的费用、账户密钥、成功与否以及指令。

**指令**是一个动作：运行这个程序，使用这些输入和账户。在Jupiter上的交换、代币转移、备忘录。一个交易通常携带多个指令，并按顺序执行。

**程序可以调用其他程序。** 当Jupiter执行交换时，它本身并不移动代币。它的路线指令调用代币程序来移动代币以及持有流动性的交换程序。这些嵌套调用也是指令，称为内部指令（或CPI，跨程序调用）。这在编写过滤器时很重要：许多实际活动，例如交换中的实际代币移动，发生在内部指令中，因此默认情况下您的过滤器会匹配它们。如果您只想要用户签署的指令，请将`includeCpi`设置为false。

**账户**是指令处理的链上实体：钱包、代币余额、池、铸币。每个指令都以地址的有序列表携带它们，顺序即为契约：程序定义每个位置的含义。例如，代币程序期望首先从账户中取出代币，然后是接收账户，再然后是批准转账的所有者。

**角色**为这些位置命名。大多数知名程序为其接口发布机器可读手册，称为IDL。手册列出了程序的每个指令，其数据字段的含义，以及每个账户位置的用途。Helius为数千个程序保留了这些手册的目录。使用它，一个裸地址列表就变成了命名账户：对代币转移，位置0变为`source`，位置1变为`destination`，位置2变为`authority`。您无需猜测第三个地址的含义，只需读取`{"name": "authority", "pubkey": "9xQe...", "isSigner": true}`。这些名称是您可以过滤的角色。

**解码**是应用于指令输入数据的相同概念。在传输中，该数据是模糊的字节。通过程序手册，这些字节变成命名值：`{"in_amount": "1000000", "slippage_bps": 50}`。并非每个指令都可以解码，因此每个指令有三种状态，您可以直接从其字段中看到：

* **解码**：指令携带一个`decoded`对象，其中包含命名的`args`和命名的`accounts`。
* **识别**：在`decoded`之上，指令还携带一个`summary`，其中有一个`type`（例如`swap`）、人类可读的`description`、以及结构化的`parsedData`有效负载，例如带有数量和铸币的交换元数据。
* **未解码**：程序或指令不在目录中，`decoded`是`null`，并且指令携带原始字节（`rawData`）和纯地址列表（`rawAccounts`）代替，所以您始终有东西可处理。

这就是整个模型，您的过滤器直接从中构建：

* `programs`：指令调用的程序
* `instructionNames`：程序手册称之为的操作
* `accounts.include`：触及的地址
* `accounts.roles`：哪个命名位置必须包含哪个地址
* `includeCpi` 和 `includeFailed`：是否计算内部指令和失败的交易

**过滤器选择指令；通知传递完整的交易。**

### 对比

<CardGroup cols={2}>
  <Card title="对比增强型 WebSockets" icon="bolt">
    [增强型 WebSockets](/docs/zh/rpc/websocket) 流传输完整交易或账户更新而不解码。Parsed Streams 在指令级匹配并为您解码所有内容。
  </Card>

  <Card title="对比 LaserStream gRPC" icon="server">
    [LaserStream](/docs/zh/laserstream) 是一个高吞吐量的 gRPC 数据流，您在客户端进行过滤和解码。Parsed Streams 是一个在服务器上过滤和解码的 WebSocket API。
  </Card>

  <Card title="对比解析事件" icon="clock-rotate-left">
    [解析事件](/docs/zh/parsed-events) 对历史交易应用相同的解码：解析签名或按需通过 REST 和 GraphQL 浏览地址的历史记录。Parsed Streams 在交易发生时推送新交易。
  </Card>
</CardGroup>

## 支持的程序

Parsed Streams 从其链上 IDL 解码**3600+ 个程序**，加上 SPL Token、Token-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="发射台" icon="rocket">
    | 程序       | 地址                                            |
    | -------- | --------------------------------------------- |
    | Pump.fun | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` |
    | PumpSwap | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` |
  </Accordion>

  <Accordion title="借贷及 Perps" icon="building-columns">
    | 程序             | 地址                                            |
    | -------------- | --------------------------------------------- |
    | marginfi v2    | `MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA` |
    | Kamino Lending | `KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD` |
  </Accordion>

  <Accordion title="NFTs 及压缩" icon="image">
    | 程序                        | 地址                                             |
    | ------------------------- | ---------------------------------------------- |
    | Metaplex Bubblegum (cNFT) | `BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY` |
  </Accordion>
</AccordionGroup>

<Tip>
  是否未看到某个程序？它可能仍在目录中。使用其地址调用 [`describeProgram`](/docs/zh/parsed-streams/quickstart#discovery)，以查看其指令、事件和账户角色。
</Tip>

## 访问

仅白名单项目 ID 可以在封闭测试期间连接。Helius 团队在您的项目被列入白名单时与您共享连接端点。

通过传递为 `api-key` 查询参数（或 `x-api-key` 标头）来使用您的项目 API 密钥进行身份验证。连接打开时会检查密钥：缺失、无效或未列入白名单的密钥将被拒绝并显示 HTTP 401，而达到其连接上限的项目将获得 HTTP 429。

## 入门

<CardGroup cols={2}>
  <Card title="快速开始" icon="bolt" href="/docs/zh/parsed-streams/quickstart">
    连接，发送您的第一个过滤器，并阅读通知。
  </Card>

  <Card title="跟踪 Jupiter 交换" icon="arrow-right-arrow-left" href="/docs/zh/parsed-streams/guides/track-jupiter-swaps">
    构建并订阅一个使用程序发现的真实过滤器。
  </Card>

  <Card title="跟踪 Pump.fun 铸币" icon="rocket" href="/docs/zh/parsed-streams/guides/track-pumpfun-mints">
    一个重新连接安全的监听器，记录每个新的 Pump.fun 代币部署。
  </Card>

  <Card title="处理重连" icon="rotate" href="/docs/zh/parsed-streams/guides/handling-reconnects">
    检测断开连接，暂停重试，重新订阅，并填补错过的时隙。
  </Card>
</CardGroup>
