什么是 Parsed Streams?
Parsed Streams 是一项 WebSocket 服务,它会监视每笔已确认的 Solana 交易(不包括投票交易)、对其进行解码,并向你推送符合自定义过滤器的交易。你可以指定“我关注 Jupiter 路由指令”或“我关注涉及此账户的任何交易”,服务器将为你完成监视、解码和匹配。 你收到的是已解码的完整交易:其中包含带有具名参数和具名账户的每条指令、费用、完整账户密钥列表、交易级别的summary(描述发生了什么)、SOL 和代币转账,以及指向与你的过滤器匹配的具体指令的引用。所有数据均以 confirmed 确认级别交付。
心智模型
如果你已经了解 Solana 的内部机制,可以跳过本节。否则,请先了解整个 API 所基于的模型。 交易是一条已签名的消息。它指定费用支付者,列出将涉及的所有账户,并包含一组指令。查看一笔交易时,你会看到:签名(其唯一 ID)、交易所在的时隙、已支付的费用、账户密钥、交易成功还是失败,以及其中的指令。 指令表示一个操作:使用这些账户和此输入运行这个程序。例如 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:是否包含内部指令和失败的交易
对比其他服务
vs Enhanced WebSockets
Enhanced WebSockets 会流式传输完整交易或账户更新,但不进行解码。Parsed Streams 在指令级别执行匹配,并为你解码所有内容。
vs LaserStream gRPC
LaserStream 是高吞吐量的 gRPC 数据流,需要你在客户端进行过滤和解码。Parsed Streams 是在服务器端执行过滤和解码的 WebSocket API。
vs Parsed Events
Parsed Events 对历史交易应用相同的解码方式:通过 REST 按需解析签名,或分页浏览某个地址的历史记录。Parsed Streams 会在新交易上链时将其推送给你。
支持的程序
Parsed Streams 可通过链上 IDL 解码 3,600 多个程序,还可通过内置解码器解码 SPL Token、Token-2022 和 System Program 等核心程序。你可以按任意程序地址进行过滤。对于服务无法解码的指令,将改为流式传输其原始指令数据。 以下是部分最常用的可解码程序:DEXs & AMMs
DEXs & AMMs
Launchpads
Launchpads
Lending & Perps
Lending & Perps
NFTs & Compression
NFTs & Compression
访问权限和定价
Parsed Streams 已面向所有套餐正式开放,包括免费套餐。它取代了 Enhanced Transaction Webhooks,用于提供实时解析后的交易数据。你可以从 Helius Dashboard 获取 API 密钥。 每个交付的事件消耗 1 个积分,费率与 webhook 事件相同。完整价格列表请参阅积分。 Parsed Streams 通过 Gatekeeper 端点提供服务,该端点与 Helius RPC 和 WebSocket 流量使用同一主机。Parsed Streams 没有单独的主机:api-key 查询参数(或 x-api-key 请求头)传递。连接建立时会验证密钥:缺少密钥或密钥无效时,将返回 HTTP 401;如果项目达到连接数上限,则返回 HTTP 429。
开始使用
Quickstart
连接、发送第一个过滤器并读取通知。
Track Jupiter Swaps
使用程序发现功能构建并订阅真实的过滤器。
Track Pump.fun Mints
一个可安全重连的监听器,用于记录每次新的 Pump.fun 代币部署。
Handling Reconnects
检测断开连接、执行退避、重新订阅,并回填遗漏的时隙。