Skip to main content
Parsed Streams 处于封闭测试阶段。目前仅限于列入白名单的项目 ID,API 可能会在公开可用之前更改。要加入封闭测试,申请请点击这里

什么是解析流?

解析流是一个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有效负载,例如带有数量和铸币的交换元数据。
  • 未解码:程序或指令不在目录中,decodednull,并且指令携带原始字节(rawData)和纯地址列表(rawAccounts)代替,所以您始终有东西可处理。
这就是整个模型,您的过滤器直接从中构建:
  • programs:指令调用的程序
  • instructionNames:程序手册称之为的操作
  • accounts.include:触及的地址
  • accounts.roles:哪个命名位置必须包含哪个地址
  • includeCpiincludeFailed:是否计算内部指令和失败的交易
过滤器选择指令;通知传递完整的交易。

对比

对比增强型 WebSockets

增强型 WebSockets 流传输完整交易或账户更新而不解码。Parsed Streams 在指令级匹配并为您解码所有内容。

对比 LaserStream gRPC

LaserStream 是一个高吞吐量的 gRPC 数据流,您在客户端进行过滤和解码。Parsed Streams 是一个在服务器上过滤和解码的 WebSocket API。

对比解析事件

解析事件 对历史交易应用相同的解码:解析签名或按需通过 REST 和 GraphQL 浏览地址的历史记录。Parsed Streams 在交易发生时推送新交易。

支持的程序

Parsed Streams 从其链上 IDL 解码3600+ 个程序,加上 SPL Token、Token-2022 和系统程序等核心程序,通过内置解码器。您可以按任何程序地址进行过滤。服务无法解码的指令将作为原始指令数据流传。 一些使用最多的解码程序:
是否未看到某个程序?它可能仍在目录中。使用其地址调用 describeProgram,以查看其指令、事件和账户角色。

访问

仅白名单项目 ID 可以在封闭测试期间连接。Helius 团队在您的项目被列入白名单时与您共享连接端点。 通过传递为 api-key 查询参数(或 x-api-key 标头)来使用您的项目 API 密钥进行身份验证。连接打开时会检查密钥:缺失、无效或未列入白名单的密钥将被拒绝并显示 HTTP 401,而达到其连接上限的项目将获得 HTTP 429。

入门

快速开始

连接,发送您的第一个过滤器,并阅读通知。

跟踪 Jupiter 交换

构建并订阅一个使用程序发现的真实过滤器。

跟踪 Pump.fun 铸币

一个重新连接安全的监听器,记录每个新的 Pump.fun 代币部署。

处理重连

检测断开连接,暂停重试,重新订阅,并填补错过的时隙。